Dockerノート:TensorFlowのインストール


前言
次の手順に従って、DockerでTensorFlowをインストールします.
  • Dockerドキュメントの説明に従ってコンピュータにDockerをインストールします.
  • (オプション)dockerというLinuxグループを作成し、Dockerドキュメントで説明したようにsudoを持たないコンテナの起動をサポートします.(この手順を実行しない場合は、Dockerを呼び出すたびにsudoを使用する必要があります.)
  • GPU対応のTensorFlowバージョンをインストールするには、まずnvidia-docker(githubに格納)をインストールする必要があります.
  • TensorFlowバイナリイメージを含むDockerコンテナを起動します.

  • CPUのみ対応
    CPUのみをサポートするDockerコンテナを起動するには、次の形式のコマンドを入力します.
    $ docker run -it -p hostPort:containerPort TensorFlowCPUImage

    次のようになります.
  • -p hostPort:containerPortはオプションです.shellからTensorFlowプログラムを実行する場合は、このオプションを省略します.JupiterノートパソコンからTensorFlowプログラムを実行する場合は、hostPortcontainerPort8888に設定します.容器内でTensorBoardを実行する場合は、-pタグを追加し、hostPortcontainerPort6006に設定します.
  • TensorFlowCPUImageは必須です.Dockerコンテナを表します.次の値を指定します.
  • tensorflow/tensorflow:TensorFlow CPUバイナリイメージ.
  • tensorflow/tensorflow:latest-devel:最新のTensorFlow CPUバイナリイメージおよびソースコード.
  • tensorflow/tensorflow:version:指定されたTensorFlow CPUバイナリイメージバージョン(1.1.0 rc 1など).
  • tensorflow/tensorflow:version-devel:指定されたTensorFlow GPUバイナリイメージバージョン(1.1.0 rc 1など)およびソースコード.
  • tensorflow/tensorflow:latest-py3:python 3
  • として指定

    たとえば、次のコマンドはDockerコンテナで最新のTensorFlow CPUバイナリイメージを起動します.このコンテナを使用してshellでTensorFlowプログラムを実行できます.
    $docker run -it tensorflow/tensorflow bash

    次のコマンドは、Dockerコンテナで最新のTensorFlow CPUバイナリイメージを起動することもできます.ただし、このDockerコンテナでは、Jupyter NotebookでTensorFlowプログラムを実行できます.
    $ docker run -it -p 8888:8888 tensorflow/tensorflow

    Dockerは、TensorFlowバイナリイメージを初めて起動したときに、このイメージをダウンロードします.
    GPUサポート
    GPU対応のTensorFlowをインストールする前に、システムがすべてのNVIDIAソフトウェアの要件を満たしていることを確認してください.Nvidia GPUをサポートするDockerコンテナを起動するには、次の形式のコマンドを入力します.
    $ nvidia-docker run -it -p hostPort:containerPort TensorFlowGPUImage

    次のようになります.
    -p hostPort:containerPortはオプションです.shellからTensorFlowプログラムを実行する場合は、このオプションを省略します.JupiterノートブックからTensorFlowプログラムを実行する場合は、hostPortとcontainerPortを8888に設定します.-TensorFlowGPUImage Dockerコンテナを指定します.次の値を指定する必要があります:1.tensorflow/tensorflow:latest-gpu:最新のTensorFlow GPUバイナリイメージ.2.tensorflow/tensorflow:latest-devel-gpu:最新のTensorFlow GPUバイナリイメージおよびソースコード.3.tensorflow/tensorflow:version-gpu:指定されたTensorFlow GPUバイナリイメージバージョン(0.12.1など).4.tensorflow/tensorflow:version-devel-gpu:指定されたTensorFlow GPUバイナリイメージバージョン(例えば0.12.1)およびソースコード.5.tensorflow/tensorflow:latest-gpu-py3:python 3として指定します.最新(latest)のバージョンをインストールすることをお勧めします.たとえば、次のコマンドはDockerコンテナで最新のTensorFlow GPUバイナリイメージを起動します.このコンテナを使用してshellでTensorFlowプログラムを実行できます.
    Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]  
    
      -d, --detach=falsefalse   
      -i, --interactive=false     STDIN  -t, --tty=false              tty  ,         ,   false  
      -u, --user=""                       
      -a, --attach=[]                (    docker run -d     )
      -w, --workdir=""                     
      -c, --cpu-shares=0            CPUCPU        
      -e, --env=[]                     ,              
      -m, --memory=""                       
      -P, --publish-all=false               
      -p, --publish=[]                     
      -h, --hostname=""                    
      -v, --volume=[]                    ,            
      --volumes-from=[]                      ,          
      --cap-add=[]                   ,      :http://linux.die.net/man/7/capabilities  
      --cap-drop=[]                  ,      :http://linux.die.net/man/7/capabilities  
      --cidfile=""PID  --cpuset=""                          CPUCPU  
      --device=[]                         ,         
      --dns=[]                        dns     
      --dns-search=[]                 dns    ,      /etc/resolv.conf    
      --entrypoint=""              image      
      --env-file=[]                      ,               
      --expose=[]                         ,            
      --link=[]                          ,       IP、env     
      --lxc-conf=[]                       ,     --exec-driver=lxc     
      --name=""                        ,              ,links          
      --net="bridge"                   :
                                    bridge   docker daemon          
                                    host    //           
                                    container:NAME_or_ID  >//         ,  IP PORT       
                                    none          (  --net=bridge),        
      --privileged=false                    ,         capabilities  
      --restart="no"                         :
                                    no:          
                                    on-failure:      (     )    
                                    always:           
      --rm=false                              (    docker run -d     )  
      --sig-proxy=trueSIGCHLDSIGSTOP SIGKILL       
    $ nvidia-docker run -it tensorflow/tensorflow:latest-gpu bash

    次のコマンドは、Dockerコンテナで最新のTensorFlow GPUバイナリイメージを起動することもできます.このDockerコンテナでは、Jupyter NotebookでTensorFlowプログラムを実行できます.
    $ nvidia-docker run -it -p 8888:8888 tensorflow/tensorflow:latest-gpu

    次のコマンドは、旧版TensorFlow(0.12.1)をインストールします.
    $ nvidia-docker run -it -p 8888:8888 tensorflow/tensorflow:0.12.1-gpu

    インストールの確認
    TensorFlowのインストールを確認するには、次の手順に従います.1.環境がTensorFlowプログラムを実行する準備ができていることを確認します.2.短いTensorFlowプログラムを実行します.
    Dockerコンテナを起動してbashを実行
    $ docker run -it tensorflow/tensorflow bash

    短いTensorFlowプログラムを実行
    shellからPythonを呼び出します.次のようにします.
    $ python

    Pythonインタラクティブshellに、次の簡単なプログラムコードを入力します.
    # Python
    import tensorflow as tf
    hello = tf.constant('Hello, TensorFlow!')
    sess = tf.Session()
    print(sess.run(hello))

    システムが次のように出力した場合は、TensorFlowプログラムの作成を開始できます.
    Hello, TensorFlow!