Jetson Orin AGX Getting Start with Pytorch

前言

最近从实验室的杂物堆里翻出了一个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的步骤:

  1. 下载并安装SDK Manager:访问NVIDIA官网下载SDK Manager(developer.nvidia.com/sdk-manager...

  2. 准备设备:

    • 将Jetson AGX Orin连接到主机(Ubuntu系统)
    • 确保设备处于强制恢复模式(Force Recovery Mode)
    • 通过USB-C线缆连接主机和设备
  3. 运行SDK Manager:

    • 登录NVIDIA开发者账户
    • 选择正确的Jetson设备型号
    • 选择需要安装的系统版本和组件
  4. 烧录过程:

    • 按照SDK Manager的指示进行系统烧录
    • 等待下载和安装过程完成
    • 按提示在设备上完成初始化设置
  • 注意事项:

    • 烧录过程中请确保设备和主机都有稳定的电源供应
    • 建议使用有线网络连接以确保下载速度
    • 如果烧录失败,可以尝试重新进入强制恢复模式再次尝试
  • 强制恢复模式操作步骤:

    1. 关闭设备电源
    2. 按住RECOVERY按钮
    3. 按下POWER按钮
    4. 等待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 该命令可以解释为:

然后,可以运行 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,显存的使用情况;
相关推荐
阿部多瑞 ABU10 分钟前
`chenmo` —— 可编程元叙事引擎 V2.3+
linux·人工智能·python·ai写作
徐同保40 分钟前
nginx转发,指向一个可以正常访问的网站
linux·服务器·nginx
HIT_Weston42 分钟前
95、【Ubuntu】【Hugo】搭建私人博客:_default&partials
linux·运维·ubuntu
实心儿儿1 小时前
Linux —— 基础开发工具5
linux·运维·算法
oMcLin1 小时前
如何在SUSE Linux Enterprise Server 15 SP4上通过配置并优化ZFS存储池,提升文件存储与数据备份的效率?
java·linux·运维
王阿巴和王咕噜5 小时前
【WSL】安装并配置适用于Linux的Windows子系统(WSL)
linux·运维·windows
布史6 小时前
Tailscale虚拟私有网络指南
linux·网络
水天需0106 小时前
shift 命令详解
linux
wdfk_prog6 小时前
[Linux]学习笔记系列 -- 内核支持与数据
linux·笔记·学习
Xの哲學7 小时前
深入剖析Linux文件系统数据结构实现机制
linux·运维·网络·数据结构·算法