tensorflow 1.1.0を試してみた
tensorflow 1.1.0を試してみた
tensorflowに触れる機会があったので、ソースからのビルドを試してみた
参考にしたページ: http://blog.amedama.jp/entry/2017/03/08/223308
このページの手法ほぼそのままです
環境
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.
ビルド時にやったこと(参考ページとの差分)
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でいろいろ試す場合は自分でビルドする価値はあるかもです
おまけ:デスクトップで試してみた
- Ubuntu 16.04
- Intel® Core™ i7-3770 CPU @ 3.40GHz
- NVIDIA Geforce GTX 1050
- CUDA 8.0
- cudnn 5.1
- python 3.5.2
- pipでtensorflow-1.1.0のgpu版を導入
$ 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であるため、問題点が修正されたり項目がなくなったり増えたりすることは良くあります
最期は自分の目で確かめてください
- 基本的なツール(git,Cloud9,github)の説明
- Node.jsとmongoDBの基本解説
- [課題]WebAPIを作ってみよう
- [課題]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
- HTML5とCSSの基礎
- Boostrapでレスポンシブデザインの基礎
- jQueryでDOM操作を簡単に
- Javascriptの基礎
- Javascriptでアルゴリズム勉強
- 外部APIからJSONでデータ取得
などフロントエンドを一通りやります。
FreeCodeCampのサイト上の開発環境で指示を満たすようなコードを作成し、提出
テストケースが通るとok という方式です
ハマリどころですが、Javascriptのアルゴリズム講座の問題の品質にばらつきがあります
後半はJSだと手間なものが混ざるので、詰まったらさっさとスキップするほうが良いです
最終課題は要件を満たすサイトの作成
Free Code Camp
Free Code Camp(https://www.freecodecamp.com/)というオンラインの学習サイトで勉強中
Webプログラミングが題材でフルスタックな技術がひと通り学べる、という謳い文句
2017/04現在、学習に使うのはサイト上の開発環境、Cloud9,Heroku,githubなど
Chromeなら新規にプロフィールを作成し、githubのアカウントを取得してgithub連携で各種アカウントを作成すると便利
パスワードはブラウザに覚えさせる
コースは大きく分けて
- FrontEnd(HTML+Javascript)
- DataVisualizer(現在はReact)
- BackEnd(現在はNodejs Express)
- その他ビデオ学習
- NPOサイトをボランティアで作成
に分かれており、1-3に関しては必須項目と任意項目がある
1-3それぞれについて、必須項目をクリアして申請することでCertificateが取得可能
1-3のCertificateをすべて取得することで5に挑戦できる・・・らしい
OSSとしてコミュニティベースで運営されているため多少粗いところはあり、純粋な初心者が一人で挑むと本質ではないところで詰まる可能性があるが、全体的には良い感じ
引っかかった所のメモを残すので参考になれば、ということで