前言
最近从实验室的杂物堆里翻出了一个Jetson Orin AGX,入手玩了一下。发现环境配置还是挺让人讨厌的。所以这里做了一个简单的教程,共享出来已方便大家未来的开发。Jetson是NVIDIA开发的一个嵌入式AI计算设备系列,主要用于边缘计算和AI应用开发。它适用于各种AI和深度学习应用场景,能够在设备端直接运行机器学习模型,特别适合需要实时处理和计算的场景。本教程不仅仅适用于AGX系列,同时其环境配置也可以用于Nano系列。
系统烧录
对于Nano系列,系统烧录和树莓派的烧录基本一致,直接用工具将镜像烧录到SD卡中,可以参照developer.nvidia.com/embedded/le... 但是对于Orin AGX来说,需要更加繁琐的步骤来烧录系统。这主要是因为AGX可以可以使用EMMC,SD,或者NVME SSD 作为系统BOOT。 所以英伟达推出SDK Manager来管理和安装Jetson设备的系统和开发工具。所以SDK Manager同时也会在的你的主机环境下安装交叉编译工具。所以,如果想在主机环境下进行cuda应用开发(非必须),主机需要具备英伟达显卡。
以下是使用SDK Manager烧录Orin AGX的步骤:
-
下载并安装SDK Manager:访问NVIDIA官网下载SDK Manager(developer.nvidia.com/sdk-manager...
-
准备设备:
- 将Jetson AGX Orin连接到主机(Ubuntu系统)
- 确保设备处于强制恢复模式(Force Recovery Mode)
- 通过USB-C线缆连接主机和设备
-
运行SDK Manager:
- 登录NVIDIA开发者账户
- 选择正确的Jetson设备型号
- 选择需要安装的系统版本和组件
-
烧录过程:
- 按照SDK Manager的指示进行系统烧录
- 等待下载和安装过程完成
- 按提示在设备上完成初始化设置
-
注意事项:
- 烧录过程中请确保设备和主机都有稳定的电源供应
- 建议使用有线网络连接以确保下载速度
- 如果烧录失败,可以尝试重新进入强制恢复模式再次尝试
-
强制恢复模式操作步骤:
- 关闭设备电源
- 按住RECOVERY按钮
- 按下POWER按钮
- 等待2秒后松开RECOVERY按钮
这里仅仅完成了系统的烧录,但是并没有安装完整的cuda环境。英伟达提供了JetPack,其包含了完整cuda环境以及相关的依赖。我们需要继续使用SDK Manage将JetPack安装到系统中。这个时候我们需要使用网路连接到Jetson环境,这里需要你输入Jetson的IPV4地址。你可以直接用RJ45网线将Jetson连接到路由器(主机和Jetson在同一个路由器下)。或者,可以选择直接将Jetson直接连接到主机网口上。
在安装完成后,请直接使用SSH连接Jetson。请打开终端然后运行 nvcc --version
。如果能成功显示cuda版本则说明JetPack成功安装好了。
环境配置
通常在安装完JetPack后,只意味着完成了cuda环境配置。但想要运行Pytorch这些框架,还需要很多额外的配置和安装。因为Jetson使用的是特殊的ARM核心,所以直接安装官方框架是不可行的。目前存在三种方式进行框架安装,自己编译,docker,和安装官方编译版本。这里仅仅介绍后两种方式。
Docker Image
官方NGC针对不同的应用场景提供了一系列docler image。这里用pytorch镜像作为一个例子([catalog.ngc.nvidia.com/orgs/nvidia...]) 这里直接运行下面这条命令]docker run --runtime=nvidia -it --network host --rm -v /home/ubuntu/docker_space:/data [nvcr.io/nvidia/pytorch:25.05-py3-igpu
该命令可以解释为:
- --runtime=nvidia:指定使用NVIDIA运行时,这使容器能够访问GPU
- -it:启用交互式终端模式,允许用户与容器进行交互
- --network host:容器使用主机的网络栈,容器和主机共享网络配置
- --rm:容器停止运行后自动删除,避免存储空间的浪费
- -v /home/ubuntu/docker_space:/data:将主机的/home/ubuntu/docker_space目录挂载到容器的/data目录,用于数据持久化
- nvcr.io/nvidia/pytorch:25.05-py3-igpu:指定使用的Docker镜像,这是NVIDIA官方提供的支持PyTorch的镜像
然后,可以运行 pip list | grep torch
可以列举出所有torch版本;Docker这种方式有如下优点
- 环境隔离:每个容器都是独立的运行环境,避免依赖冲突
- 快速部署:容器可以快速启动和停止,方便开发和测试
- 版本控制:可以精确控制开发环境的版本,确保开发环境的一致性
- 资源效率:相比虚拟机,容器更轻量级,消耗更少的系统资源
- 可移植性:容器可以在不同的机器上运行,保持相同的运行环境
同时的Docker 缺点也有很多。
- 性能开销:虽然比虚拟机小,但仍然存在一定的性能损耗
- 存储管理:容器停止后数据会丢失,需要额外配置持久化存储
- 学习成本:需要掌握Docker的基本概念和命令
- 网络配置:容器间的网络通信配置可能比较复杂
- 安全性考虑:容器共享主机内核,可能存在安全风险
所以,如果进行长期部署,docker并不是一个好选择;
官方编译版本Pytroch
NVIDIA官方提供了一个Python repo提供了一些针对Jetson平台编译的pip包( [pypi.jetson-ai-lab.dev] ) 。在下载之前,请先确定自己的Jetpack版本,这里我使用最新的Jetpack6.2,其cuda版本是12.6,( [pypi.jetson-ai-lab.dev] ) 你可以查看所有的pip包( [pypi.jetson-ai-lab.dev/jp6/cu126] )。下面的命令可以用于安装基本Pytoch环境。在安装之后就可以运行基本的AI程序了。你也可以选择下载原始代码然后自己配置环境进行编译
bash
pip install <https://pypi.jetson-ai-lab.dev/jp6/cu126/+f/97d/e894e562ead63/pycuda-2024.1.2-cp310-cp310-linux_aarch64.whl#sha256=97de894e562ead63d6fa3aa79d4c947ed7cd9fd75cc8920b712475cc6ff69b7f>
pip install <https://pypi.jetson-ai-lab.dev/jp6/cu126/+f/6ef/f643c0a7acda9/torch-2.7.0-cp310-cp310-linux_aarch64.whl#sha256=6eff643c0a7acda92734cc798338f733ff35c7df1a4434576f5ff7c66fc97319>
pip install <https://pypi.jetson-ai-lab.dev/jp6/cu126/+f/c59/026d500c57366/torchaudio-2.7.0-cp310-cp310-linux_aarch64.whl#sha256=c59026d500c573666ae0437c4202ac312ac8ebe38fa12dbb37250a07c1e826f9>
pip install <https://pypi.jetson-ai-lab.dev/jp6/cu126/+f/daa/bff3a07259968/torchvision-0.22.0-cp310-cp310-linux_aarch64.whl#sha256=daabff3a0725996886b92e4b5dd143f5750ef4b181b5c7d01371a9185e8f0402>
pip install <https://pypi.jetson-ai-lab.dev/jp6/cu126/+f/e6d/a8e91fd7e5f79/opencv_python-4.11.0-py3-none-any.whl#sha256=e6da8e91fd7e5f79509500808b38b616af4d3a8da4a8e0a3de6fa1d4da2f4fc8>
pip install <https://pypi.jetson-ai-lab.dev/jp6/cu126/+f/cdb/12863a72a693d/opencv_contrib_python-4.11.0.86-cp310-cp310-linux_aarch64.whl#sha256=cdb12863a72a693d265da77fb8c8379fcd55cf5f67af2594724ef4005949d4f1>
Tips
- 请安装jtop :
sudo -H pip3 install -U jetson-stats
, 可以用于监控CPU,GPU,显存的使用情况;