构建docker环境能够运行自己的GPU服务,能够快速适应不同宿主机的GPU型号操作系统和驱动。linux版本nvidia驱动cudacudnn,docker+conda安装深度学习环境
Posted chen10314
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了构建docker环境能够运行自己的GPU服务,能够快速适应不同宿主机的GPU型号操作系统和驱动。linux版本nvidia驱动cudacudnn,docker+conda安装深度学习环境相关的知识,希望对你有一定的参考价值。
针对深度学习模型配置环境不方便的问题,通常会在K8s集群上采用docker方式运行深度学习相关的服务,由于GPU型号的换代以及nvidia驱动、cuda版本的升级,快速构建一个能够让自己深度学习模型或服务跑起来的docker镜像,能够提升生产效率。文中附有nvidia驱动、cuda、cudnn的版本依赖文档,便于查看资料。
本文介绍比较简单无脑的方式,利于新手上路。同时帮助在校学生能够快速构建镜像,利用学校的K8s集群开始自己的深度学习之旅。
1、前置准备
(1)需要安装好docker和nvidia-docker(如果需要使用GPU设备的话)
(2)熟悉一下dockerhub的网站和资源,注册一个账号
(3)需要了解一下深度学习环境配置的一些依赖关系。最重要的:
1)linux版本与nvidia驱动的版本依赖
2)nvidia驱动 与 cuda版本之间的依赖,cuda版本与cudnn版本之间的依赖
cuda官方文档中的依赖说明,可见链接: Release Notes :: CUDA Toolkit Documentation
在不同版本的cuda文档中,可以查看linux内核版本和一些系统组件版本的对应关系。可选择相应cuda版本文档,链接和图以cuda11.5为例:Installation Guide Linux :: CUDA Toolkit Documentation
3)深度学习框架(如tensorflow、pytorch、paddle)版本 与 cuda、cudnn版本之间的依赖
pytorch安装环境依赖: https://pytorch.org/get-started/previous-versions/
tensorflow安装环境依赖: 从源代码构建 | TensorFlow
paddle安装环境依赖: 开始使用_飞桨-源于产业实践的开源深度学习平台
若以上链接失效,可在评论区留言,有时间的话会更新。
如果自己从头安装,安装顺序:nvidia驱动-cuda&cudnn-深度学习框架,cuda和cudnn可以装宿主机也可以装conda的虚拟环境中。
然而,实际学习和工作的过程中,希望复现人家开源的代码或者使用开源提供的模型,就需要考虑3)里面的内容了。一般来说如果采用docker,平台的宿主机内核与驱动能够支持想用cuda版本。
2、简易制作镜像的思路
采用dockerhub中已经装好nvidia驱动、cuda、cudnn、conda(minconda)的镜像源为基础镜像,然后通过conda构建虚拟环境可以创建虚拟环境,构建其他cuda、cudnn版本,以适应不同的深度学习框架版本的依赖。
注意:这样做能够快速上手构建镜像,但是如果你觉得用别人的base镜像不保险的话,可自行构建一个nvidia驱动、cuda、cudnn、conda(minconda)的镜像
3、采用dockerhub中较好的base镜像
文本在这里推荐dockerhub上面 gpuci/miniconda-cuda 的镜像作为base镜像,这里有各种版本的linux系统版本和cuda版本构建的基础镜像,并且已经安装好miniconda工具。
docker pull 镜像地址
4、拉取base镜像构建自己的环境
(1)通过docker pull 获取和自己操作系统和基础cuda版本相适应的镜像
(2)docker images 查询镜像ID
(3)通过镜像构建容器:
1)nvidia-docker run -it 镜像ID
2)或者nvidia-docker run -it -v 宿主机文件夹:容器中的文件夹 镜像ID
1 显示镜像列表
docker images
2 通过镜像生成容器
docker run -it image_id
nvidia-docker run -it image_id
3 通过镜像生成容器,并将宿主机目录挂载到容器目录中
docker run -it -v 宿主机文件夹:容器中的文件夹 image_id
nvidia-docker run -it image_id
(4)在容器中创建新的conda环境,并在环境中构建自己想要的深度学习框架版本和相应的cuda、cudnn版本。可以通过conda search cuda、 conda search cudnn查询conda源目前支持的版本。
conda search cuda
conda search cudnn
5、容器生成镜像
可以通过docker ps -a 查询在运行的容器ID。
通过docker commit 容器ID tag(你想给新的镜像取的名字)
可以通过 docker tag 镜像ID tag 给镜像打上自己想取得名字
通过docker push可以上传到自己的dockerhub上面
1 显示docker容器状态
docker ps -a
2 容器生成新的镜像,container_id是容器ID tag是自己修改的镜像名字
docker commit container_id tag
3 修改镜像名字 tagname是修改后的名字
docker tag container_id tag tagname
4 将做好的镜像上传自己的dockerhub
docker push dockerhub中的镜像名
以上是关于构建docker环境能够运行自己的GPU服务,能够快速适应不同宿主机的GPU型号操作系统和驱动。linux版本nvidia驱动cudacudnn,docker+conda安装深度学习环境的主要内容,如果未能解决你的问题,请参考以下文章
远程服务器基于docker容器的深度学习环境配置(支持GPU)