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 releasedocker pull tensorflow/tensorflow:devel-gpu # nightly dev release w/ GPU supportdocker 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
按照说明操作,并在您的宿主机浏览器中打开 URL: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 平台支持 FAQ。
检查 GPU 是否可用
lspci | grep -i nvidia
验证您的 nvidia-docker 安装
docker run --rm --runtime=nvidia --gpus all ubuntu 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