在 NVIDIA Jetson 设备上搭建深度学习环境,首要挑战通常是正确配置 PyTorch GPU 版本。许多习惯了 x86 架构的开发者会想当然地运行 pip install torch 并加上 cu121 后缀,以为万事大吉。然而现实很快会给出教训:Jetson 采用 ARM64 架构(aarch64),其底层 GPU 依赖 Tegra 芯片的专属驱动,与 PC 的 CUDA 生态完全不同。线上源下载时常因网络波动中途中断,安装后往往只会得到一个 CPU 版 PyTorch,白白浪费大量时间。在经历多次失败后,我终于总结出一套 100% 成功的离线配置与编译流程,现在记录下来,帮助大家避开这些坑。

核心内容 / 步骤
在 Jetson 上配置环境,最核心的原则只有一条:严格匹配 JetPack 版本,切勿自作聪明。
1. 摸清底细:确认 JetPack 与 L4T 版本
首先需要了解手头 Jetson 的具体配置。在终端执行以下命令:
Bash
cat /etc/nv_tegra_release
输出中如果显示 R36 (release)...,说明是最新的 JetPack 6.x 系列(基于 Ubuntu 22.04、Python 3.10,默认支持 CUDA 12.2)。后续所有操作必须围绕这个版本来进行。
2. 环境隔离:创建虚拟环境
切记不要直接在系统环境中安装深度学习库,一旦污染便很难清理。建议使用 venv 创建隔离环境:
Bash
python3 -m venv .venv
source .venv/bin/activate
3. 核心安装:使用 wget 离线下载并安装 PyTorch
官方提供了一个专门为 Jetson 打包的 PyTorch 索引源。可以直接用 pip 安装,但需要增大超时时间并信任域名:
pip install torch torchvision torchaudio --index-url https://pypi.jetson-ai-lab.dev/jp6/cu122 --default-timeout=2000 --trusted-host pypi.jetson-ai-lab.dev
不过线上网络环境往往不稳定,pip 下载超过 1GB 的大包时经常中断。遇到这种情况,建议换成 wget -c(支持断点续传)方式,将 NVIDIA 官方编译好的 wheel 文件下载到本地。以 PyTorch 2.5.0 为例:
Bash
# 下载专属 wheel 包
wget -c https://developer.download.nvidia.com/compute/redist/jp/v61/pytorch/torch-2.5.0a0+872d972e41.nv24.08.17622132-cp310-cp310-linux_aarch64.whl
# 本地离线安装
pip install ./torch-2.5.0a0+872d972e41.nv24.08.17622132-cp310-cp310-linux_aarch64.whl
4. 特殊指令:源码编译 Torchvision
这个步骤最容易卡住。在 Jetson 上,Torchvision 绝不能随意安装通用包,必须从源码编译,确保其 C++ 扩展能与之前安装的专属 PyTorch 完美链接。PyTorch 2.5.0 对应的 Torchvision 版本是 v0.20.0。首先安装系统所需的基本图像处理库:
Bash
sudo apt-get update
sudo apt-get install -y libjpeg-dev zlib1g-dev libpython3-dev libopenblas-dev liba vcodec-dev liba vformat-dev libswscale-dev
然后拉取对应版本的源码,指定版本号,再进行编译安装(耗时大约 5–15 分钟):
Bash
git clone --branch v0.20.0 https://github.com/pytorch/vision torchvision
cd torchvision
export BUILD_VERSION=0.20.0
python setup.py install
5. 验证安装
进入 Python 交互环境,运行以下验证代码:
Python
import torch
import torchvision
print("PyTorch 版本:", torch.__version__)
print("Torchvision 版本:", torchvision.__version__)
print("GPU 是否可用:", torch.cuda.is_a vailable())
if torch.cuda.is_a vailable():
print("显卡名称:", torch.cuda.get_device_name(0))
如果看到 True 以及具体的显卡型号,恭喜你,配置成功。
遇到的问题与解决方法
-
坑一:安装后只有 CPU 版本(
is_a vailable()返回 False)- 原因:习惯性地直接执行
pip install torch,默认 PyPI 检测到 ARM64 架构后自动提供了纯 CPU 包。 - 解决:果断使用
pip uninstall彻底清除,然后前往 NVIDIA 开发者网站下载针对 L4T 编译的专属.whl文件。
- 原因:习惯性地直接执行
-
坑二:下载时频繁报错
[SSL: UNEXPECTED_EOF_WHILE_READING]- 原因:包体积超过 1GB,网络稍有波动 pip 就会中断。
- 解决:改用
wget -c实现断点续传,下载到本地后再用 pip 安装。
-
坑三:Torchvision 找不到匹配的 GPU 版本
- 原因:边缘设备的预编译生态不完善,版本绑定异常严格。
- 解决:查阅官方版本对应表,下载对应版本的源码,通过
export BUILD_VERSION=x.xx.x注入版本号后进行本地编译。
收获与总结
- 硬件架构决定软件生态:边缘计算设备(ARM)与常规 PC(x86)是完全不同的逻辑,PC 端的经验在 Jetson 上往往直接失效。
- 对底层依赖保持敬畏:涉及计算机视觉任务时,Torchvision 的底层强依赖系统 C++ 图像处理库(如
libjpeg-dev),编译前务必提前安装好。 - 稳字当头:面对动辄几个 GB 的环境包,采用
wget -c离线下载 + 本地源码编译的方式,虽然看似繁琐,但在网络状况不稳定的情况下,往往是最省时间的终极解决方案。
