4、NVIDIA Jetson平台详解:Jetson Nano/Orin/TX2的硬件规格、JetPack SDK安装、CUDA环境配置
做边缘端模型部署,绕不开NVIDIA Jetson系列。说实话,这几年我经手的项目里,Jetson占了六成以上。从早期的TX2,到后来性价比极高的Nano,再到现在的Orin,每一代都有它的脾气。
今天咱们就把这三款主流型号掰开揉碎聊一聊。硬件规格、SDK安装、CUDA环境配置,一条龙讲清楚。
4.1 三款主流Jetson硬件规格对比
先看一张表,心里有个底。
| 参数 | Jetson Nano (4GB) | Jetson TX2 | Jetson Orin NX (16GB) |
|---|---|---|---|
| GPU | 128核 Maxwell | 256核 Pascal | 1024核 Ampere |
| CPU | 4核 Cortex-A57 | 4核 A57 + 2核 Denver2 | 8核 Cortex-A78AE |
| 内存 | 4GB LPDDR4 | 8GB LPDDR4 | 16GB LPDDR5 |
| AI算力 | 0.5 TOPS (FP16) | 1.3 TOPS (FP16) | 70 TOPS (INT8) |
| 功耗 | 5W / 10W | 7.5W / 15W | 10W ~ 25W |
| 存储 | MicroSD / 16GB eMMC | 32GB eMMC | 64GB eMMC |
| 视频编码 | 4K30 H.264/H.265 | 4K60 H.264/H.265 | 8K30 H.264/H.265 |
这张表我建议你收藏。选型的时候,直接对着看就行。
Jetson Nano:入门级首选。我最早用它跑过MobileNetV3,帧率能到30fps以上。缺点也很明显——内存只有4GB,稍微大点的模型就爆显存。适合做原型验证,或者对成本敏感的场景。
Jetson TX2:老将了。我2019年做巡检机器人项目用的就是它。双CPU架构有点意思,Denver2核心在特定场景下能提性能。但说实话,现在看算力有点跟不上,跑YOLOv5s都费劲。
Jetson Orin NX:这才是现在的王牌。70 TOPS的INT8算力,什么概念?跑YOLOv8x都能实时。我去年做智慧零售项目,直接用它做多路视频分析,稳得很。
选型建议:
- 预算有限、做轻量模型 → Nano
- 需要稳定、有存量项目 → TX2
- 追求性能、做复杂模型 → Orin NX
4.2 JetPack SDK安装——别踩这些坑
JetPack是NVIDIA为Jetson定制的SDK。里面包含了Linux系统、CUDA、cuDNN、TensorRT、OpenCV等全套工具链。
安装方式有两种:SDK Manager图形化安装,或者命令行刷机。我个人习惯用SDK Manager,省心。
4.2.1 准备工作
- 一台Ubuntu主机(18.04或20.04,我推荐20.04)
- Jetson开发板 + 原装电源
- MicroSD卡(至少64GB,Class 10以上)
- USB数据线(用于连接主机和Jetson)
注意:我曾经因为用了劣质USB线,刷机时反复断连,折腾了一下午。后来换了根带屏蔽的线,一次成功。别省这根线的钱。
4.2.2 安装步骤
- 从NVIDIA官网下载SDK Manager(需要注册账号)
- 将Jetson板子进入恢复模式:
- 按住RECOVERY键不松
- 按一下RESET键
- 保持2秒后松开RECOVERY键
- 用USB线连接Jetson和主机
- 打开SDK Manager,选择对应的Jetson型号和JetPack版本
- 勾选需要安装的组件(建议全选)
- 点击安装,等30分钟到1小时
嗯,这里要注意:安装过程中会提示你设置Jetson的用户名和密码。默认是nvidia/nvidia,我建议改成自己的,安全一些。
4.2.3 验证安装
刷完机后,连上Jetson的显示器,或者通过SSH登录。跑几个命令确认一下:
# 查看系统版本
cat /etc/nv_tegra_release
# 查看JetPack版本
apt list --installed | grep nvidia-jetpack
# 查看CUDA版本
nvcc --version
# 查看GPU信息
tegrastats
如果能看到CUDA版本号,说明安装成功了。我习惯先跑一个tegrastats,看看GPU温度和频率,心里有个底。
4.3 CUDA环境配置——让GPU跑起来
JetPack安装时已经自带了CUDA,但环境变量需要手动配一下。不然你编译程序时,系统找不到nvcc编译器。
4.3.1 配置环境变量
编辑~/.bashrc文件:
sudo nano ~/.bashrc
在文件末尾添加:
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
export CUDA_HOME=/usr/local/cuda
保存后执行:
source ~/.bashrc
然后验证:
nvcc -V
如果显示CUDA版本号,比如Cuda compilation tools, release 10.2, V10.2.89,那就对了。
小技巧:我习惯把这三行环境变量也加到/etc/profile里,这样所有用户都能用。特别是团队协作的项目,省得每个人都要配一遍。
4.3.2 编译一个CUDA示例
JetPack自带了CUDA示例代码,在/usr/local/cuda/samples目录下。咱们编译一个最简单的deviceQuery试试:
cd /usr/local/cuda/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery
如果输出类似下面这样,说明CUDA环境完全OK:
Detected 1 CUDA Capable device(s)
Device 0: "NVIDIA Tegra X2"
CUDA Capability Major/Minor version number: 6.2
Total amount of global memory: 7852 MBytes
(2) Multiprocessors, (128) CUDA Cores/MP: 256 CUDA Cores
我第一次在TX2上跑这个命令时,看到256个CUDA核心,心里还挺激动。虽然现在看不算多,但当时觉得「终于能在嵌入式上玩CUDA了」。
4.3.3 常见问题排查
- nvcc找不到:检查环境变量是否配置正确,或者CUDA是否真的安装了
- 编译报错:多半是权限问题,用
sudo make试试 - 运行时报错:检查GPU驱动是否加载,用
lsmod | grep nvidia查看
避坑指南:我曾经在Orin上遇到一个怪问题——CUDA程序编译通过,但运行时提示「CUDA driver version is insufficient」。折腾了半天,发现是JetPack版本和CUDA版本不匹配。后来重新刷了对应版本的JetPack才解决。所以,刷机时一定要选对版本号。
4.4 小结
这一章咱们把Jetson三款主流型号的硬件规格捋了一遍,也走通了JetPack安装和CUDA配置的全流程。说白了,Jetson平台的核心优势就是「嵌入式设备 + 完整CUDA生态」。你想想看,能在巴掌大的板子上跑GPU加速的深度学习模型,这在几年前是不敢想的。
下一章,咱们会深入TensorRT的安装和模型优化。到时候我会分享一些实际项目中的调优经验,比如怎么把模型从FP32压缩到INT8,精度损失控制在1%以内。嗯,那才是真正有意思的部分。