Docker 會使用「容器」來建立虛擬環境,將 TensorFlow 安裝作業與系統的其他部分區隔開來。TensorFlow 程式會在這個虛擬環境中執行。這個虛擬環境可以與主體機器共用資源,例如存取目錄、使用 GPU,以及連線至網際網路等。TensorFlow Docker 映像檔已針對每個 TensorFlow 版本經過測試。
Docker 能讓您以最簡單的方式,在 Linux 上啟用 TensorFlow GPU 支援,因為主體機器只需有 NVIDIA® GPU 驅動程式即可,不必安裝 NVIDIA® CUDA® Toolkit。
TensorFlow Docker 需求
- 在本機主體機器上安裝 Docker。
- 如要在 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 自訂運算的特殊實驗性映像檔。詳情請參閱這個網頁。 |
每個基本標記都有用來新增或變更功能的變化版本:
標記變化版本 | 說明 |
---|---|
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