NVIDIA Jetson实战笔记
概述
Orin
接触过的一款一体机,长这样:
三个按钮,分别是Power键、Force Recovery键和Reset键。
Orin是NVIDIA Jetson家族中的新一代硬件平台系列的名字(如Jetson Orin Nano、Orin NX、AGX Orin、TX2等)。
相比老的Xavier/Nano系列:
- 更强的GPU(Ampere架构,更多CUDA核心和Tensor Core)
- 更高的CPU性能(ARM Cortex-A78AE)
- 支持更大内存和更高带宽
- 更适合边缘AI推理、机器人、计算机视觉等高算力需求
JetPack
NVIDIA官方为Jetson系列开发板提供的SDK,可理解为一个系统发行版+驱动+AI SDK集合。基于Ubuntu LTS(通常是ARM64版本)定制的Linux系统镜像,集成:
- NVIDIA L4T(Linux for Tegra)内核和驱动;
- CUDA、cuDNN、TensorRT、VPI、VisionWorks等加速库;
- NVIDIA Container Runtime(支持Docker GPU加速);
- 示例代码、工具链等
作用
- 为Jetson提供开箱即用的AI开发环境
- 保证驱动、CUDA、TensorRT等的版本匹配
- 以官方支持的方式升级系统和SDK
注:不同Orin机型需要不同版本的JetPack(驱动要匹配)。
jetson-containers
NVIDIA工程师Dusty-NV维护的开源Docker镜像和容器构建工具集,专门为Jetson平台提供各种AI/ML框架的容器版本(如PyTorch、TensorFlow、vLLM、DeepStream、OpenCV with CUDA等),并确保它们和JetPack里的CUDA/TensorRT兼容。
功能
- 提供大量预构建镜像,直接
docker run
即可用; - 提供自动化构建脚本,生成适配Jetson的镜像;
- 自动挂载GPU加速和硬件编解码,如CSI摄像头、V4L2等;
- 解决ARM64平台构建AI框架可能存在的问题。
关系:
- 依赖JetPack:容器里的CUDA/cuDNN/TensorRT要和宿主机JetPack版本对应;
- 适配Jetson系列硬件;
- 比官方NGC容器更贴近Jetson的实际使用(ARM64+硬件加速)
源码目录
直接贴图吧,根目录下有个packages文件夹,基本上最核心功能都在这里面;子目录命名,见名知意;其中有关llm子目录:
点击:
可见涵盖目前最主流的模型部署(推理、微调等)框架,如Ollama、LiteLLM、llama.cpp、SGLang、Unsloth。
每个子目录最核心的文件就是Dockerfile,以及围绕构建Docker镜像的脚本,如install.sh
、build.sh
、test.sh
。
在vLLM实战部署Qwen2.5、Qwen3模型文章里,便是使用Dusty-NV提供的vLLM镜像:docker pull dustynv/vllm:0.7.4-r36.4.0-cu128-24.04
。
jetson-stats
jetson-stats
,一个功能强大的开源Python工具集,专为Jetson系列设计。不仅仅是一个监控工具,更是一个集成多种实用功能的系统管理套件。
核心工具为jtop
,类似于Linux下的htop
,但专门针对Jetson,能显示:
- CPU/GPU使用率、内存/SWAP、温度
- 各类硬件加速单元状态(NVENC、NVDEC、PVA等)
- JetPack/CUDA版本/系统信息
作用
- 快速诊断性能瓶颈
- 查看硬件是否在跑满/是否过热降频
- 开发调优时的常用工具
安装
pip install jetson-stats
,报错:
GPT(具体来说是Qwen)给出的分析:
从setuptools 77.0+版本开始,使用License类型的PyPI分类器(classifiers)来声明许可证的方式已被弃用,并被SPDX许可证表达式取代。如果你使用的setuptools版本较新(≥77.0),而你要安装的包
jetson-stats
仍在setup.py
或setup.cfg
中通过classifiers声明许可证(例如License :: OSI Approved :: GNU AGPLv3+
),但没有在license字段中提供SPDX表达式,setuptools会抛出警告,并在某些配置下将此警告升级为错误,导致安装失败。
解决方法:降级setuptools
,执行pip install 'setuptools<77.0'
:
成功按照,重试还是报错:
报错关键词:TypeError: canonicalize_version() got an unexpected keyword argument 'strip_trailing_zero'
。
Qwen分析:
这个错误不是因为许可证分类器的问题,而是
setuptools
与distutils
兼容层之间的版本不匹配导致的。
解决方法:彻底卸载并重新安装setuptools。
# 多次运行以确保彻底卸载
pip uninstall setuptools -y
pip uninstall setuptools -y# 重新安装一个稳定兼容的旧版本(如 69.0.3)
pip install setuptools==69.0.3
由于上面提示安装版本为:<77.0
,且成功安装76.1.0
;于是执行pip install setuptools==76.1.0
,但还是有TypeError: canonicalize_version() got an unexpected keyword argument 'strip_trailing_zero'
报错。
于是卸载,安装pip install setuptools==69.0.3
。
选择69.0.3,因为它在77.0之前非常稳定,且广泛兼容旧项目。
成功安装:
命令
包括:
jtop
:可视化系统监控器,实时查看CPU(每个核心)、GPU、内存(RAM)、交换空间(Swap)、磁盘I/O、网络I/O、温度(多个传感器)、电源状态、运行进程、风扇转速(如果支持)等。支持多种视图(ALL,GPU,CPU,MEM,ENG,CTRL,INFO),可记录数据,甚至控制风扇和电源模式(通过CTRL界面)。
jetson_release
:快速获取关键硬件和软件版本信息,包括:- Jetson型号(如Orin)
- L4T:Linux for Tegra,版本号
- 内核版本
- CUDA版本
- cuDNN版本
- TensorRT版本
- Vulkan版本
- OpenCV版本(如果通过
jetson-stats
安装或检测到) - 系统架构(aarch64)
- JP(JetPack)版本号(如果可检测)
jetson_swap
:管理和监控ZRAM交换空间。用途:- 查看状态:
jetson_swap
:显示当前ZRAM交换空间的大小、已用量、压缩比、压缩算法等; - 启用/禁用:
sudo jetson_swap on
、sudo jetson_swap off
:启用或禁用ZRAM交换; - 配置大小:
sudo jetson_swap --size <size_in_GB>
:设置ZRAM交换空间的大小。
- 查看状态:
jetson_config
:配置Jetson系统的各种设置,旨在提供统一的配置接口,主要功能包括:- 管理NVPModel模式:
sudo jetson_config nvpmodel <mode_name>
:切换系统预定义的电源/性能模式(如MAXN、5W、10W、15W等)。等同于传统的sudo nvpmodel -m <mode_name>
。 - 查看可用模式:
jetson_config nvpmodel --list
:列出所有可用的NVPModel模式及其描述。 - 看当前模式:
jetson_config nvpmodel
:显示当前激活的NVPModel模式。
- 管理NVPModel模式:
问题
电源模式
推荐阅读
- https://developer.nvidia.cn/embedded/learn/get-started-jetson-orin-nano-devkit
- https://developer.nvidia.com/zh-cn/blog/getting-started-with-the-deep-learning-accelerator-on-nvidia-jetson-orin/
- https://blog.csdn.net/m0_56661101/article/details/131631706
- https://zhuanlan.zhihu.com/p/524921257
- https://gitee.com/linex0816/jetson-containers/blob/master/docs/setup.md