はじめに
静岡Developers勉強会では、今年の勉強会のテーマとして「人工知能ハンズオン」を2016/4/23に開催します。 以前、TensorFlowを自PC(Windows 10 64bit)にインストールした記事を書きました。 yaju3d.hatenablog.jp
ですが初心者の人には敷居が高いかと思い、もっと簡単な方法がないか模索していました。
ネットで「Tensorflow Windows インストール」で検索すると、Dockerなら簡単だよというのが見つかるのですが、Dockerってクラウドで使うものだと思い込んでいたために見逃していました。
Dockerを調べるとクラウドでなくても使えることが理解できたので、今回Dockerを使ってのTensorflowのインストールに挑戦してみました。
※Dockerを使用するにはPCが64bitである必要があります。
環境
- Windows 7 Professional 64bit
- DockerToolbox 1.10.3
- VirtualBox 5.0.16
DockerToolboxのインストール
DockerのオフィシャルサイトのDocker ToolboxからDocker Toolboxのインストーラを入手します。このインストーラにはVirtualBoxやGit for Windowsが同梱されてます。
自分はチェックボックスなど気にせずデフォルト状態のままインストールしました。
Docker用の仮想マシンを構築
Docker Quickstart Terminalを起動します。初回のみVirtualBox上にDocker用の仮想マシン(default)を生成します。 その後、Dockerエンジンが動作しているDockerホストの仮想マシンに接続されます。 VirtualBoxを開くとdefaultインスタンスが出来ていることが確認できます。
自PCのWindows 10 Home 64bitではDocker Quickstart Terminalでエラーになりました。その顛末は下記ブログに書いています。 qiita.com
Dockerの動作確認
$ docker-machine ls NAME ACTIVE DRIVER STATE URL SWARM ERRORS default * virtualbox Running tcp://192.168.99.101:2376
URLにあるIPアドレスは後で入力するので覚えて置いてください。
ちなみにIPアドレスだけを知りたい場合は下記となります。
$ docker-machine ip 192.168.99.100
DockerにTensorFlowのインストール
TensorflowのサイトのDocker installationにインストールする方法が記載されています。
$ docker run -it b.gcr.io/tensorflow/tensorflow ︙ [I 08:48:55.427 NotebookApp] The Jupyter Notebook is running at: http://[all ip addresses on your system]:8888/ [I 08:48:55.427 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
記載のコマンドを入力するとtensorflowがインストールされていきます。説明の通りだとWebブラウザでdefaultマシンのIPアドレスにポート番号8888を付ければ、Notebook(Jupyter)が動作するとなっています。
自分はこの通りに入力したのですが、Webブラウザで「http:192.168.99.100:8888/」を入力しても、「このサイトにアクセスできません」のエラーでどうすることも出来なかったため、Control-Cを押すしかありませんでした。
Jupyter Notebookの起動
ネットで調べるとポートを指定するようなことが書かれていました。
How do I start tensorflow docker jupyter notebook
$ docker run -p 8888:8888 -p 6006:6006 b.gcr.io/tensorflow/tensorflow ︙ [I 08:48:55.427 NotebookApp] The Jupyter Notebook is running at: http://[all ip addresses on your system]:8888/ [I 08:48:55.427 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
これでWebブラウザで「http:192.168.99.100:8888/」と入力するとJupyter Notebookが起動されました。
※IPアドレスは、Dockerの動作確認した際のURLとなります。
TensorFlowのサンプル確認
DockerのTensorFlowには、下記のサンプルが最初から用意されています。
- 1_hellow_tensorflow.ipynb
- 2_getting_started.ipynb
- 3_minst_from_scratch.ipynb
※DockerのTensorflowはPython2用となります。
TensorBoradの確認
このサイトの「TensorBoardによる可視化」にあるソースを入力します。
※その上にあるdef x2_plus_b(x, b)関数も入力が必要です。
実行するとlogフォルダが作成されます。 次に右横の「New」で「Terminal」を作成します。
Terminalにて、下記コマンドを入力します。
# tensorboard --logdir=log
これでWebブラウザで「http:192.168.99.100:6006/」と入力すると「TernsorBorad」が表示されます。
TensorBoradの停止
Runningタブにて該当Terminalの「Shutdown」ボタンをクリックすれば停止します。
ホストとファイル共有
Dockerはプロセス内にコンテナを生成するので、コンテナ内にファイルを保存してもPC再起動等でプロセスが消えるとコンテナも破棄されます。下記方法でホスト側のフォルダをマウントしておくことでコンテナが破棄されてもファイルが消えることがなくなります。
ホスト側(C:\Users(ユーザー名))の配下に「tensor_share」フォルダ(例)を作成したとします。
$ docker run -d -p 8888:8888 -p 6006:6006 -v /c/Users/(ユーザー名)/tensor_share:/notebooks b.gcr.io/tensorflow/tensorflow
PWDコマンドを使うとカレントディレクトリを取得できます。
$ echo $PWD /c/Users/(ユーザー名) $ docker run -d -p 8888:8888 -p 6006:6006 -v $PWD/tensor_share:/notebooks b.gcr.io/tensorflow/tensorflow