不用科学上网的Vitis AI3.0 gpu docker镜像生成方法

本文转载自:ATM.ZDark的CSDN博客

vitis-AI最近更新了3.0版本,对很多深度学习模型作了适配,在docker环境方面对cpu和A卡的ROCm生态提供预编译镜像,但是CUDA生态下的docker镜像还是需要自己生成。本人因个人原因,无法在电脑上安装科学上网工具,但是vitis-AI的docker生成需要大量利用apt,python,github等工具进行下载,所以就有了这篇博客作为流程记录。能科学上网的不用看了,直接按官方手册的一键生成就行。本文以带Vitis-AI优化器的pytorch环境生成为例,tf类似

vitis-AI3.0官方手册

工作环境
Ubuntu20.04(官方手册上只有这个)
docker23.0.1和nvidia-docker2.12.0(网上这方面资料多,就不展开讲了)
Vitis-AI3.0(2023.4.1在官方github上git下来的源代码)

官方代码的docker镜像生成流程
1.pull一个nvidia提供的cuda镜像
2.安装基础组件 (位于/Vitis-AI/docker/common/install_base.sh文件中
3.安装conda环境 (位于/Vitis-AI/docker/common/install_conda.sh文件中
4.安装指定Vitis-AI工具环境 (位于/Vitis-AI/docker/common/install_opt_pytorch.sh文件中

不使用科学工具的流程介绍
cuda镜像的内部修改

1.获取cuda镜像

sudo docker pull nvidia/cuda:11.3.1-cudnn8-runtime-ubuntu20.04

2.将镜像放入容器中打开,类似修改apt下载源
首先进行文件准备
编辑一个名为source.list的文件,内容如下

deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse

顺便在外面下载几个后续用得到的大文件一起挂载进去,后面直接用现成的,不然在指令过程中大文件下载卡住了就麻掉了

下载后改名为conda-channel.tar.gz
下载后改名为miniconda.sh

将上述三个文件放到Vitis-AI目录中一起挂载到docker镜像中去

3.用容器打开docker镜像

sudo docker run -v /home/Vitis-AI:/workspace -it 27caf6be35bd /bin/bash

4.将准备好的文件从挂载文件夹复制到docker容器中

cp /workspace/source.list /etc/apt
cp /workspace/conda-channel.tar.gz /home
cp /workspace/miniconda.sh /home

5.退出容器

exit

6.将修改后的docker容器保存为镜像并导出为tar文件

sudo docker commit 50684042ac28
sudo docker save -o ./vitis-ai-gpu_3.0.tar ff6de0ea4af2

7.删除前面生成的所有容器和镜像(先删除容器,再按从后到前的生成顺序删除镜像

sudo docker rm 容器ID
sudo docker rmi 镜像ID

8.将tar文件导入并把名字换成之前pull的cuda镜像的名字,就成功完成了apt换源并将需要的大文件放入了镜像中,然后官方的docker生成代码会找到这个名字的cuda镜像进行后续处理

sudo docker load -i ./vitis-ai-gpu_3.0.tar
sudo docker tag ff6de0ea4af2 nvidia/cuda:11.3.1-cudnn8-runtime-ubuntu20.04

官方docker生成代码修改

1.python下载源修改
在Vitis-AI/docker/common/install_base.sh文件第286行添加

pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

在Vitis-AI/docker/common/install_opt_pytorch.sh文件第41行添加

&& pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple \

2.github下载链接修改
如果愿意翻官方给的docker代码,可以将所有github.com换为hub.fastgit.org
(或者其他好用的下载源)。(Vitis-AI3.0把docker文件拆分成了若干个,虽然在安装方面不用强制安装其他不需要的工具了,但是代码翻起来比2.5的麻烦多了,找来找去的。这里列出来几个需要改的
Vitis-AI/docker/common/install_base.sh文件305行
Vitis-AI/docker/common/install_base.sh文件328行

3.将几个大文件的下载指令改为复制指令
修改Vitis-AI/docker/common/install_opt_pytorch.sh文件第8行

修改前
wget -O conda-channel.tar.gz --progress=dot:mega ${VAI_CONDA_CHANNEL}; \
修改后
cp /home/conda-channel.tar.gz ./; \

修改Vitis-AI/docker/common/install_conda.sh文件(这里不知道为什么为指令输入gpu但是他还是进了rocm的if支线中,所以我干脆按照Vitis-AI2.5的docker文件格式作了整体修改)

修改前
#!/bin/bash

set -ex
if [[ ${DOCKER_TYPE} =~ .*'rocm'* && ${TARGET_FRAMEWORK} =~ .*"pytorch" ]]; then
ln -s /opt/conda $VAI_ROOT/conda;

else

export HOME=~vitis-ai-user
if [[ -d "/root/.local" ]]; then
sudo chmod -R 777 /root/.local
fi
sudo chmod 777 /root /root/.local /root/.local/bin || true

cd /tmp \
&& wget --progress=dot:mega https://github.com/conda-forge/miniforge/releases/download/4.10.3-5/Mamb... -O miniconda.sh \
&& /bin/bash ./miniconda.sh -b -p $VAI_ROOT/conda \
&& . $VAI_ROOT/conda/etc/profile.d/conda.sh \
&& conda install -y conda-build \
&& rm -fr /tmp/miniconda.sh \
&& /$VAI_ROOT/conda/bin/conda clean -y --force-pkgs-dirs
fi

echo ". $VAI_ROOT/conda/etc/profile.d/conda.sh" >> ~vitis-ai-user/.bashrc
sudo ln -s $VAI_ROOT/conda/etc/profile.d/conda.sh /etc/profile.d/conda.sh

修改后
#!/bin/bash

set -ex

export HOME=~vitis-ai-user
if [[ -d "/root/.local" ]]; then
sudo chmod -R 777 /root/.local
fi
sudo chmod 777 /root /root/.local /root/.local/bin || true

cd /tmp \
&& sudo cp /home/miniconda.sh ./ \
&& sudo chmod +777 ./miniconda.sh \
&& /bin/bash ./miniconda.sh -b -p $VAI_ROOT/conda \
&& . $VAI_ROOT/conda/etc/profile.d/conda.sh \
&& conda install -y conda-build \
&& sudo rm -fr /tmp/miniconda.sh \
&& /$VAI_ROOT/conda/bin/conda clean -y --force-pkgs-dirs

echo ". $VAI_ROOT/conda/etc/profile.d/conda.sh" >> ~vitis-ai-user/.bashrc
sudo ln -s $VAI_ROOT/conda/etc/profile.d/conda.sh /etc/profile.d/conda.sh

生成docker
进入Vitis-AI/docker文件夹(这里根据自己需要的环境修改参数,参考Vitis3.0的官方文档修改即可

sudo ./docker_build.sh -t gpu -f opt_pytorch

最新文章

最新文章