绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
初探Docker调用GPU
2020-05-09 11:52:49

前一阵子写了一篇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调用,这样炼丹就会更方便了。

参考

  1. ^Docker学习笔记 - 知乎 https://zhuanlan.zhihu.com/p/105818436
  2. ^K8S 生态周报| 2019-07-21~2019-07-28 - 知乎 https://zhuanlan.zhihu.com/p/75591755
  3. ^Docker Engine release notes | Docker Documentation https://docs.docker.com/engine/release-notes/#19030
  4. ^pytorch/pytorch Tags - Docker Hub https://hub.docker.com/r/pytorch/pytorch/tags
  5. ^Support for NVIDIA GPUs under Docker Compose · Issue #6691 · docker/compose https://github.com/docker/compose/issues/6691
分享好友

分享这个小栈给你的朋友们,一起进步吧。

Docker 专区
创建时间:2020-05-08 10:53:18
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

技术专家

查看更多
  • 小雨滴
    专家
戳我,来吐槽~