NVIDIA JETSON XAVIER NX (四)安装Pytorch和torchvision

  • Post author:
  • Post category:其他


可选择在NX上创建新python环境进行安装,避免和其他工程环境发生冲突,具体虚拟环境操作步骤可见

Python创建虚拟环境



下面就开始安装pytorch的愉快之旅吧!


1. 安装相关依赖环境

# 先把能更新的都更新了
sudo apt-get update
sudo apt-get upgrade
# 装上我们需要的环境包
# 最好使用pip3,不然出错了不好排查
sudo apt-get install python3-pip libopenblas-base libopenmpi-dev
pip3 install Cython


2. 下载pytorch


由于NX使用的是aarch64架构的cpu,直接官网安装是不行的,那么就得求助NVIDIA论坛了:

Pytorch for Jetson


论坛中给出了详细的安装步骤,按部就班进行就OK了。

在这里插入图片描述

这里下载可能会很慢,附上我下载好的pytorch v1.7~v1.9版本资源,可自取:

Nvidia Jetson系列的arm编译的torch.whl



3. 安装


当下载好pytorch的whl文件之后,直接用在下载目录用命令安装

# 这里示例是v1.8.0版本
pip3 install numpy torch-1.8.0-cp36-cp36m-linux_aarch64.whl

这里需要注意的是,默认下载的numpy是最新版本(我的是1.19.5),最新版本的numpy会出现指令不兼容的问题,所以会导致非法指令的问题:

在这里插入图片描述

这样我们最好将numpy的版本降级,这样就能解决这个问题

# 本人尝试了v1.19.3版本可用
pip install numpy==1.19.3

安装好了pytorch之后,就是对应的视觉库torchvision了,我们在论坛上可以找到版本匹配表:

在这里插入图片描述

还是再安装对应的依赖库:

sudo apt-get install libjpeg-dev zlib1g-dev libpython3-dev libavcodec-dev libavformat-dev libswscale-dev

将github上大佬写好的torchvision库clone我们本地来

入口:

torchvision

# torch1.8--torchvision0.9
git clone --branch v0.9.0 https://github.com/pytorch/vision torchvision
# 这里由于网络不稳等问题,我使用gitee进行clone
git clone --branch v0.9.0 https://gitee.com/rchen1997/torchvision torchvision

下载结束后,进入torchvision文件内进行安装:

cd torchvision
export BUILD_VERSION=0.x.0  # where 0.x.0 is the torchvision version  
python3 setup.py install --user
cd ../  # attempting to load torchvision from build dir will result in import error

这里可能会出现版本匹配或者不能加载 custom C++ ops的问题:

在这里插入图片描述

这是因为我们需要利用build中C++编译的文件,而现在这种安装方式可能会出现路径不一致的问题,所以我们需要将build下的torchvision文件拷贝到我们安装环境的库路径中,否则会出现import error。具体操作为:

(1)找到你python环境的所在位置,进入lib/python3.6/site-packages/中;

(2)进入上面安装好的torchvision/build/lib.linux-aarch64-3.6/torchvision,确认这里面是否有我们需要的ops文件夹和version.py版本信息,然后拷贝到步骤(1)中的路径即可。


4. 验证


拷贝代码进行验证:

import torch
import torchvision
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))
print(torchvision.__version__)

输出结果如下就安装成功,丹炉造好了!!!

在这里插入图片描述



版权声明:本文为qq_21843433原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。