【TensorFlow】Docker for Windowsで動かす機械学習!

TensorFlowを利用するプログラムの開発は進んでいますか?

今回は、以下のようなことで困っているあなたにDockerをオススメする記事を作成しました。

TensorFlowを試してみたいけど、インストールが大変そう
TensorFlowはバージョンアップ頻度が高くて、ついていくのが大変すぎる
TensorFlow 1.5で開発を始めたプログラムが、最新のTensorFlowでも動作するか気になる

Dockerを使えば、TensorFlowを簡単に試せるし、最新バージョン以外のTensorFlowもインストールできるし、開発環境を汚さずに別バージョンのTensorFlowを試せます!

それでは、期待しながら読み進めてください!

Dockerコンテナを利用してTensorFlowを試そう

この記事では、以下の環境での操作を説明しています。

項目説明
OSWindows 10 Pro(64ビット)
DockerDocker Community Edition for Windows
DockerイメージCPU版TensorFlowをインストールしたDockerイメージ

先に「期待しながら」と書きましたが、ここで残念なお知らせを書いておきます。

  • WindowsでDockerを利用する場合は、GPU版TensorFlowは使用できません。
  • NVIDIAが提供しているnvidia-dockerは使用できません。

WindowsでGPU版TensorFlowを使用したい場合は、Dockerを使わずにWindowsに直接インストールしましょう。

インストール方法については、以下の記事で詳しく説明していますので、ぜひご覧ください。

【2019年度版】TensorFlow 1.5のインストール方法を解説!【Windows 10】
更新日 : 2019年7月17日

nvidia-dockerとは

nvidia-dockerは、DockerでGPU版TensorFlowを動作させるためのLinuxアプリケーションです。

現在は、UbuntuDebianCentOSRed Hat Enterprise LinuxAmazon Linuxで動作しますが、OSごとに対応するバージョンが異なります。

対応バージョンについて詳しくは、以下のサイトをご覧ください。

参考:https://nvidia.github.io/nvidia-docker/

2018年6月時点の最新リリースは、nvidia-docker 2.0.3で、2018年3月にリリースされました。

nvidia-dockerについては、以下のページをご覧いただくと正確な情報が確認できます。

参考:https://github.com/NVIDIA/nvidia-docker/wiki

繰り返しになりますが、この記事ではnvidia-dockerのインストール方法や操作方法は説明しません。

Docker Community Edition for Windowsをインストールしよう

では、Docker Community Edition for Windowsをインストールするところから始めましょう。

(1)https://store.docker.com/editions/community/docker-ce-desktop-windowsにアクセスして、「Get Docker」をクリックします。

tensor-docker01

Docker for Windows Installer.exeがダウンロードされます。

ダウンロードページにも記載されていますが、Docker Community Edition for Windowsは、Windows 10 Pro(64ビット)またはWindows 10 Enterprise(64ビット)にのみインストールできます。

Chromeを使っていると、ダウンロードが終わるまで空白のページが表示され続けるためとても不安になりますが、ダウンロードはされるはずです。

Chromeを使っていて不安になった場合は、Internet ExplorerEdgeFirefoxを使うとすぐに反応するので安心できるでしょう。

(2)Docker for Windows Installer.exeを実行します。

(3)「Use Windows containers(省略)」のチェックが外れていることを確認し、「Ok」をクリックします。

tensor-docker02

Docker Community Edition for Windowsがインストールされます。

(4)「Close」をクリックします。

tensor-docker03

(5)スタートボタンをクリックし、「Docker for Windows」をクリックします。

(6)Dockerの評価とコメントを入力して、「Submit」をクリックします。

もちろん、何も入力せずに「Dismiss」をクリックしても大丈夫です。

tensor-docker05

(7)以下の画面が表示されたときは、「Ok」をクリックします。

tensor-docker06

Windowsが再起動して、WindowsのHyper-V機能が有効になります。

なお、Hyper-V機能を有効にするとVirtualBoxが動作しなくなります。

VirtualBoxを利用するときは、Hyper-V機能を無効にしてください。

ただし、Hyper-V機能を無効にするとDockerは動作しなくなります。

さて、初めてDocker Community Edition for Windowsが起動すると、以下の画面が表示されます。

tensor-docker07

これで、Docker Community Edition for Windowsのインストールは完了です。

Dockerコンテナを起動しよう

次は、TensorFlowが用意した公式のDockerイメージ(tensorflow/tensorflow)をダウンロードしてDockerコンテナを起動し、Jupyter Notebookにアクセスするまでの操作を説明しましょう。

(1)スタートボタンをクリックし、「Windows PowerShell」「Windows PowerShell」の順にクリックします。

tensor-docker08

Windows PowerShell(以降、PowerShell)が起動します。

(2)「docker run -it -p 8888:8888 tensorflow/tensorflow」と入力し、Enterキーを押します。

初めて起動するときは、Dockerイメージ(tensorflow/tensorflow)のダウンロードが始まります。

tensor-docker09

Dockerイメージ(tensorflow/tensorflow)のダウンロードが終わると、Dockerコンテナが起動します。

※もし、以下のようなエラーメッセージが表示されてしまったときは…

以下のサイトに書かれている設定を試してださい。

参考:http://satoyashiki.hatenablog.com/entry/2017/04/01/175604

(3)無事に以下の画面が表示されたら、指示されたURL(赤枠)にブラウザでアクセスします。

tensor-docker10

Jupyter Notebookが表示されます。

tensor-docker11

ここまでの操作で、Dockerイメージ(tensorflow/tensorflow)から作成したDockerコンテナで動作するJupyter Notebookに、Windows 10からアクセスしていることになります(文が長い…)。

ちなみに、Jupyter Notebookは、以下の記事でも軽く触れているようにPython開発環境で、コードとドキュメントを一箇所に残しておけるWebアプリケーションです。

AIのためのPython!おすすめライブラリと勉強法を徹底紹介!
更新日 : 2019年8月16日

Jupyter Notebookが動作することを確認できたら、いったんDockerコンテナを終了しましょう。

(4)ブラウザは起動したままにして、PowerShellの画面をクリックして、Ctrlキーを押しながらCキーを押します。

(5)以下のように表示されたら、すぐに「y」と入力してEnterキーを押します。

Dockerコンテナが終了します。

ブラウザにJupyter Notebookが表示されたままなので、試しにリロードしてみると、確かに使用できなくなっていますね。

PowerShellのプロンプトで「docker ps」と入力してEnterキーを押すと、以下のように起動中のDockerコンテナがないことを確認できます。

次に、「docker ps -a」と入力してEnterキーを押すと、Dockerイメージ(tensorflow/tensoflow)から作成したDockerコンテナ(boring_mirzakhani)が存在していることが確認できます。

ここに表示されているDockerコンテナのIDと名前は、起動するたびに適当に決定されます。

DockerコンテナでTensorFlowのMNISTに挑戦!

いよいよ、Dockerコンテナでbashを起動してTensorFlowのMNISTに挑戦します。

TensorFlow 1.5用に書かれた「A Guide to TF Layers: Building a Convolutional Neural Network」をやってみましょう。

Windowsでこのチュートリアルを動作させてみた記事がありますので、あわせてご覧ください!

【機械学習初心者必見】WindowsでTensorFlowを使っている画面を紹介!
更新日 : 2018年8月21日

(1)PowerShellを起動して、「docker run -it tensorflow/tensorflow bash」と入力し、Enterキーを押します。

Dockerイメージ(tensorflow/tensoflow)を初めて利用するときは、ダウンロードが始まりますが、上の手順でダウンロード済みです。

そのため、すぐに新しいDockerコンテナが起動して、以下のようなプロンプトが表示されます。

ここで「38029a303d08」は、DockerコンテナのIDです。

IDは、新しいDockerコンテナを起動するたびに新しいものが割り当てられますので、上の手順で「docker ps -a」と入力して表示されたIDとは、異なる文字列が表示されていると思います。

このDockerコンテナのIDは、あとで使いますので、どこかにメモしてください。

(2)「curl -OL https://github.com/tensorflow/tensorflow/raw/r1.5/tensorflow/examples/tutorials/layers/cnn_mnist.py」と入力し、Enterキーを押します。

cnn_mnist.pyがダウンロードされ、Dockerコンテナ内に保存されます。

新しいDockerコンテナを起動した場合は、改めてダウンロードする必要があります。

(3)「python cnn_mnist.py」と入力し、Enterキーを押します。

実行中は以下のような画面が表示されます。

tensor-docker12

残念ながら、WindowsでGPU版TensorFlowを動作させたときと比べると、27~28倍の時間がかかっていますね。

すぐには終わらなそうなので、Dockerコンテナの実行は継続したまま、いったんPowerShellを終了してみましょう。

(4)Ctrlキーを押しながらPキーを押し、続けてCtrlキーを押しながらQキーを押します。

以下の画面のようにPowerShellのプロンプトに戻ります。

tensor-docker13

この状態は、Dockerコンテナは動作が継続し、PowerShellに戻ってきた状態です。

(5)「exit」と入力し、Enterキーを押します。

PowerShellは終了しましたが、Dockerコンテナの動作は継続しています。

次に、現在のDockerコンテナでの計算状況を確認してみます。

(6)もう一度PowerShellを起動し、「docker attach 38029a303d08」と入力して、Enterキーを押します。

ここで「38029a303d08」は、手順(1)を実行したときにメモしたDockerコンテナのIDです。

すこし待つ必要がありますが、以下のような画面が表示されます。

tensor-docker14

確かに動作が継続しているようです。

このようにPowerShellを終了しておけば、誤ってDockerコンテナを停止してしまい、長くかかった学習を不用意に停止してしまうことを防げます。

計算時間がかかりそうな場合は、いったんPowerShellを終了しておくと良いでしょう。

ほかのバージョンのTensorFlowを使用する

TensorFlowのバージョンを指定する場合は、ほかのDockerイメージを使います。

たとえば、TensorFlow 1.5.1を試したい場合は、以下のコマンドを入力します。

「1.5.1」のところを「1.6.0」にすれば、TensorFlow 1.6.0を試せます。

ただ、ここに指定できる文字列(タグと呼びます)には制限があり、たとえば「1.4」は指定できません。

指定できるタグについては、以下のサイトで確認してください。

参考:https://hub.docker.com/r/tensorflow/tensorflow/tags/

Dockerコンテナを片付ける

最後に、Dockerコンテナを片付ける操作を確認して、この記事を終わりにしましょう。

すべてPowerShellのプロンプトでコマンドを入力します。

なお、「38029a303d08」は、DockerコンテナのIDですので、お使いのDockerコンテナのIDを入力してください。

DockerコンテナのIDは、以下のコマンドで確認できます。

Dockerコンテナを停止する

以下のコマンドを入力すると、起動中のDockerコンテナを停止できます。

Dockerコンテナを停止すると、Dockerコンテナで実行していたプログラムはすべて停止します。

Dockerコンテナを削除する

停止しているDockerコンテナを削除できます。

Dockerコンテナを削除すると、Dockerコンテナ起動後に変更したファイルがすべて元に戻り、作成したファイルやダウンロードしたファイルは削除されます。

今回説明した手順では「cnn_mnist.py」をダウンロードしましたが、この「cnn_mnist.py」が削除されます。

Dockerイメージを削除する

Dockerイメージ(tensorflow/tensorflow)から作成したDockerコンテナをすべて削除すれば、Dockerイメージも削除できます。

Dockerイメージを保存しておくには、Windows 10のストレージ容量が必要です。

Dockerイメージ(tensorflow/tensorflow)は、ファイルサイズが大きく約1.3GBを超えていますので、不要になったら削除しましょう。

まとめ

今回は、Docker Community Edition for WindowsWindows 10 Proにインストールし、TensorFlow公式のDockerイメージ(tensorflow/tensorflow)を利用して、CPU版TensorFlowを動作させる方法を紹介しました。

Dockerイメージを利用することで、簡単にCPU版TensorFlowを動作させられることが分かっていただけたと思います。

ただ、GPU版TensorFlowと比べてしまうと、圧倒的に遅いことが残念です。

TensorFlowで利用できるGPUがあるなら、頑張ってGPU版TensorFlowをインストールして、そちらを使うことをオススメします!

それでは。

LINEで送る
Pocket

最短でエンジニアを目指すなら侍エンジニア塾

cta_under_bnr

侍エンジニア塾は業界で初めてマンツーマンレッスンを始めたプログラミングスクールです。これまでの指導実績は16,000名を超え、未経験から数多くのエンジニアを輩出しています。

あなたの目的に合わせてカリキュラムを作成し、現役エンジニア講師が専属であなたの学習をサポートするため効率よく学習を進めることができますよ。

無理な勧誘などは一切ありません。まずは無料体験レッスンを受講ください。

無料体験レッスンの詳細はこちら

書いた人

侍テック編集部

侍テック編集部

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説