Docker调用GPU

dockr虽然安装好了,但是安装到这一步的docker只能在cpu下使用或者将docker的gpu环境导出到宿主机上使用,无法在docker中使用gpu。

nvidia-docker是一个可以使用GPUdockernvidia-docker是在docker上做了一层封装,需要先安装好docker。

官网:https://github.com/NVIDIA/nvidia-docker

1、跟新nvidia的版本到19.03

由于我的nvidia-docker2安装失败了,所以参考官方强调的使用nvidia-docker2升级(已弃用)我就升级了docker到19.03版本

其中docker的安装参考教程:https://blog.csdn.net/Diana_Z/article/details/97376691

需要预先安装好nvidia,ubuntu上的nvidia安装教程参考:https://blog.csdn.net/Diana_Z/article/details/100011628

本人使用的系统是ubuntu18.04,4个gpu,具体安装信息如下

2、安装过程

# Add the package repositories
$ 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

就是官方教程里面Ubuntu 16.04/18.04, Debian Jessie/Stretch的步骤

执行起来是这样的:

3、使用测试

#### Test nvidia-smi with the latest official CUDA image

#### 调用所有gpu的方法

$ docker run --gpus all nvidia/cuda:9.0-base nvidia-smi

 

# Start a GPU enabled container on two GPUs

# 调用固定数量的GPU,从前面开始数n个,这里是两个

$ docker run --gpus 2 nvidia/cuda:9.0-base nvidia-smi

# Starting a GPU enabled container on specific GPUs

# 选择其中几个gpu来使用,这里选择的1,2是编号1,2的gpu,四个gpu的编号是从0开始的,

# 我的四个gpu的名字是0,1,2,3

# 可以看到我的第一个gpu显存是12192,但是调用1,2的GPU的显存都是11178

$ docker run --gpus '"device=1,2"' nvidia/cuda:9.0-base nvidia-smi

​​​​​​​4、实际使用

使用caffe官方提供的caffe项目的gpu版本进行使用

docker run --gpus all -ti bvlc/caffe:gpu /bin/bash

--gpus all,调用了所有gpu

--ti,进入了命令交互界面 ,具体可以参考:https://blog.csdn.net/uphailin/article/details/80892505

进入之后再docker容器中查看,可以看到容器中已经有四个gpu啦

 

以下是一次失败的实践

参考:https://www.cnblogs.com/journeyonmyway/p/10318624.html(以下代码截图来自这个教程)

官网说最新的docker19.03以上的版本nvidia-docker2已经启用了,所以先查看我安装的docker版本

18.09.7,所以就使用nvidia-docker2

安装时候报错,暂时找不到解决途径

 

初探Docker调用GPU

前一阵子写了一篇docker的学习笔记[1],但是当时没有gpu,所以没法做显卡调用相关的内容。最近机房的电脑启动了,有了实验环境,打算把docker调用gpu相关的内容测试一下。实验环境依然为Ubuntu16.04。

根据所看到的资料[2]以及docker的release notes[3]显示,19年7月的时候,docker已经在19.03版本中加入了NVIDIA GPU的runtime,所以本篇会针对此进行学习和实验,而不是旧版的nvidia-docker或者nvidia-docker2。

环境安装

首先需要在拥有NVIDIA GPU显卡的机子上安装显卡驱动,使用一些参数会让安装省去许多麻烦

./NVIDIA-Linux-x86_64-440.36.run --no-opengl-files --no-x-check --no-nouveau-check

然后根据docker的官方文档在服务器中安装docker-ce,安装完后默认可以得到最新版的docker,目前是19.03.6

根据nvidia-docker的官方github,还需要安装nvidia-container-toolkit

# Add the package repositories
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

测试

我在单卡服务器上测试了官方示例,结果如图

为了能在docker中训练与部署模型,我们需要一个开发环境的镜像。pytorch在DockerHub[4]上传了许多已经制作好的镜像,我们可以用来作为基础镜像

docker pull pytorch/pytorch:1.1.0-cuda10.0-cudnn7.5-devel

映射个测试目录,启动容器

docker run -it --gpus=all -v /home/eagle/project/test:/workspace pytorch/pytorch:1.1.0-cuda10.0-cudnn7.5-devel

在测试目录/home/eagle/project/test下创建一个名为test.py的文件,随便找一份训练代码写进去,在容器中运行python test进行测试

可以看到训练正常,至此测试就可以结束了。

其它

可以看到,docker 19.03之后,调用NVIDIA GPU还是很方便的。不过目前NVIDIA官方暂未支持docker-compose[5],期待后续的完善。

PS:期待WSL2也尽快的支持GPU调用,这样炼丹就会更方便了。

 

docker使用GPU总结

https://blog.csdn.net/weixin_43975924/article/details/104046790

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值