利用docker部署深度学习环境摆脱操作系统版本限制与cuda版本限制
文章背景描述:
近期公司想给客户部署OCR文本识别项目,项目用到了tensorflow1.13,可支持该框架版本的cuda得低于10.2,但是客户要求的操作系统版本是Ubuntu22.04,NVIDIA官方不提供针对于Ubuntu22.04的cuda10.2,出现这种限制真的非常恶心,并且全程要求进行 离线部署。
针对此问题考虑到使用docker进行部署
大体思路如下:
1、客户安装操作系统是Ubuntu22.04,利用docker拉取Ubuntu18.04精简版镜像
2、离线下载是宿主机适配的NVIDIA驱动离线包、docker离线包、nvidia docker离线包、gcc离线包(也可以使用联网安装)、项目所需要的对应版本的cuda安装包、cudnn安装包
步骤一:
1、在宿主机安装gcc包,完毕后查看版本,验证是否安装成功
2、在宿主机安装了gcc包的前提下,安装NVIDIA驱动(不安装gcc会安装报错)
步骤二:
1、安装docker
2、安装nvidia docker,验证是否安装成功
3、拉取Ubuntu18.04官方镜像,创建容器,在创建容器时,需要传入相应的参数,以下为例:
docker run -it -d --gpus all -p 8081:8080 --name googosoft_ocr -v /home/googosoft/docker_file:/home/googosoft/docker_file 3941d3b032a8 /bin/bash
上述语句中,必须加上**–gpus参数,否则容器无法调用宿主机的GPU**
4、进入到创建的容器内,必须再次安装gcc,否在以下步骤会报错
安装过程中如果报错,可能是镜像源问题建议更换网易镜像源
apt install build-essential
gcc --version
镜像源:注意,我的Ubuntu是18.04版本,各个版本的镜像源不相同,需要根本实际查询修改
主要是一下连接中"bionic "参数位置需要调整,建议查询下
deb http://mirrors.163.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic-backports main restricted universe multiverse
5、在容器内安装与宿主机相同版本的nvidia驱动
5、安装项目所需要的cuda(在安装过程中不要安装程序提示需要安装的英伟达驱动,选择no)与cudnn该步骤与常规流程一样
之后的流程基本与常规流程一样,可以没有束缚的放纵自己玩耍了