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 安装步骤

  1. 从NVIDIA官网下载SDK Manager(需要注册账号)
  2. 将Jetson板子进入恢复模式:
    • 按住RECOVERY键不松
    • 按一下RESET键
    • 保持2秒后松开RECOVERY键
  3. 用USB线连接Jetson和主机
  4. 打开SDK Manager,选择对应的Jetson型号和JetPack版本
  5. 勾选需要安装的组件(建议全选)
  6. 点击安装,等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%以内。嗯,那才是真正有意思的部分。