故事背景
VItis-AI更新了2.0,增加了对30系显卡的支持,但是VCK5000-es1卡却并不在VItis-AI2.0的支持列表中,这一度让我非常恼火。因为自己买的就是30系显卡。
问题分析
Vitis-1.4.1分支在build docker镜像时,使用的是CUDA10作为基础镜像来编译的。并且使用Pytorch1.4.0版本。而Pytorch有一个特点,就是对于30系显卡,如果Pytorch的whl编译版本不支持cu11x版本的话,那么训练框架是无法跑起来的。那么就可以利用这个特性,升级Torch的版本,完成30系显卡的调用。
解决方法
启动环境:
conda activate vitis-ai-pytorch
pip3 install torch==1.8.2+cu111 torchvision==0.9.2+cu111 torchaudio==0.8.2 -f https://download.pytorch.org/whl/lts/1.8/torch_lts.html
注意torch版本必须和torchvision、audio版本对应,否则会出现以下报错。
File "/opt/vitis_ai/conda/envs/vitis-ai-pytorch/lib/python3.6/site-packages/torchvision/datasets/utils.py", line 11, in <module>
from torch._six import PY3
ImportError: cannot import name 'PY3'
验证
运行一个公开的repo使用Vitis-AI的pytorch训练。
https://github.com/DeepYNet/KV260_Vitis_AI_examples
按照README.md中的命令执行,发现30系显卡可以被调用而且训练成功。
可能存在的问题
目前还未遇到,但可以预见的是pytorch版本和numpy(并没有更改)的依赖关系,和后面量化中可能遇到不向前兼容的问题。如果有问题可以在评论区指出,我们一起解决。