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,显存的使用情况;
相关推荐
bcxwz66925 分钟前
linux 下常用变更-8
linux·运维·服务器
AirDroid_cn1 小时前
打开网页即可远程控制手机,Linux系统亦可使用
linux·智能手机·安卓·远程工作·远程控制·远程控制手机·远程投屏
bubiyoushang8886 小时前
Windows11 WSL2 Ubuntu编译安装perf工具
linux·运维·ubuntu
行云流水剑7 小时前
【学习记录】使用 Kali Linux 与 Hashcat 进行 WiFi 安全分析:合法的安全测试指南
linux·学习·安全
xuanwojiuxin7 小时前
linux panic-propagation
linux·运维·服务器
achene_ql9 小时前
select、poll、epoll 与 Reactor 模式
linux·服务器·网络·c++
藥瓿亭9 小时前
K8S认证|CKS题库+答案| 9. 网络策略 NetworkPolicy
linux·运维·docker·云原生·容器·kubernetes·cks
千千寰宇10 小时前
[数据传输/网络传输/序列化/计算机组成原理] 字节序/大小端
linux·计算机组成原理/硬件/半导体
LFloyue10 小时前
Linux离线(zip方式)安装docker
linux·docker
Blue桃之夭夭10 小时前
深入理解Optional:处理空指针异常
linux·windows·microsoft