快速在Ubuntu18.04系统中离线部署深度学习环境
本文部署的环境前提为电脑上新装的Ubuntu18.04并且没有联网,一切所需的软件均通过离线包安装,旨在模拟实际项目部署中的过程,文章中提及的资源文件在文章最底部,不包含镜像,根据自己的需要去拉取镜像即可。
一、服务器部署流程
1、安装显卡驱动cuda、cudnn
# 安装gcc和make
cd ~/dockerDeploy/pool && sudo ./install.sh
# 重启服务器
sudo reboot
# 安装显卡驱动
首先卸载先前的所有驱动 sudo apt-get remove --purge nvidia*
禁用nouveau驱动 sudo gedit /etc/modprobe.d/blacklist-nouveau.conf
添加以下两行
blacklist nouveau
options nouveau modeset=0
重新生成 kernel initramfs,使更改生效 update-initramfs –u 重启设备输入lsmod | grep nouveau验证驱动是否被禁用,如果没有输出则表明禁用成功
cd ~/dockerDeploy/driver
sudo chmod +x NVIDIA-Linux-x86_64-515.105.01.run
sudo ./NVIDIA-Linux-x86_64-515.105.01.run –no-opengl-files
# 重启后输入nvidia-smi可以看到显卡驱动情况
2、安装DOCKER
sudo cp ~/dockerDeploy/docker/ /opt/ -r
cd /opt/docker
sudo sh install.sh docker-24.0.2.tgz
# 输入sudo docker --version查看docker版本
3、安装nvidia-container-toolkit
cd ~/dockerDeploy/nvidia-container-toolkit
sudo ./install.sh
# 输入nvidia-container-toolkit -version查看版本
4、载入镜像
cd ~/dockerDeploy/images
sudo docker load -i triton.tar # 载入trition-server镜像
sudo docker load -i gtx2080.tar # 载入代码运行环境的镜像
载入镜像成功后,输入sudo docker images可以查看目前已有镜像
5、启动Triton镜像
sudo docker run -it --gpus all --rm -p8000:8000 -p8001:8001 -p8002:8002 -v/home/bvision/model_repository/models:/models -v/home/bvision/model_repository/plugins:/plugins --env LD_PRELOAD=/plugins/libmyplugins.so nvcr.io/nvidia/tritonserver:20.11-py3 tritonserver --model-repository=/models
首先将模型仓库model_repository文件夹拷贝进服务器中的/home/bvision/中,然后输入以上的命令。
以上为启动Triton的命令,这条命令中的-it代表使用一个可以交互的终端,-p代表端口的映射关系,宿主机的8000端口对应于容器中的8000端口,-v代表文件夹的映射,本机的/home/bvision/model_repository/models目录对应于容器中的/models目录,21.07-py3为Triton镜像的TAG。
6、启动代码运行镜像
sudo docker run -it --gpus all -v/home/bvision/XuZhou_3:/home --name env gtx2080:1.0 /bin/bash
通过以上命令能通过cuda11.4_gtx2080_tensorrt镜像创建出一个名为test的容器,使用以下命令可以创建出一个终端进入到容器中进行操作:
sudo docker exec -it env /bin/bash
此时宿主机-服务器的/home/bvision/run文件夹映射到容器中的/home目录,在容器终端里进入home目录即可看到宿主机/home/bvision/run文件夹中的所有文件,业务逻辑代码均在此处。
二、制作镜像
首先下载docker,建议版本高于19.0,低于此版本的docker要使用GPU较为麻烦,docker在19.03版本后就不需要安装nvidia-docker就能获得GPU的计算支持,仅需要安装安装nvidia-container-toolkit即可。
如果需要自定义各软件版本可以拉取一个基础镜像如ubuntu的镜像。
sudo docker pull ubuntu:18.04
#创建一个名为test的容器并进入,使用GPU设备,-it代表使用一个可以交互的终端
sudo docker run -it --gpus all --name test -v/home/bvision/test:/home /bin/bash
进入容器后按照正常的使用方法,配置好所需的环境,当配置好环境后可以通过以下命令导出:
sudo docker save -o xxx.tar 镜像名:tag
sudo docker export 容器CONTAINER ID > 导出地址文件名
# 与之相对应的导入命令为:
sudo docker load -i xxx.tar #已包含了tag信息
sudo docker import xxx.tar REPOSITORY:TAG
如果要像git一样保存多个版本的容器可以使用commit命令,这会将容器此时的状态转换为一个镜像存储。
sudo docker commit -m="描述信息" -a="作者" 容器ID 要创建的镜像名:[标签名]