Docker

Docker 使用容器创建虚拟环境,将 TensorFlow 安装与系统其余部分隔离。TensorFlow 程序在虚拟环境运行,该环境可以与主机共享资源(访问目录、使用 GPU、连接到互联网等)。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.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

按照说明操作并在主机 Web 浏览器中打开 URL: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