本文将介绍:
- 如何找到所需要的Tensorflow-GPU镜像
- 在Linux终端中拉取镜像、查看本地镜像
- 使用Docker构建Tensorflow-Gpu环境
- 配置jupyter外部访问映射
- 检查是否是GPU环境
查看本文的前置条件是本地需要有Docker环境,如果还未配置Docker环境,可以先查看文章配置下。
一,下载Tensorflow镜像
1,找到所需要的Tensorflow镜像
百度搜索nvidia ngc
进入NVIDIA GPU 加速容器,找到所需版本的Tensorflow镜像,并copy 其对应的 pull tag
。
2,在Linux终端中拉取镜像
docker pull nvcr.io/nvidia/tensorflow:21.07-tf2-py3
3,查看镜像
(1), 输入docker info
来查看文件下载的位置,并进入到该目录中:
(2), 下载镜像的储存地址:
(3), 名称的映射:
repositories.json
的结果与docker images
看到的images数目相同
新增镜像后,repositories.json
中会增加两条相对应的image的ID记录,一条与image hub
上的相同,另一条与本地docker images
的相同。如下图所示:
详细的Docker image 存储路径的解析
二,使用Docker构建Tensorflow-Gpu环境
对于Docker容器的具体命令可以参考:
docker run 容器运行Docker run 命令
1,使用Docker构建Tensorflow-Gpu环境
docker run --gpus all -d -it -p 【宿主机映射端口】:【容器内映射端口】 -v 【宿主机绝对地址】:【容器内绝对地址】 --name 【自定义容器名称】 -e 【全局变量key】=【全局变量value】 nvcr.io/nvidia/tensorflow:21.07-tf2-py3 bash
注意: 在定义映射端口时,需要先确定端口是否被占用! 可通过如下命令确认:
lsof -i:【端口号】
2,进入容器
docker exec -it 【自定义的容器名称】 bash
3,配置jupyter外部访问映射
- 使用Docker构建Tensorflow-Gpu环境时将jupyter端口8888开放到宿主机外部端口(jupyter端口可以自己定义,但要和容器内部端口保持一致)
- 修改
jupyter_notebook_config.py
文件,可以从环境变量中读取用户名,密码等。vim /root/.jupyter/jupyter_notebook_config.py
修改内容可参考如下代码:
import os
from IPython.lib import passwd
c.NotebookApp.ip = '0.0.0.0'
c.NotebookApp.port = int(os.getenv('PORT', 8888))
c.NotebookApp.open_browser = False
c.MultiKernelManager.default_kernel_name = 'python3'
# sets a password if PASSWORD is set in the environment
if 'NOTEBOOK_PASS' in os.environ:
c.NotebookApp.password = passwd(os.environ['NOTEBOOK_PASS'])
del os.environ['NOTEBOOK_PASS']
else:
c.NotebookApp.token = ''
if 'NOTEBOOK_USER' in os.environ:
c.NotebookApp.notebook_dir = '/root/' + os.environ['NOTEBOOK_USER']
del os.environ['NOTEBOOK_USER']
- 后台开启jupyer服务:
nohup jupyter-notebook --allow-root > /dev/null 2>&1 &
- 此时可以使用浏览器直接访问了
http://【ip】:16666/lab
三,配置、检查环境
1,配置环境
apt-get update
apt-get install sudo
2,检查是否是GPU环境
ipython
import tensorflow as tf
print(tf.__version__)
print(tf.test.is_gpu_available()) # 结果True则是GPU环境