Docker
Docker 使用容器创建了一个与外部系统隔离开的 TensorFlow 运行环境。TensorFlow 可运行在这个虚拟环境中并使用宿主机的资源(比如目录访问,使用 GPU,网络连接等等)。TensorFlow Docker 镜像 已在各个 release 版本上测试可用。
因为只需在宿主机上安装 NVIDIA® GPU 驱动(NVIDIA® CUDA® Toolkit 不需安装),所以在 Linux 上使用 Docker 是启用 TensorFlow GPU 支持最简单的方法。
TensorFlow Docker 安装要求
- 在本地宿主机安装 Docker。
- 在 Linux 环境下获取 GPU 支持,安装 nvidia-docker。
注意:想要不使用 sudo
运行 docker
命令,需要创建 docker
用户组并将你的用户加入此用户组。详细步骤请查看 Linux 安装后配置。
下载 TensorFlow Docker 镜像
官方 TensorFlow Docker 镜像位于 Docker Hub 中的 tensorflow/tensorflow。镜像中的使用以下格式 Tag 后发布。
Tag | 描述 |
---|---|
latest | 最新发布的已编译 TensorFlow CPU 镜像。默认。 |
nightly | 最新构建 TensorFlow 镜像。(不稳定) |
version | 特定版本的已编译 TensorFlow 镜像,例如:1.11 |
Tag后缀 | |
tag-devel | 特定 tag 的发布版本和源码。 |
tag-gpu | 特定 tag 的带有 GPU 支持的发布版本。 (查看) |
tag-py3 | 特定 tag 的支持 Python 3 的发布版本。 |
tag-gpu-py3 | 特定 tag 的带有 GPU-支持并支持 Python 3 的发布版本。 |
tag-devel-py3 | 特定 tag 的支持 Python 3 的发布版本和源码。 |
tag-devel-gpu | 特定 tag 的带有 GPU-支持 的发布版本和源码。 |
tag-devel-gpu-py3 | 特定 tag 的带有 GPU 支持并支持 Python 3 的发布版本以及源码。 |
For example, the following downloads TensorFlow release images to your machine: 例如,使用如下命令下载 TensorFlow 发布版本镜像到本地机器
docker pull tensorflow/tensorflow # 最新稳定发布版本
docker pull tensorflow/tensorflow:nightly-devel-gpu # 最新开发版本 w/ GPU 支持
启动 TensorFlow Docker 容器
使用以下命令启动一个已配置的 TensorFlow 容器:
docker run [-it] [--rm] [-p hostPort:containerPort] tensorflow/tensorflow[:tag] [command]
详细内容,请查看 docker 启动参考。
使用 Cpu-only 镜像的样例
我们使用 tag 为 latest
的镜像确认 TensorFlow 安装过程。Docker 在第一次运行的时候会下载一个新的 TensorFlow 镜像:
docker run -it --rm tensorflow/tensorflow \ python -c "import tensorflow as tf; print(tf.__version__)"
成功:TensorFlow 现在已安装完成。查看教程开始你的学习之旅吧。
我们来看下更多 TensorFlow Docker 的用法。在 TensorFlow 已配置容器中启动一个 bash
命令行会话:
docker run -it tensorflow/tensorflow bash
在这个容器中,你可以启动一个 python
会话并导入 TensorFlow。 To run a TensorFlow program developed on the host machine within a container, mount the host directory and change the container's working directory 为了在容器中运行宿主机中开发的 TensorFlow 程序,需要将宿主机的主目录挂载到容器中并设定容器的工作路径 (-v hostDir:containerDir -w workDir
):
docker run -it --rm -v $PWD:/tmp -w /tmp tensorflow/tensorflow python ./script.py
在容器中创建文件时会出现权限问题并会暴露给宿主机。所以最好在宿主机中进行文件操作。
启动一个由使用 Python 3 构建的最新版 TensorFlow 服务支持的 Jupyter Notebook。
docker run -it -p 8888:8888 tensorflow/tensorflow:nightly-py3
按照说明在浏览器中打开 URL:http://127.0.0.1:8888/?token=...
。
GPU 支持
因为只需在宿主机上安装 NVIDIA® GPU 驱动(NVIDIA® CUDA® Toolkit 不需安装),所以在 Linux 上使用 Docker 是启用 TensorFlow GPU 支持最简单的方法。
安装 nvidia-docker获得支持 NVIDIA® GPU 支持的 Docker 容器。nvidia-docker
仅供 Linux 环境下使用,详细内容请查看平台支持 FAQ。
查看 GPU 是否可用:
lspci | grep -i nvidia
确认 nvidia-docker
安装过程
docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi
注意:nvidia-docker
v1 使用别名 nvidia-docker
,v2 则需使用 docker --runtime=nvidia
。
使用已启用 GPU 镜像的样例
下载并启动已启用 GPU 的 TensorFlow 镜像(可能需要花费几分钟):
docker run --runtime=nvidia -it --rm tensorflow/tensorflow:latest-gpu \ python -c "import tensorflow as tf; print(tf.contrib.eager.num_gpus())"
配置已启用 GPU 的镜像可能会花费很长时间。如果需要重复运行基于 GPU 的脚本,你可以使用 docker exec
来重用容器。
使用最新的 TensorFlow GPU 镜像并在容器中运行一个 bash
命令行会话:
docker run --runtime=nvidia -it tensorflow/tensorflow:latest-gpu bash
成功:TensorFlow 现在已安装完成。查看教程开始你的学习之旅吧。