TensorFlow 2.0 RC is available Learn more

Docker

Docker はコンテナを使用して仮想環境を作成することにより、TensorFlow プログラムをシステムの他の部分から分離します。TensorFlow プログラムは、この仮想環境内で実行され、ホストマシンとリソースを共有できます(ディレクトリへのアクセス、GPU の使用、インターネットへの接続などが可能です)。TensorFlow の Docker イメージは、リリースごとにテストされます。

Docker を使用すると、ホストマシンに必要なのは NVIDIA® GPU ドライバだけになるので、Linux で TensorFlow の GPU サポートを有効にする際の最も簡単な方法となります(NVIDIA® CUDA® ツールキットのインストールは不要です)。

TensorFlow Docker の要件

  1. ローカル ホストマシンに Docker をインストールします。
  2. Linux で GPU サポートを有効にするには、nvidia-docker をインストールします。

TensorFlow の Docker イメージをダウンロードする

TensorFlow の公式の Docker イメージは、tensorflow/tensorflow の Docker Hub リポジトリにあります。リリースされるイメージには、次の形式でタグを指定できます。

タグ 説明
latest TensorFlow CPU バイナリ イメージの最新リリース。デフォルト。
nightly TensorFlow のナイトリー ビルドのイメージ(不安定)。
version TensorFlow のバイナリ イメージのバージョンを指定(例: 1.13.1)。
devel TensorFlow のナイトリー ビルドの master 開発環境。TensorFlow のソースコードを含む。

各ベースタグには、機能を追加または変更するバリエーションがあります。

タグのバリエーション 説明
tag-gpu 指定する tag のリリースに GPU サポートを含める。下記をご覧ください
tag-py3 指定する tag のリリースに Python 3 サポートを含める。
tag-jupyter 指定する tag のリリースに Jupyter を含める(TensorFlow チュートリアルの notebook も付属します)。

一度に複数のバリエーションを指定できます。たとえば、次のように TensorFlow のリリース イメージをマシンにダウンロードできます。

    docker pull tensorflow/tensorflow                     # latest stable release
    docker pull tensorflow/tensorflow:devel-gpu           # nightly dev release w/ GPU support
    docker pull tensorflow/tensorflow:latest-gpu-jupyter  # latest release w/ GPU support and Jupyter
    

TensorFlow Docker コンテナを起動する

TensorFlow の設定コンテナを起動するには、次のコマンド形式を使用します。

    docker run [-it] [--rm] [-p hostPort:containerPort] tensorflow/tensorflow[:tag] [command]
    

詳細については、docker run のリファレンスをご覧ください。

CPU のみのイメージを使った例

latest タグによるイメージを使って、TensorFlow のインストールを検証しましょう。新しい TensorFlow イメージは、Docker が初めて実行されるときにダウンロードされます。

    docker run -it --rm tensorflow/tensorflow \
       python -c "import tensorflow as tf; tf.enable_eager_execution(); print(tf.reduce_sum(tf.random_normal([1000, 1000])))"
    

TensorFlow Docker の使い方をもう少し紹介します。TensorFlow の設定コンテナ内で bash シェル セッションを開始します。

    docker run -it tensorflow/tensorflow bash
    

コンテナ内で python セッションを開始して、TensorFlow をインポートすることができます。

ホストマシンで開発した TensorFlow プログラムをコンテナ内で実行するには、ホスト ディレクトリをマウントし、コンテナの作業ディレクトリを変更します(-v hostDir:containerDir -w workDir)。

    docker run -it --rm -v $PWD:/tmp -w /tmp tensorflow/tensorflow python ./script.py
    

コンテナ内で作成したファイルをホストに公開すると、権限の問題が発生することがあります。通常はホストシステム上でファイルを編集することをおすすめします。

TensorFlow のナイトリー ビルドと Python 3 のサポートを使用して、Jupyter Notebook サーバーを起動してみます。

    docker run -it -p 8888:8888 tensorflow/tensorflow:nightly-py3-jupyter
    

手順に沿って、ホスト上のウェブブラウザで次の URL を開きます。 http://127.0.0.1:8888/?token=...

GPU サポート

Docker を使用すると、ホストマシンに必要なのは NVIDIA® GPU ドライバだけになるので、GPU 上で TensorFlow を実行する際の最も簡単な方法となります(NVIDIA® CUDA® ツールキットは不要です)。

NVIDIA® GPU サポートを含む Docker コンテナを起動するには、nvidia-docker をインストールしてください。nvidia-docker は Linux でのみ利用可能です。詳しくは、プラットフォームのサポートに関するよくある質問をご覧ください。

GPU が利用できるかどうかを確認します。

    lspci | grep -i nvidia
    

nvidia-docker がインストールされたことを検証します。

    docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi
    

GPU 対応のイメージを使った例

GPU に対応する TensorFlow イメージをダウンロードして実行します(数分かかることがあります)。

    docker run --runtime=nvidia -it --rm tensorflow/tensorflow:latest-gpu \
       python -c "import tensorflow as tf; tf.enable_eager_execution(); print(tf.reduce_sum(tf.random_normal([1000, 1000])))"
    

GPU 対応のイメージの設定にはしばらく時間がかかることがあります。GPU ベースのスクリプトを繰り返し実行する場合は、docker exec を使うとコンテナを再利用できます。

コンテナ内で bash シェル セッションを開始するには、最新の TensorFlow GPU イメージを使用します。

    docker run --runtime=nvidia -it tensorflow/tensorflow:latest-gpu bash