docker使用GPU总结

docker使用GPU总结

(注:本文只讨论docker19使用gpu,低于19的请移步其他博客,或更新19后再参考本文)

背景及基本介绍

感觉docker已是toB公司的必备吧,有了docker再也不用担心因客户环境问题导致程序各种bug,也大大省去了配置客户服务器的过程。
现由于项目要使用GPU,所以需要docker支持GPU,在docker19以前都需要单独下载nvidia-docker1或nvidia-docker2来启动容器,自从升级了docker19后跑需要gpu的docker只需要加个参数–gpus all 即可(表示使用所有的gpu,如果要使用2个gpu:–gpus 2,也可直接指定哪几个卡:–gpus ‘“device=1,2”’,后面有详细介绍)。
接着需要安装nvidia驱动,这需要根据自己显卡安装相应的驱动,网上有很多类似教程,此处不再介绍,推荐一个链接:讲的很详细
不要以为这样就可以安心的使用gpu了,你的镜像还必须要有cuda才行,这也很简单,去dockerhub上找到和自己tensorflow相对应的cuda版本的镜像,再基于该镜像生成自己的镜像就可以轻松使用gpu了。这里需要额外多说一句,如果你的docker 本身就基于了某个镜像(例如基于本公司仓库的镜像),docker是不允许from两个镜像的,要想实现基于两个或多个,只能基于其中一个,其他的镜像通过各镜像的Dockerfile拼到新的Dockerfile上,但更多的镜像是没有Dockerfile的,可以通过docker history查看某镜像的生成过程,其实就是Dockerfile,nvidia/cuda官网本身就有Dockerfile,也可直接参考。

安装toolkit

关于配置docker19使用gpu,其实只用装官方提供的toolkit即可,把github上的搬下来:
Ubuntu 16.04/18.04, Debian Jessie/Stretch/Buster:

# 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

CentOS 7 (docker-ce), RHEL 7.4/7.5 (docker-ce), Amazon Linux 1/2

$ distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
$ curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.repo | sudo tee /etc/yum.repos.d/nvidia-docker.repo

$ sudo yum install -y nvidia-container-toolkit
$ sudo systemctl restart docker

测试安装是否成功

经过以上大部分linux系统的docker toolkit应该都能安装成功,如不能安装成功,可参考github官网,查看是否安装成功:
(1) 查看–gpus 参数是否安装成功:

$ docker run --help | grep -i gpus
      --gpus gpu-request               GPU devices to add to the container ('all' to pass all GPUs)

(2) 运行nvidia官网提供的镜像,并输入nvidia-smi命令,查看nvidia界面是否能够启动:

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

运行gpu的容器

# 使用所有GPU
$ docker run --gpus all nvidia/cuda:9.0-base nvidia-smi

# 使用两个GPU
$ docker run --gpus 2 nvidia/cuda:9.0-base nvidia-smi

# 指定GPU运行
$ docker run --gpus '"device=1,2"' nvidia/cuda:9.0-base nvidia-smi
$ docker run --gpus '"device=UUID-ABCDEF,1"' nvidia/cuda:9.0-base nvidia-smi

ok,可以开心愉快的使用gpu了!!

Docker Swarm是一个用于管理和编排Docker容器的工具,可以轻松地将多个Docker主机组成一个容器集群,并统一进行管理。Docker Swarm会将容器自动分布到各个节点上,以实现容器的高可用性和负载均衡。 GPU(Graphics Processing Unit)是图形处理单元的缩写,是一种用于加速计算的专用处理器。GPU可以高效地处理大规模的并行计算任务,广泛应用于科学计算、深度学习、图形渲染等领域。 Docker Swarm与GPU的结合,即Docker Swarm GPU,为用户提供了在容器集群中使用GPU的能力。通过将GPU资源纳入Docker Swarm集群的管理范围,可以更加方便地进行GPU加速的计算任务。 在Docker Swarm GPU中,用户可以将需要使用GPU的容器标记为服务,并在启动服务时指定使用GPU资源。Docker Swarm会根据配置和可用的GPU资源,自动将容器调度到拥有所需GPU资源的节点上运行。 同时,Docker Swarm GPU还提供了对GPU资源的限制和监控功能。用户可以通过设置GPU资源配额,限制每个容器所使用GPU资源数量,以避免资源之间的竞争。同时,用户还可以通过监控和日志功能,实时查看容器的GPU使用情况和性能指标。 总结来说,Docker Swarm GPU为用户提供了在容器集群中高效使用GPU资源的功能。它使得GPU计算变得更加灵活便捷,方便用户进行科学计算、机器学习、深度学习等应用,提升了计算任务的效率和性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值