macでtensorflow on dockerを 使って見る

18
Mac で TensorFlow on Docker で ででででで AITC ででででででで でででででででででで AITC TensorFlow ででででででででで でで で で でで 2016627

Upload: hiroyuki-yoshida

Post on 14-Apr-2017

940 views

Category:

Engineering


3 download

TRANSCRIPT

Page 1: MacでTensorFlow on Dockerを 使って見る

Mac で TensorFlow on Docker を使って見るAITC オープンラボ第3回機械学習勉強会資料( AITC TensorFlow 勉強会資料より)2016年6月27日 吉田

Page 2: MacでTensorFlow on Dockerを 使って見る

設立主旨TensorFlow を中心に、ディープラーニング分野をメンバーが自発的に学びつ つ、理解が難しい点や困ったことをお互いに持ち寄って相談し、協力しながら解決する「場」を、定期的に設けること

目標メンバー各自が、ディープラーニング分野の技術リーダーとなり、社内外において後続するエンジニアたちにこの先端技術をさらに広めていくこと、そのために必要なノウハウを共有していくこと 活動グループごとにその日の目標( MNIST 線形回帰の完全理解等)を決めて、助け合いながら作業。そこで得た「課題と解決」ノウハウを、最後にグループ発表して共有する

TensorFlow 勉強会について6月24日発足

Page 3: MacでTensorFlow on Dockerを 使って見る

Docker とかいうものを使ってみたかった インストールや一時保存 / 再起動が簡単だろう 自分の Mac は他の用途にも色々使っているので、

TensorFlow 用の設定(があれば)を独立にしておきたい

なぜ Docker か?

Page 4: MacでTensorFlow on Dockerを 使って見る

Docker が、 Mac OSX 上で直接動作するようになったのはこの3月( private β )からで、まだ頼れる情報が少ない。 安定して使われている Docker は VirtualBox で動作。 4つのものを新しく知る必要がある:

VirtualBox Docker python と Jupyter TensorFlow

でも意外に面倒だった

今月 Public β になりました

Page 5: MacでTensorFlow on Dockerを 使って見る

Mac 上の Docker の構成

Page 6: MacでTensorFlow on Dockerを 使って見る

自分がどの環境で操作しているのか意識が必要 Mac OSX VirtulaBox 上の Linux VM Docker コンテナ

それぞれでファイルシステムが違うし、 PATH も違う

戸惑うこと

Page 7: MacでTensorFlow on Dockerを 使って見る

以下の説明にしたがってインストール:「 Mac OSX で Docker 入門 (Docker Toolbox 版 ) 」http://blog.tokoyax.com/entry/docker/tutorial-osx

説明の通り hello-world コンテナを動かすdocker run hello-world

次に nginx を動かしてみるdocker run -d -P --name web nginx

動いているか確かめるdocker ps -a

Docker のインストール

Page 8: MacでTensorFlow on Dockerを 使って見る

Docker Quickstart Terminal で起動したターミナルからだと docker コマンドが使えるが、自分で起動したターミナルからは docker コマンドが使えない docker ps –a で見ると hello-world が残っている nginx が動いているのにブラウザから  localhost:8080ではアクセスできない

ここでちょっとハマったこと

Page 9: MacでTensorFlow on Dockerを 使って見る

docker コマンドを使うには docker deamon と接続する環境設定が必要  eval $(docker-machine env) 不要なコンテナの削除は  docker rm xxx

xxx は docker ps –a でわかる ID か name IP アドレスは  docker-machine ipポート番号は docker port xxxでわかる

解決策

Page 10: MacでTensorFlow on Dockerを 使って見る

default という VM が作られるが、割り当てているCPU の数やメモリサイズを変更した

コア2個しかないのに4個になっていたので2個に変更「プロセッサー( CPU )のコア数を変更する方法」http://pc-karuma.net/virtualbox-processors-settings/

メモリは 1G だったので 4G に変更「仮想マシンのメモリ容量を変更(増やす)」http://pc-karuma.net/virtualbox-change-memory-size/

default VM の設定変更

Page 11: MacでTensorFlow on Dockerを 使って見る

Docker だからインストール不要!ただ起動すればOK  docker run –it gcr.io/tensorflow/tensorflowでいけるはず…

と思ったけど、ここから5つの問題点に遭遇1. docker run コマンドが戻ってこない2. コンテナ名が変な名前で煩わしい3. python を起動しても TensorFlow が import できない4. ブラウザからアクセスできない5. Mac OS 上のファイルが使えない

TensorFlow の起動

Page 12: MacでTensorFlow on Dockerを 使って見る

tensorflow サイトの説明では、起動後に$ではなくて#のプロンプトが出て、 python を起動して試すことができるはずなのに、いつまでたっても#がでてこない。 ターミナルが一つ占有されたままになるので、 Cntl-Z bgとしなければならない おそらく以前はシェルが動くコンテナだったのだろうが、今は Jupyter が動いているのだった -it がターミナルを占有するオプションなので使えない! バックグラウンド動作にするには -d

docker run コマンドが戻らない

Page 13: MacでTensorFlow on Dockerを 使って見る

docker ps でコンテナ名はわかるけど、変な2単語の組み合わせなので面倒 コンテナ名は明示的に指定しよう

docker run --name tensorflow(-- はハイフン2つ)

コンテナ名が煩わしい

Page 14: MacでTensorFlow on Dockerを 使って見る

ターミナルで python を起動して動作確認しようとするとtensorflow が無くて import できないと言われる…

環境が違う!  Mac OSX 上には tensorflow は無い tensorflow コンテナ環境に入らないといけない:

docker exec -it tensorflow bash(コンテナ名が tensorflow である場合) 終わったら exit() と exit で Mac OSX に戻る でも、せっかくだから Jupyter を使おう!

tensorflow を import できない

Page 15: MacでTensorFlow on Dockerを 使って見る

docker-machine ip で IP アドレスはわかるけど… ポートフォワードをしていないからだ! nginx と同様に -P でもいいけど、それだと適当なポート番号にされてしまう。 -p を使うと、ポート番号を指定できる:  -p 8888:8888 –p 6006:6006

8888 は Jupyter notebook 、 6006 は TensorBoard のポート

Jupyter にアクセスできない

Page 16: MacでTensorFlow on Dockerを 使って見る

うっかり VM廃棄したらファイルが無くなってしまう Jupyterじゃなくて使い慣れたエディタを使いたい等 ポイント:

1. docker コンテナは docker VM のファイルシステムをマウントできる2. docker VM は、 Mac OS の /Users を共有している3. Jupyter のホームディレクトリは /notebooks

以上から、例えば /Users/home/pysrc を共有するにはdocker run –v /Users/home/pysrc:/notebooks/pysrc …

コンテナと Mac OS とのファイル共有

Page 17: MacでTensorFlow on Dockerを 使って見る

docker run –it … で起動してしまった人は ターミナルを開く eval $(docker-machine env) docker ps –a で ./run_Jupyter.sh が動いているコンテナの名前 xxxx を調べる docker stop xxxx で止める docker rm xxxx で削除

共有フォルダーを /Users の下に作っておく (例: /Users/home/pysrc) 以下で再起動する:

docker run -d -p 8888:8888 -p 6006:6006 –v /Users/home/pysrc:/notebooks/pysrc --name tensorflow gcr.io/tensorflow/tensorflow

IP アドレスを docker-machine ip で確認 (192.168.99.100 がデフォルト ) ブラウザで 192.168.99.100 : 8888 で Jupyter Notebook にアクセス

ということで

Page 18: MacでTensorFlow on Dockerを 使って見る

tensorflow コンテナの Jupyter の 1_hello_tensorflow 2_getting_started 3_mnist_from_scratch

tensorflow.org の TUTORIALS MNIST For ML Beginners

「 Jupyter事始め」  Qiita Blog

お勧めのチュートリアル