This post is outdated and may no longer reflect current best practices.
写在前面
ARM 架构下的 torch 安装比较烦人,不是麻烦,而是烦人。
网络上很多教程虽然写着 Jetson 的 torch 安装,但基本都是用 PyPI 或官方 stable 的通用 whl 安装。这些安装方式本身没有什么问题,只是通常不适用于 Jetson 上的 CUDA 环境。Jetson 上如果希望 torch 能调用 CUDA,更稳妥的方式是使用 NVIDIA 提供的 PyTorch for Jetson wheel,或者自己从源码编译。
torchvision 也类似。它需要和当前安装的 Jetson CUDA 版 torch 匹配,并从源码编译,才能正确链接到当前环境。
这个方法并不是我原创。如果你碰巧没有找到正确的安装方法,但看到了这篇文章,希望能够节约你的生命。
Doesn't work
XINFINFZ 在文章 nvidia jetson nano 如何安装 cuda 版的 pytorch 中使用了别人预编译好的 torch 轮子:Qengineering/PyTorch-Jetson-Nano。在项目页面中可以看到操作系统和对应的 torch / torchvision 版本,轮子需要从 Google Drive 下载。
我用 pip 在 conda 虚拟环境中安装后,出现了不能调用 CUDA 的问题。
这篇文章也提到了自行编译的方法,我没有尝试。不过理论上这是可行的,因为后面能跑通的方法,本质上也需要自行编译 torchvision。
It works
jupiter 在博客 Jetson 系列开发板(NX / AGX / Nano)搭建 pytorch-gpu 环境 中的方法是有效的。
需要注意的是:torch 和 torchvision 必须版本匹配,参考 PyTorch / torchvision 的兼容关系。例如,torch 1.13.x 通常对应 torchvision 0.14.x。
我安装的是 torch 1.13.0 和 torchvision 0.14.0。
GPU 版本的 torch 可以使用 NVIDIA 官方提供的 wheel:
不过这个页面主要提供 torch,没有直接提供匹配的 torchvision。所以,我们需要自行编译 torchvision。
git clone https://github.com/pytorch/vision.git vision-0.14.0
cd vision-0.14.0
git checkout v0.14.0
export BUILD_VERSION=0.14.0
python -m pip install .
这里需要特别注意:git clone https://github.com/pytorch/vision.git vision-0.14.0 只是把目录名改成了 vision-0.14.0,并不会自动切换到 v0.14.0 版本。因此必须执行:
git checkout v0.14.0
如果仍然习惯使用旧写法,也可以执行:
python setup.py install
不过现在更推荐使用:
python -m pip install .
等待安装完成后,torchvision 即可使用。
测试:
>>> import torch
>>> torch.__version__
'1.13.0'
>>> torch.cuda.is_available()
True
>>> import torchvision
>>> torchvision.__version__
'0.14.0'
需要注意,torch.cuda.is_available() == True 只能说明 torch 能够调用 CUDA,不代表 torchvision 的 C++ / CUDA 扩展一定全部正常。因此最好也确认 torchvision 能正常导入,并检查版本是否和 torch 匹配。
参考文章
[1] Jetson 系列开发板(NX / AGX / Nano)搭建 pytorch-gpu 环境
评论