デジタル・デザイン・ラボラトリーな日々

アラフィフプログラマーが数学と物理と英語を基礎からやり直す。https://qiita.com/yaju

WindowsユーザーがTensorFlowをインストールしてみた(AWS EC2 Docker版)

はじめに

静岡Developers勉強会では「人工知能ハンズオン」を2016/4/23に開催します。自PC(Windows 10 Home 64bit)にDockerを使ってGoogleが提供しているオープンソース人工知能ライブラリ「TensorFlow」を入れて動かすことが出来たのですが、Dockerって64bit版のみで32bit版がありません。
勉強会なので32bit PCしか持っていない人をどうしようかと思ったら、あるじゃないですか? そう、クラウドならね。

環境

1年間の無料枠で構築

  • Amazon Linux AMI 2016.03 (HVM), SSD Volume Type 64ビット
  • t2.micro

AWS EC2の登録

AWS EC2の登録は長くなるので別記事にしました。DockerとTensorFlowの導入まで記事がかぶってますが・・・ qiita.com

Dockerのインストール

下記サイトを参考にDockerをインストールしました。
EC2にDockerをインストールしてNginxコンテナを作る

Dockerをインストール

sudo yum install -y docker

Dockerを起動

$ sudo service docker start
Starting cgconfig service:                                 [  OK  ]
Starting docker:

ec2-userをdockerグループに追加

$ sudo usermod -a -G docker ec2-user
$ cat /etc/group |grep docker
docker:x:497:ec2-user

グループに追加されていることを確認したら、一度ログアウト(exit)して再度ログインしてください。

dockerグループに所属していれば、sudoなしで ec2-userから Dockerコマンドが使えます。

docker info
  ︙
Kernel Version: 4.4.5-15.26.amzn1.x86_64
Operating System: Amazon Linux AMI 2016.03

DockerにTensorFlowのインストール

TensorflowのサイトのDocker installationにインストールする方法が記載されています。ポートは指定しました。

$ 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).

記載のコマンドを入力するとtensorflowがインストールされていきます。
WebブラウザでdefaultマシンのIPアドレスにポート番号8888を付ければ、Notebook(Jupyter)が動作するとなっています。

Jupyter Notebookの起動

Webブラウザで「http:(パブリックIP):8888/」と入力するとJupyter Notebookが起動されました。
AWS EC2のパブリックIPを指定して下さい。

TensorFlowのサンプル確認

DockerのTensorFlowには、下記のサンプルが最初から用意されています。

  • 1_hellow_tensorflow.ipynb
  • 2_getting_started.ipynb
  • 3_minst_from_scratch.ipynb

※DockerのTensorflowはPython2用となります。

f:id:Yaju3D:20160407003301p:plain

TensorBoradの確認

yaju3d.hatenablog.jp

このサイトの「TensorBoardによる可視化」にあるソースを入力します。
※その上にあるdef x2_plus_b(x, b)関数も入力が必要です。

f:id:Yaju3D:20160407003353p:plain

実行するとlogフォルダが作成されます。 次に右横の「New」で「Terminal」を作成します。

f:id:Yaju3D:20160407003452p:plain

Terminalにて、下記コマンドを入力します。

# tensorboard --logdir=log                                                                                                                                    

f:id:Yaju3D:20160407003516p:plain

これでWebブラウザで「http:(パブリックIP):6006/」と入力すると「TernsorBorad」が表示されます。 f:id:Yaju3D:20160407004805p:plain

※最初にグラフが「No scalar summary tags were found.」のエラーで表示されなかったのですが、Dockerをリスタートしたら表示されるようになりました。

$ docker ps
CONTAINER ID        IMAGE                            COMMAND             CREATED             STATUS              PORTS                                            NAMES
cea774063516        b.gcr.io/tensorflow/tensorflow   "/run_jupyter.sh"   31 hours ago        Up 31 hours         0.0.0.0:6006->6006/tcp, 0.0.0.0:8888->8888/tcp   thirsty_kare
$ docker stop thirsty_kare
$ docker start thirsty_kare

TensorBoradの停止

Runningタブにて該当Terminalの「Shutdown」ボタンをクリックすれば停止します。 f:id:Yaju3D:20160407003537p:plain

スポンサーリンク