Ubuntu18通过docker创建不同tensorflow-gpu版本的容器

文章目录

        • 前言:
        • 1、安装docker19.03
          • 1.1、了解自身电脑配置
          • 1.2、 安装dockers
        • 2、安装nvidia-docker
          • 2.1、安装
          • 2.2、修改镜像仓库源并进行验证
        • 3、拉取tensorflow-gpu版本镜像,创建容器
          • 3.1、查看有哪些镜像
          • 3.2、拉取镜像并运行
        • 4、验证
          • 4.1、进入容器命令
          • 4.2、验证代码

前言:

​当我们clone别人编写的深度学习项目代码之后,都需要给这个项目代码配置一个独立唯一的运行环境。例如人脸识别项目的配置环境是tensorflow-gpu1.12.0+cudn9+cudn7,代码限制必须使用tensorflow-gpu1.12.0版本,用其他版本会报错。而你的硬件机器系统又刚好是ubuntu18.04系统,只能适配cudn10.0以上版本,换言之,你安装运行不了tensorflow-gpu1.12.0。难道你重装个Ubuntu16.04系统吗?显然随着项目的增多,每次都重装系统显得繁琐低能。根据官方的解释,我们可以通过docker在一台机器上创建多个不同版本的tensorflow-gpu容器来解决这个问题。本篇文章会从零开始讲述如何完成这个任务。如果你连docker是什么都不知道,建议先在菜鸟教程里面学习一遍

1、安装docker19.03

1.1、了解自身电脑配置
  1. 查看显卡驱动nvidia-smi,正确安装了显卡驱动之后如图所示Ubuntu18通过docker创建不同tensorflow-gpu版本的容器_第1张图片
  2. 查看cudanvcc -V和cudnncat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2版本,cuda和cudnn的安装可以参考我另外一篇博客,博主电脑的版本分别是cuda10.0和cudnn7.6.5Ubuntu18通过docker创建不同tensorflow-gpu版本的容器_第2张图片
1.2、 安装dockers
# 关闭docker
sudo systemctl stop docker
# 卸载旧版本:
sudo apt-get purge docker-ce
# 安装新版本
sudo apt update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
# 查看版本号和来源
apt-cache madison docker-ce
# 启动docker
systemctl start docker
sudo systemctl start docker
sudo systemctl enable docker
# 查看docker版本
sudo docker info
# 安装完毕

2、安装nvidia-docker

2.1、安装
# 总共6句shell命令,复制过去一句一句执行就行,前提是你系统是Ubuntu16.04或者是18.04
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker

Ubuntu18通过docker创建不同tensorflow-gpu版本的容器_第3张图片
Ubuntu18通过docker创建不同tensorflow-gpu版本的容器_第4张图片

2.2、修改镜像仓库源并进行验证

其实可以不修改镜像仓库源,运行下面代码。如果出现如图所示结果,则表示nvidia-docker安装成功。但是因为官方docker镜像源的服务器在国外,下载的过程非常慢。

# 修改镜像源步骤,新建打开文件/ect/docker/daemon.json
vim /ect/docker/daemon.json
# 添加下面语句到文件中,修改为阿里云
{
              "registry-mirrors": ["https://y0qd3iq.mirror.aliyuncs.com"]
}
# 重启docker服务
service docker restart
# 查看是否生效
docker info|grep Mirrors -A 1
# 可以看到如下输出,表示成功
WARNING: No swap limit support
 Registry Mirrors:
  https://y0qd3iq.mirror.aliyuncs.com/

验证是否安装成功

#### Test nvidia-smi with the latest official CUDA image
docker run --gpus all nvidia/cuda:10.0-base nvidia-smi

结果如图,说明安装成功
Ubuntu18通过docker创建不同tensorflow-gpu版本的容器_第5张图片

3、拉取tensorflow-gpu版本镜像,创建容器

3.1、查看有哪些镜像

寻找自己合适想要的镜像,官网地址
Ubuntu18通过docker创建不同tensorflow-gpu版本的容器_第6张图片

3.2、拉取镜像并运行

(这里涉及到的dockers命令自行学习),推荐地址,自己跟着教程试一遍代码就全懂了,我就算在这里解释,相信你也是会有种吃不跑的感觉。

# 拉取并以终端可交互的形式运行容器
docker run --gpus all -it -v $PWD:/tmp -w /tmp tensorflow/tensorflow:1.12.0-gpu-py3 /bin/bash

结果如图:

4、验证

进行容器,验证tensorflow-gpu是否可以正常运行。参考官网

4.1、进入容器命令
# 进入容器
docker run --gpus all -it -v $PWD:/tmp -w /tmp tensorflow/tensorflow:1.12.0-gpu-py3 /bin/bash
4.2、验证代码
#coding:utf-8
 
import tensorflow as tf
 
print (tf.__version__)
# 单GPU 检测
with tf.device('/device:GPU:0'):
  a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')
  b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')
  c = tf.matmul(a, b)
# Creates a session with log_device_placement set to True.
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
# Runs the op.
print(sess.run(c))

你可能感兴趣的:(计算机视觉)