Jetson Orin NX 安装 PyTorch 踩坑总结
环境信息
- 设备:NVIDIA Jetson Orin NX
- JetPack:6.0(R36.3.0)
- CUDA:12.2
- Python:3.10
- 架构:aarch64(ARM)
核心问题:Jetson 不能用官方 pip 源
# ❌ 这样装不了,官方源只有 x86_64
pip install torch
pip install torch==2.5.1 --index-url https://download.pytorch.org/whl/cu121# ✅ 正确方式:用 NVIDIA 官方为 Jetson 编译的 wheel
# 来源:https://forums.developer.nvidia.com/t/pytorch-for-jetson/72048
原因是 Jetson 是 ARM 架构,PyTorch 官方 pip 源不提供 aarch64 版本。
踩坑记录
1. CUDA Toolkit 没装,只有驱动
nvidia-smi 显示 CUDA 12.2 是驱动支持的最高版本,不代表 Toolkit 装了。
# 症状
libcudart.so.12: cannot open shared object file# 解决
sudo apt install cuda-toolkit-12-2
echo 'export PATH=/usr/local/cuda-12.2/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-12.2/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc
2. torchaudio 没有 Jetson 官方 wheel
NVIDIA 官方页面只提供了 torch,没有 torchaudio。
不推荐从源码编译失败,失败率太高了。
3. 内存不足被 OOM Killer 杀掉
同时加载多个模型导致内存耗尽:
# 症状
Killed解决方式:减少同时加载的模型数量,禁用桌面节省内存:
```bash
sudo systemctl set-default multi-user.target
4. 官方PyTorch 是"万能版",Jetson 版是"定制版",占用大小差距大
普通 Linux(x86)的 PyTorch:
torch-2.x.x.whl ~2G├── CUDA 11.x 库├── CUDA 12.x 库├── cuDNN 库├── x86 优化指令集(AVX、AVX2、AVX512)└── 各种平台的预编译二进制
为了兼容各种 CUDA 版本和硬件,把所有东西都打包进去了。
Jetson 的 PyTorch:
torch-2.4.0-jetson.whl ~200~300MB├── 只针对 aarch64├── 只针对 CUDA 12.2(Jetson 固定版本)└── 只针对 sm_87(Orin 的 GPU 架构)
NVIDIA 专门为 Jetson 编译,目标平台固定,不需要兼容其他版本,所以裁剪掉了大量无关内容。
简单说就是:官方 PyTorch 是"万能版",Jetson 版是"定制版",定制版体积自然小很多。
最终正确安装方式
-
去 NVIDIA 官方论坛获取 wheel:
https://forums.developer.nvidia.com/t/pytorch-for-jetson/72048 -
下载对应 JetPack 版本的 wheel(注意 cp310/cp311 对应 Python 版本)
-
本地安装:
pip install torch-*.whl -
验证:
python -c "import torch; print(torch.__version__); print(torch.cuda.is_available())"
经验总结
| 问题 | 原因 | 解决 |
|---|---|---|
| pip 找不到 torch | Jetson 是 ARM,官方源无 aarch64 | 用 NVIDIA 论坛的 wheel |
| libcudart 找不到 | 只装了驱动没装 Toolkit | apt install cuda-toolkit-12-2 |
| libcudnn 找不到 | cuDNN 未安装 | apt install libcudnn8 |
| torchaudio 无法安装 | 无官方 wheel,源码编译失败 | 从源码用 Unix Makefiles 编译 |
| Killed | 内存不足 OOM | 减少模型数量,禁用桌面 |
