tensorflow 1.1.0を試してみた

tensorflow 1.1.0を試してみた

tensorflowに触れる機会があったので、ソースからのビルドを試してみた

参考にしたページ: http://blog.amedama.jp/entry/2017/03/08/223308
このページの手法ほぼそのままです

環境

  • MacBookPro 13inch 2015モデル
  • tensorflow 1.1.0
  • python 3.6.1(brewで導入)

1.1.0リリースノートで気になったこと

  • TensorFlow 1.1.0 will be the last time we release a binary with Mac GPU support. Going forward, we will stop testing on Mac GPU systems. We continue to welcome patches that maintain Mac GPU support, and we will try to keep the Mac GPU build working.

MacGPUサポートしたバイナリ出すのこれが最期だって。

ビルド時にやったこと(参考ページとの差分)

https://github.com/tensorflow/tensorflow/releases
から1.1.0のtar.gzをダウンロード

configure

  • 1.1.0ではconfig=optで追加するオプションをconfigureで聞いてきます
    デフォルトのmarch=nativeでいいはず
    XLA just-in-time compiler も有効化してみる

XLAはexperimental扱いです ビルドは30分ほどで完了

計測

march=native+XLA版

$ time python3 mnist_cnn.py
real 23m23.336s
user 63m39.019s
sys 13m32.681s

pipで入るバイナリ

$ time python3 mnist_cnn.py
real 34m48.798s
user 110m22.508s
sys 11m11.853s

結論

一回しか測ってないので正確ではありませんが、処理時間が2/3ほどになりました
CPUでいろいろ試す場合は自分でビルドする価値はあるかもです

おまけ:デスクトップで試してみた

$ time python3 mnist_cnn.py
real 2m21.907s
user 1m57.300s
sys 0m13.444s

1万円ちょいで買える安GPUでも10倍速かったです

Free Code Camp - Back End Development Certification

筆者の思い込みや勘違いが含まれる可能性があります。指摘大歓迎
また、ここに書かれている事項は記述時点のものです
FreeCodeCampはOSSであるため、問題点が修正されたり項目がなくなったり増えたりすることは良くあります
最期は自分の目で確かめてください

  1. 基本的なツール(git,Cloud9,github)の説明
  2. Node.jsとmongoDBの基本解説
  3. [課題]WebAPIを作ってみよう
  4. [課題]Webアプリケーションを作ってみよう

という構成です。 1,2はCloud9の開発環境上で完結するのですが、3,4はgithubソースコードを公開してherokuにデプロイせよ という指示になっています。
そしてherokuへのデプロイガイドを閲覧しようとすると「準備中だからCould9で課題こなしてね」と表示されます。
Herokuのデプロイは慣れてないと手間取るかもしれません。
Heroku,Cloud9ともに無料で使える範囲がどんどん変化していってしまうところもあり、教材の更新が追いついていないです。
調べながらやりましょう。困ったらChatかForumで検索・質問すればよいです。

Node.jsアプリケーションのHeroku対応

ぐぐれば出てきますが、FreeCodeCampには記述ながなかったのでメモ

packages.jsonにenginesを指定

  "name": "hoge",
  "version": "1.0.0",
  "main": "server.js",
  "dependencies": {
    "express": "4.X.X"
  },
  "engines": {
    "node": "4.X.X",
    "npm": "2.X.X"
  }
}

Listenポートを環境変数で受け取る

app.listen(process.env.PORT || 8080);

[MongoDB] 接続先URLを環境変数で受け取る

const mongo_uri = process.env.MONGODB_URI || 'mongodb://localhost/mypath';

mLab MongoDBを利用しています。
Herokuのパネルからadd-onとして追加が可能ですが、add-onを利用するにはクレカの登録が必要になります。
アクセス情報の直埋め込みはやめましょう。
環境変数の名前がわからない or add-onは使えないので直接セットする必要があるのならheroku CLIで接続を

その他ハマったところ

Image Search Abstraction Layer?画像検索ってどうやるの?

ぐぐると同じく困った受講者の声が多数hitします。
基本的には外部サービスの検索APIを利用するのですが、無料で十分な機能を持ち、簡単に組み込める画像検索APIがありません。
候補はGooleAPI(制限きつめ。アクセス面倒)でしょうか。
こちらも認証情報は環境変数セットで直接埋め込まないように作成する必要があります。
この課題は慣れていないと手間がかかるのでスキップしてあとまわしにしてもよいかと。

Free Code Camp - Data Visualization

筆者の思い込みや勘違いが含まれる可能性があります。指摘大歓迎
また、ここに書かれている事項は記述時点のものです
FreeCodeCampはOSSであるため、問題点が修正されたり項目がなくなったり増えたりすることは良くあります
最期は自分の目で確かめてください

未着手
Sass,React,D3を使ってサイトを作成する、という趣旨の項目が並んでいますが、最終課題以外の部分は「Comming Soon …」となっており、自分で勉強して作ってね ということになっています
もともとはAngularJSを指定した課題であり、最近の情勢からReactに変更したが課題の準備が間に合っていない、という事情(?)があるようです

BackEndの方を先に終わらせて、その後に取り組む予定
何かあれば更新します

Free Code Camp - Front End Development Certification

筆者の思い込みや勘違いが含まれる可能性があります。指摘大歓迎
また、ここに書かれている事項は記述時点のものです
FreeCodeCampはOSSであるため、問題点が修正されたり項目がなくなったり増えたりすることは良くあります
最期は自分の目で確かめてください

Getting Started

チュートリアルです

Front End Development Certification

などフロントエンドを一通りやります。
FreeCodeCampのサイト上の開発環境で指示を満たすようなコードを作成し、提出
テストケースが通るとok という方式です

ハマリどころですが、Javascriptアルゴリズム講座の問題の品質にばらつきがあります
後半はJSだと手間なものが混ざるので、詰まったらさっさとスキップするほうが良いです

最終課題は要件を満たすサイトの作成

Free Code Camp

Free Code Camp(https://www.freecodecamp.com/)というオンラインの学習サイトで勉強中
Webプログラミングが題材でフルスタックな技術がひと通り学べる、という謳い文句

2017/04現在、学習に使うのはサイト上の開発環境、Cloud9,Heroku,githubなど
Chromeなら新規にプロフィールを作成し、githubのアカウントを取得してgithub連携で各種アカウントを作成すると便利
パスワードはブラウザに覚えさせる

コースは大きく分けて

  1. FrontEnd(HTML+Javascript)
  2. DataVisualizer(現在はReact)
  3. BackEnd(現在はNodejs Express)
  4. その他ビデオ学習
  5. NPOサイトをボランティアで作成

に分かれており、1-3に関しては必須項目と任意項目がある
1-3それぞれについて、必須項目をクリアして申請することでCertificateが取得可能
1-3のCertificateをすべて取得することで5に挑戦できる・・・らしい

OSSとしてコミュニティベースで運営されているため多少粗いところはあり、純粋な初心者が一人で挑むと本質ではないところで詰まる可能性があるが、全体的には良い感じ
引っかかった所のメモを残すので参考になれば、ということで