构建docker环境能够运行自己的GPU服务,能够快速适应不同宿主机的GPU型号、操作系统和驱动。linux版本、nvidia驱动、cuda、cudnn,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中的镜像名
  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值