Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

MacでTensorFlow on Dockerを 使って見る

1,469 views

Published on

AITCオープンラボ第3回機械学習勉強会資料
(AITC TensorFlow勉強会資料より)
2016年6月27日

Published in: Engineering
  • Be the first to comment

MacでTensorFlow on Dockerを 使って見る

  1. 1. MacでTensorFlow on Dockerを 使って見る AITCオープンラボ第3回機械学習勉強会資料 (AITC TensorFlow勉強会資料より) 2016年6月27日 吉田
  2. 2.  設立主旨 TensorFlowを中心に、ディープラーニング分野をメンバーが自発的 に学びつ つ、理解が難しい点や困ったことをお互いに持ち寄って相 談し、協力しながら解決する「場」を、定期的に設けること  目標 メンバー各自が、ディープラーニング分野の技術リーダーとなり、 社内外において後続するエンジニアたちにこの先端技術をさらに広 めていくこと、そのために必要なノウハウを共有していくこと  活動 グループごとにその日の目標(MNIST線形回帰の完全理解等)を決 めて、助け合いながら作業。そこで得た「課題と解決」ノウハウを、 最後にグループ発表して共有する TensorFlow勉強会について 6月24日発足
  3. 3.  Dockerとかいうものを使ってみたかった  インストールや一時保存/再起動が簡単だろう  自分のMacは他の用途にも色々使っているので、 TensorFlow用の設定(があれば)を独立にしてお きたい なぜDockerか?
  4. 4.  Dockerが、Mac OSX上で直接動作するようになった のはこの3月(private β)からで、まだ頼れる情報 が少ない。  安定して使われているDockerはVirtualBoxで動作。  4つのものを新しく知る必要がある:  VirtualBox  Docker  pythonとJupyter  TensorFlow でも意外に面倒だった 今月Public βになりました
  5. 5. Mac上のDockerの構成
  6. 6.  自分がどの環境で操作しているのか意識が必要  Mac OSX  VirtulaBox上のLinux VM  Dockerコンテナ  それぞれでファイルシステムが違うし、PATHも違 う 戸惑うこと
  7. 7.  以下の説明にしたがってインストール: 「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のインストール
  8. 8.  Docker Quickstart Terminal で起動したターミナルか らだとdockerコマンドが使えるが、自分で起動し たターミナルからはdockerコマンドが使えない  docker ps –aで見るとhello-worldが残っている  nginxが動いているのにブラウザから localhost:8080 ではアクセスできない ここでちょっとハマったこと
  9. 9.  dockerコマンドを使うにはdocker deamonと接続す る環境設定が必要 eval $(docker-machine env)  不要なコンテナの削除は docker rm xxx xxxはdocker ps –aでわかるIDかname  IPアドレスは docker-machine ip ポート番号は docker port xxx でわかる 解決策
  10. 10.  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の設定変更
  11. 11.  Dockerだからインストール不要!ただ起動すれば OK docker run –it gcr.io/tensorflow/tensorflow でいけるはず…  と思ったけど、ここから5つの問題点に遭遇 1. docker runコマンドが戻ってこない 2. コンテナ名が変な名前で煩わしい 3. pythonを起動しても TensorFlow がimportできない 4. ブラウザからアクセスできない 5. Mac OS上のファイルが使えない TensorFlowの起動
  12. 12.  tensorflowサイトの説明では、起動後に$ではなく て#のプロンプトが出て、pythonを起動して試す ことができるはずなのに、いつまでたっても#が でてこない。  ターミナルが一つ占有されたままになるので、 Cntl-Z bgとしなければならない  おそらく以前はシェルが動くコンテナだったのだ ろうが、今はJupyterが動いているのだった  -it がターミナルを占有するオプションなので使え ない!  バックグラウンド動作にするには -d docker runコマンドが戻らない
  13. 13.  docker ps でコンテナ名はわかるけど、変な2単語 の組み合わせなので面倒  コンテナ名は明示的に指定しよう docker run --name tensorflow (--はハイフン2つ) コンテナ名が煩わしい
  14. 14.  ターミナルでpythonを起動して動作確認しようとす ると tensorflowが無くてimportできないと言われる…  環境が違う! Mac OSX上にはtensorflowは無い  tensorflowコンテナ環境に入らないといけない: docker exec -it tensorflow bash (コンテナ名がtensorflowである場合)  終わったらexit()とexitでMac OSXに戻る  でも、せっかくだからJupyterを使おう! tensorflowをimportできない
  15. 15.  docker-machine ipでIPアドレスはわかるけど…  ポートフォワードをしていないからだ!  nginxと同様に-Pでもいいけど、それだと適当な ポート番号にされてしまう。  -pを使うと、ポート番号を指定できる: -p 8888:8888 –p 6006:6006 8888はJupyter notebook、6006はTensorBoardのポート Jupyterにアクセスできない
  16. 16.  うっかりVM廃棄したらファイルが無くなってしま う  Jupyterじゃなくて使い慣れたエディタを使いたい 等  ポイント: 1. dockerコンテナはdocker VMのファイルシステムを マウントできる 2. docker VMは、Mac OSの/Usersを共有している 3. Jupyterのホームディレクトリは/notebooks  以上から、例えば/Users/home/pysrcを共有するに は コンテナとMac OSとのファイル共 有
  17. 17.  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にアクセス ということで
  18. 18.  tensorflowコンテナのJupyterの  1_hello_tensorflow  2_getting_started  3_mnist_from_scratch  tensorflow.orgのTUTORIALS  MNIST For ML Beginners  「Jupyter事始め」 Qiita Blog お勧めのチュートリアル

×