背景
在Orin上进行Pytorch以及Torchvision的部署, 不能够直接通过pip3 Install
命令进行部署安装,该命令默认是使用X86的安装版本, 我们需要使用nvidia的cuda架构, 并且orin是arm架构的芯片, 所以, 应当通过英伟达官方发布的版本进行安装, 当然也可以使用源码进行pytorch编译。
安装Pytorch
pytorch的版本和python的版本以及cuda的版本是严密挂钩的, 但是在orin上, 我们可以通过查询jetpack版本号, 就可以直接下载安装nvidia编译好的现成的whl文件。
- 通过jtop查询jetpack的版本。如图, 我们的jetpack版本是5.0.1。
- 英伟达的pytorch文件下载地址:
https://developer.download.nvidia.com/compute/redist/jp/v$JP_VERSION/pytorch/
。
其中,$JP_VERSION
变量是我们jetpack的版本, 我的安装地址如下:https://developer.download.nvidia.cn/compute/redist/jp/v50/pytorch/
, 访问结果如下图所示,
我选择torch-1.13.0a0+340c4120.nv22.06-cp38-cp38-linux_aarch64.whl
文件,这里面有个非常坑的问题, 就是我明明下载的是1.13的pytorch版本, 但实际安装之后, 它是1.12的版本,英伟达这个低级的错误,令我后续安装torchvision浪费了很多时间。
安装命令:sudo pip3 install torch-1.13.0a0+340c4120.nv22.06-cp38-cp38-linux_aarch64.whl
安装Torchvision
- torchvision的版本是需要与pytorch相对应才能够正确编译。https://github.com/pytorch/vision
由于我们安装的pytorch版本是1.12的, 所以,torchvision需要下载0.13.0版本。
export BUILD_VERSION=0.13.0 sudo python3 setup.py install --user
安装成功的测试脚本
import torch
print(torch.__version__)
print('CUDA available: ' + str(torch.cuda.is_available()))
print('cuDNN version: ' + str(torch.backends.cudnn.version()))
a = torch.cuda.FloatTensor(2).zero_()
print('Tensor a = ' + str(a))
b = torch.randn(2).cuda()
print('Tensor b = ' + str(b))
c = a + b
print('Tensor c = ' + str(c))
import torchvision
print(torchvision.__version__)
测试结果如下图所示:
部署MMTracking
mmtracking需要依赖mmcv以及mmdetection, 所以, 需要先部署安装mmcv以及mmdetection。具体的教程, 可以参考以下官方链接: https://mmtracking.readthedocs.io/zh_CN/latest/install.html#id2
git clone https://github.com/open-mmlab/mmcv.git
cd mmcv
MMCV_WITH_OPS=1 pip install -e . # package mmcv-full will be installed after this step
cd ..
git clone https://github.com/open-mmlab/mmdetection.git
cd mmdetection
pip install -r requirements/build.txt
pip install -v -e .
git clone https://github.com/open-mmlab/mmtracking.git
cd mmtracking
pip install -r requirements/build.txt
pip install -v -e .