Google is committed to advancing racial equity for Black communities. See how.

Docker

Docker 會使用容器來建立虛擬環境,將 TensorFlow 安裝作業與系統的其他部分區隔開來。TensorFlow 程式會在這個虛擬環境執行。這個虛擬環境可以與主體機器共用資源,例如存取目錄、使用 GPU,以及連線至網際網路等。所有 TensorFlow 版本的 TensorFlow Docker 映像檔都經過測試。

Docker 能讓您以最簡單的方式,在 Linux 上啟用 TensorFlow GPU 支援,因為主體機器只需有 NVIDIA® GPU 驅動程式即可,不必安裝 NVIDIA® CUDA® Toolkit

TensorFlow Docker 需求

  1. 在您的本機安裝 Docker
  2. 如要在 Linux 上支援 GPU,請安裝 NVIDIA Docker 支援
    • 請使用 docker -v 記下您的 Docker 版本。19.03 以前的版本需要使用 nvidia-docker2 和 --runtime=nvidia 旗標。19.03 以後的版本則需要使用 nvidia-container-toolkit 套件和 --gpus all 旗標。您可以在上方網頁連結中找到這兩個選項。

下載 TensorFlow Docker 映像檔

官方的 TensorFlow Docker 映像檔位於 tensorflow/tensorflow Docker Hub 存放區中。映像檔版本的標記遵循下列格式:

標記 說明
latest 最新版本的 TensorFlow CPU 二進位映像檔 (預設版本)。
nightly TensorFlow 映像檔的夜間版本 (不穩定)。
version 指定 TensorFlow 二進位映像檔的版本,例如:2.1.0
devel TensorFlow master 開發環境的夜間版本,包含 TensorFlow 原始碼。
custom-op 用於開發 TF 自訂運算的特殊實驗功能映像檔。

: : 你可以前往這個連結取得更多資訊:https://github.com/tensorflow/custom-op

每個基本「標記」都有新增或變更功能的變化版本:

標記變化版本 說明
tag-gpu 支援 GPU 的指定標記版本 (如下所示)
tag-jupyter 使用 Jupyter 的指定「標記」版本 (包含 TensorFlow 教學課程筆記本)

您可以一次使用多個變化版本。舉例來說,下列程式碼會將 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 執行參考資料

範例:使用僅支援 CPU 的映像檔

我們使用 latest 標記的映像檔來驗證 TensorFlow 安裝狀態。Docker 初次執行時會下載新的 TensorFlow 映像檔:

docker run -it --rm tensorflow/tensorflow \
   python -c "import tensorflow as tf; 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 的夜間版本啟動 Jupyter Notebook 伺服器:

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

按照指示操作,並在主機的網路瀏覽器中開啟網址: http://127.0.0.1:8888/?token=...

GPU 支援

Docker 能讓您以最簡單的方式在 GPU 上執行 TensorFlow,因為主體機器只需有 NVIDIA® 驅動程式即可,不必安裝 NVIDIA® CUDA® Toolkit

請安裝 Nvidia Container Toolkit,為 Docker 新增 NVIDIA® GPU 支援。nvidia-container-runtime 僅適用於 Linux。詳情請參閱 nvidia-container-runtime 平台支援常見問題

檢查是否有可用的 GPU:

lspci | grep -i nvidia

驗證您的 nvidia-docker 安裝狀態:

docker run --gpus all --rm nvidia/cuda nvidia-smi

範例:使用採用 GPU 技術的映像檔

下載並執行採用 GPU 技術的 TensorFlow 映像檔 (可能需要幾分鐘的時間):

docker run --gpus all -it --rm tensorflow/tensorflow:latest-gpu \
   python -c "import tensorflow as tf; print(tf.reduce_sum(tf.random.normal([1000, 1000])))"

設定採用 GPU 技術的映像檔可能需要一些時間。如要重複執行以 GPU 為基礎的指令碼,你可以使用 docker exec 來重複使用容器。

使用最新的 TensorFlow GPU 映像檔,在容器中啟動 bash 殼層工作階段:

docker run --gpus all -it tensorflow/tensorflow:latest-gpu bash