Docker 使用容器建立虛擬環境,將 TensorFlow 安裝與系統的其他部分隔離。TensorFlow 程式會在這個虛擬環境中執行,這個環境可以與其主機共用資源 (存取目錄、使用 GPU、連線至網際網路等)。TensorFlow Docker 映像檔在每次發布時都會經過測試。
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.8.3 |
每個基本標記都有變體,可新增或變更功能
標記變體 | 說明 |
---|---|
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 run 參考資料。
使用僅限 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
shell 工作階段
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,將 NVIDIA® GPU 支援新增至 Docker。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
shell 工作階段
docker run --gpus all -it tensorflow/tensorflow:latest-gpu bash