目录
Jetson AGX Orin JetPack6.1 刷机
参考文章:
Jetson AGX Orin使用SDK Manager刷Jetpack 5.1.1的踩坑记录
Jetson AGX orin JetPack6.1刷机记录
Nvidia Jetson AGX Orin 初体验
Jetson AGX Orin 32G 价格1.3w,Jetson AGX Orin 64G价格1.5w,我嗅到了金钱的味道。
让我们跳过前面激动人心的开箱环节,直接进入刷机环节,Go on。
查看jetpack版本
sudo apt-cache show nvidia-jetpack
我这里显示:
Package: nvidia-jetpack
Version: 5.1.5-b11
Architecture: arm64
Maintainer: NVIDIA Corporation
直接刷机,我需要安装Jetpack 6.1
刷机
把orin的电源线连上,用一根typec-usb的线把电脑和orin连上,按住中间和右边的按钮,长按先松右边,再松左边,就进入recovery模式了。
切换到终端:lsusb
可以看到设备被识别成Nvidia Corp APX。
直接
sdkmanager
SDK Manager也弹出了下面的窗口:
因为我们这个是32G的,所以选择第三个选项,点击OK:
然后直接按照我图中的进行配置,点击Continue继续:
勾选I accept,然后点击Continue:
然后输入你自己的密码
检验完成后刷机开始:
中间会跳出如下界面:
Storage Device选择EMMC(默认)准没错,而且我这好像没有装Nvme的SSD硬盘。
点击Flash:
Flashing中:
接下来就是比较长时间的等待了
刷到94% Orin系统就会重启
这时,Jetson Orin的名称也会发生变化:现在叫做 NVIDIA Linux for Tegra了:
lsusb可以看到名称确实变了(对比前面叫做Nvidia Corp APX)
之后会弹出来
默认即可,点击Install:
又是同样的验证,验证后即可开始后面的刷机:
居然在这里卡住了,应该先跳过的,点No,再重装就行了
还差这几个没有装,标记一下
强制退出,重新安装就完事了,重新sdkmanager
sdkmanager
Step 02 的时候不勾选第一个Jetson Linux即可
不知道为什么还是卡住了
依旧强制退出,然后重新打开sdkmanager,这次用SSH去安装试一下
sdkmanager
点击Retry就完事了,必通过,一次不行那就点击第二次:
胜利的曙光就在眼前!!!:
还有一个没有安装成功,这个应该不打紧。
配置远程桌面vino
安装VNC Server
sudo apt update
sudo apt install vino
把VNC Server设为开机自启动
mkdir -p ~/.config/autostart
cp /usr/share/applications/vino-server.desktop ~/.config/autostart
设置VNC Server
gsettings set org.gnome.Vino prompt-enabled false
gsettings set org.gnome.Vino require-encryption false
开启桌面共享并设置连接密码,把password改为自己设置的密码
gsettings set org.gnome.Vino authentication-methods "['vnc']"
gsettings set org.gnome.Vino vnc-password $(echo -n 'password'|base64)
设置完成之后重启
sudo reboot
需要打开自动登录才能正常使用
可以直接在用户设置打开自动登录,或者通过以下指令操作
sudo gedit /etc/gdm3/custom.conf
把以下两句代码注释取消,并把user1改为当前用户名
# AutomaticLoginEnable = true
# AutomaticLogin = user1
保存后重启即可。之后即可通过Linux的remmina中VNC进行远程访问,也可以通过windows或macos的VNC server进行远程桌面访问。
分辨率调整
关于Jetson在不接显示器时,远程访问的分辨率只有640x480,可以通过以下方式修改默认分辨率。
sudo gedit /etc/X11/xorg.conf
在末尾添加上以下代码
Section "Screen"
Identifier "Default Screen"
Monitor "Configured Monitor"
Device "Tegra0"
SubSection "Display"
Depth 24
Virtual 1280 800 # 改为自己需要的分辨率
EndSubSection
EndSection
保存后重启即可。
安装miniconda3
下载Miniconda3-py310_23.10.0-1-Linux-aarch64.sh
上传到Jetson AGX Orin
cd Downloads/ # 进入Downloads/ 目录
chmod +x Miniconda3-py310_23.10.0-1-Linux-aarch64.sh # 添加可执行权限
./Miniconda3-py310_23.10.0-1-Linux-aarch64.sh # 运行 Miniconda 的安装脚本
点击回车,然后输入yes
如果安装有点小不正常的话需要
export PATH=~/miniconda3/bin:$PATH
conda 换源
vim /home/nvidia/miniconda3/.condarc
注释原来的channels配置,添加下述配置。
channels:
- defaults
show_channel_urls: true
default_channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pip 换源
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple/
创建环境
conda create -n track python=3.10
conda activate track
设置默认启动环境
用vim打开.bashrc文件
vim ~/.bashrc
在.bashrc文件末尾添加
conda activate track
重新加载并执行当前用户的 ~/.bashrc 文件中的内容
source ~/.bashrc
Jtop安装
安装jtop
sudo apt update
sudo apt install python3
sudo apt install python3-pip
sudo pip3 install -U pip
sudo pip3 install jetson-stats
然后
sudo jtop
只用sdkmanager安装缺失的部分即可
torch torchvision安装
从官网下载torch-2.5.0a0+872d972e41.nv24.08.17622132-cp310-cp310-linux_aarch64.whl
https://developer.nvidia.com/embedded/downloads#?search=torch
上传到Jetson AGX Orin
pip install torch-2.5.0a0+872d972e41.nv24.08.17622132-cp310-cp310-linux_aarch64.whl
安装torchvision
Jetson上的gpu版本torchvision没有现成的安装包,需要自行编译安装。首先下载对应版本的torchvision
# 安装工具链
sudo apt-get install libjpeg-dev zlib1g-dev libpython3-dev libopenblas-dev libavcodec-dev libavformat-dev libswscale-dev
# 下载torchvision
git clone --branch v0.20.0 https://github.com/pytorch/vision torchvision
cd torchvision
export BUILD_VERSION=0.20.0 # v0.20.0 为torchvision版本
python3 setup.py install --user
import torchvision
print(torchvision.__version__)
新建一个python文件envtest.py,运行,验证安装结果。
# envtest.py
import torch
print('CUDA available: ' + str(torch.cuda.is_available()))
print('cuDNN version: ' + str(torch.backends.cudnn.version()))
a = torch.tensor([0., 0.], dtype=torch.float32, device='cuda')
print('Tensor a =', a)
b = torch.randn(2, device='cuda')
print('Tensor b =', b)
c = a + b
print('Tensor c =', c)
import torchvision
print(torchvision.__version__)
ImportError: libcusparseLt.so.0: cannot open share object file: No such file or directory
需要安装 libcudasparseLt。使用这个链接:https://developer.nvidia.com/cusparselt-downloads
wget https://developer.download.nvidia.com/compute/cusparselt/0.7.1/local_installers/cusparselt-local-tegra-repo-ubuntu2204-0.7.1_1.0-1_arm64.deb
sudo dpkg -i cusparselt-local-tegra-repo-ubuntu2204-0.7.1_1.0-1_arm64.deb
sudo cp /var/cusparselt-local-tegra-repo-ubuntu2204-0.7.1/cusparselt-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install libcusparselt0 libcusparselt-dev
decord 安装
https://github.com/dmlc/decord
Linux:
安装用于构建共享库的系统包,对于 Debian/Ubuntu 用户,请运行:
# official PPA comes with ffmpeg 2.8, which lacks tons of features, we use ffmpeg 4.0 here
sudo add-apt-repository ppa:jonathonf/ffmpeg-4 # for ubuntu20.04 official PPA is already version 4.2, you may skip this step
sudo apt-get update
sudo apt-get install -y build-essential python3-dev python3-setuptools make cmake
sudo apt-get install -y ffmpeg libavcodec-dev libavfilter-dev libavformat-dev libavutil-dev
# note: make sure you have cmake 3.8 or later, you can install from cmake official website if it's too old
递归克隆 repo(重要)
git clone --recursive https://github.com/dmlc/decord
在源根目录中构建共享库:
cd decord
mkdir build && cd build
cmake .. -DUSE_CUDA=0 -DCMAKE_BUILD_TYPE=Release
make
您可以指定-DUSE_CUDA=ON或-DUSE_CUDA=/path/to/cuda或-DUSE_CUDA=ON -DCMAKE_CUDA_COMPILER=/path/to/cuda/nvcc启用 NVDEC 硬件加速解码:
cmake .. -DUSE_CUDA=ON -DCMAKE_BUILD_TYPE=Release
请注意,如果您遇到问题libnvcuvid.so(例如,参见#102),则可能是由于缺少链接 libnvcuvid.so,您可以手动找到它(ldconfig -p | grep libnvcuvid)并将库链接到,CUDA_TOOLKIT_ROOT_DIR\lib64以便decord顺利检测并链接正确的库。
要指定自定义的 FFMPEG 库路径,请使用“-DFFMPEG_DIR=/path/to/ffmpeg”。
安装 python 绑定:
cd ../python
# option 1: add python path to $PYTHONPATH, you will need to install numpy separately
pwd=$PWD
echo "PYTHONPATH=$PYTHONPATH:$pwd" >> ~/.bashrc
source ~/.bashrc
# option 2: install with setuptools
python3 setup.py install --user
报错
https://developer.nvidia.com/nvidia-video-codec-sdk/download
我下载的是 Video_Codec_SDK_13.0.19.zip
unzip Video_Codec_SDK_xx.x.zip -d ~/Downloads/Video_Codec_SDK
cd ~/Downloads/Video_Codec_SDK
sudo cp ./Lib/linux/stubs/aarch64/libnvcuvid.so /usr/local/cuda-12.6/lib64/
cd ~/Downloads/decord/build
cmake .. -DUSE_CUDA=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_CUDA_ARCHITECTURES=ALL
decord make 失败
明天再搞!
cd ~/Downloads/decord/build
rm -rf * # 清除之前的构建文件
cmake .. -DUSE_CUDA=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_CUDA_ARCHITECTURES=87 # 将XX替换为实际计算能力,注意这里应该是87,而不是8.7
make
cd ../python
# option 1: add python path to $PYTHONPATH, you will need to install numpy separately
pwd=$PWD
echo "PYTHONPATH=$PYTHONPATH:$pwd" >> ~/.bashrc
source ~/.bashrc
# option 2: install with setuptools
python3 setup.py install --user
NVIDIA之获得显卡GPU_ARCHS值的方法
1 官网查询
Nvidia官网
对于Jetson最新的三款GPU来说其CUDA_ARCHITECTURES都是8.7
2 Jetson平台Jtop
version `GLIBCXX_3.4.30’ not found
Error:Failed to load video:/home/nvidia/miniconda3/envs/track/bin/../lib/libstdc++.so.6: version GLIBCXX_3.4.30' not found (required by /home/nvidia/.local/lib/python3.10/site-packages/decord-0.6.0-py3.10-linux-aarch64.egg/decord/libdecord.so)
strings /usr/lib/aarch64-linux-gnu/libstdc++.so.6 | grep GLIBCXX
发现GLIBCXX_3.4.30是存在的
既然已经存在了上述目标文件,所以只需要重新创建软连接使得anaconda3 能够识别到这个目标文件就可以了。
将环境中的libstdc++.so.6与anaconda3虚拟环境中的链接起来就行了。
使用命令:
ln -sf /usr/lib/aarch64-linux-gnu/libstdc++.so.6 /home/nvidia/miniconda3/envs/track/bin/../lib/libstdc++.so.6
EdgeTAM 测试效果
1280*720 13s 12帧/s 平均处理速度0.3s一帧
1280720 12s 30帧/s 平均处理速度0.297s一帧
1280720 29s 30帧/s 平均处理速度0.3s一帧
1920*1080 16s 25帧/s 平均处理速度0.2975s/帧
1280*720 27s 30帧/s 平均处理速度0.3s一帧
1280720 12s 30帧/s 平均处理速度0.3s一帧
1280720 32s 30帧/s 平均处理速度0.3s一帧(后处理时间有1:03)
852*480 13s 25帧/s 平均处理速度0.3s一帧(后处理时间2s)
2560*1440 13s 25帧/s 平均处理速度0.3s一帧(后处理时间29s)
1280*720 13s 25帧/s 平均处理速度0.3s一帧(后处理时间7s)
更长时间的视频加载以及后处理的时间都会更久
能处理更长的视频,但是处理速度并不会提高
效果一般,速度相比Jetson Orin Nano 8G 来说并没有提高多少
triton-inference-server 部署
https://github.com/triton-inference-server/server/releases
参考文章:Jetson调用triton inference server详细笔记
测试一下能不能部署到Jetson AGX Orin 32GB JetPack6.1 上
将这个下载下来,然后上传到GPU,1.7G
解压
ls -l tritonserver-2.51.0-igpu.tar.gz
tar -xzvf tritonserver-2.51.0-igpu.tar.gz
构建 Triton 服务器之前必须安装以下依赖项:
sudo apt-get update && \
sudo apt-get install -y --no-install-recommends \
software-properties-common \
autoconf \
automake \
build-essential \
git \
libb64-dev \
libre2-dev \
libssl-dev \
libtool \
libboost-dev \
rapidjson-dev \
patchelf \
pkg-config \
libopenblas-dev \
libarchive-dev \
zlib1g-dev \
python3 \
python3-dev \
python3-pip
必须安装其他 Onnx Runtime 依赖项才能构建 Onnx Runtime 后端:
pip3 install --upgrade flake8 flatbuffers
必须安装其他 PyTorch 依赖项才能构建(和运行)PyTorch 后端:
# 清理并更新软件源
sudo apt-get clean
sudo apt-get update
# 重新安装编译工具(添加-y参数自动确认安装)
sudo apt-get install -y \
autoconf \
bc \
g++ \
gcc \
clang \
lld
pip3 install --upgrade expecttest xmlrunner hypothesis aiohttp pyyaml scipy ninja typing_extensions protobuf
除了这些 PyTorch 依赖项之外,还必须安装与版本相对应的 PyTorch 轮子(用于构建和运行时):
(这里应该不需要,因为已经安装了对应的pytorch了)
pip3 install --upgrade https://developer.download.nvidia.com/compute/redist/jp/v50/pytorch/torch-1.12.0a0+2c916ef.nv22.3-cp38-cp38-linux_aarch64.whl
在构建 Triton 客户端库/示例之前,必须安装以下依赖项:
sudo apt-get install -y --no-install-recommends \
curl \
jq
pip3 install --upgrade wheel setuptools cython && \
pip3 install --upgrade grpcio-tools "numpy<2" attrdict pillow
注意:OpenCV 4.2.0 作为 JetPack 的一部分安装。它是客户端构建的依赖项之一。
注意:在 Jetson 上构建 Triton 时,您需要最新版本的 cmake。我们建议使用 cmake 3.25.2。以下是将 cmake 版本升级到 3.25.2 的脚本。
sudo apt remove cmake
# Using CMAKE installation instruction from:: https://apt.kitware.com/
sudo apt update && sudo apt install -y gpg sudo wget && \
sudo wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | \
gpg --dearmor - | \
sudo tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/null && \
. /etc/os-release && \
echo "deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ $UBUNTU_CODENAME main" | \
sudo tee /etc/apt/sources.list.d/kitware.list >/dev/null && \
sudo apt-get update && \
sudo apt-get install -y --no-install-recommends cmake cmake-data
cd tritonserver/clients/python/
pip install tritonclient-2.51.0-py3-none-manylinux2014_aarch64.whl
未完成,突然发现EdgeTAM需要的是triton而不是tritonserver
Not enough SMs to use max_autotune_gemm mode
NOTE: Jetson AGX Orin 32GB will have 2x 4 Core Clusters, and 7 TPCs with 14 SMs
官方说有14个SMs,而我的只有8个
import torch
if torch.cuda.is_available():
device = torch.device("cuda")
sm_count = torch.cuda.get_device_properties(device).multi_processor_count
print(f"Jetson AGX Orin SM counts: {sm_count}")
else:
print("No!!!!")
https://github.com/NVIDIA/TensorRT/issues/4398
安装固态硬盘及临时装载
参考文章:给Nvidia Jetson AGX Orin加个SSD硬盘
lsblk可以直接看到这个nvme的硬盘了:
看一下分区表:
sudo fdisk -l
sudo fdisk /dev/nvme0n1
因为之前已经做过linux的分区,所以这里不再进行分区
sudo su -
mkfs.ext4 /dev/nvme0n1p1 # 格式化
同时,这里也不进行格式化
直接新建一个/home1的目录,并将这个分区mount到 /home1的目录下:
mkdir /home1
mount /dev/nvme0n1p1 /home1
df -h 可以看到新的文件系统了:
暂时进行临时
TAM测试
sudo snap install firefox
sudo snap remove firefox
sudo docker run --runtime nvidia -it --rm --net=host \
-v /home1/nvidia/jetson-containers/data/models/tam:/data/models/tam \
dustynv/tam:r36.2.0
sudo docker images
sudo docker rmi 3aa947ea832b
# 1. 停止当前运行的 Docker 服务
sudo systemctl stop docker
# 2. 禁用 Docker 服务和套接字的自动启动
sudo systemctl disable docker.service
sudo systemctl disable docker.socket
# 3. 确认状态(两个都应该显示 disabled)
sudo systemctl is-enabled docker.service
sudo systemctl is-enabled docker.socket
docker info | grep "Docker Root Dir"
# 恢复 Docker 自动启动(如果需要)
sudo systemctl enable docker.service
sudo systemctl enable docker.socket
sudo systemctl start docker.service
sudo vim /etc/docker/daemon.json
{
"data-root": "/home1/docker",
"runtimes": {
"nvidia": {
"args": [],
"path": "nvidia-container-runtime"
}
}
}
sudo mkdir -p /home1/docker
sudo systemctl restart docker
docker info | grep -E "Docker Root Dir|Runtime"
# 预期输出如下
Runtimes: io.containerd.runc.v2 nvidia runc
Default Runtime: runc
Docker Root Dir: /home1/docker
刷机Jetpack5.1.3
一气呵成,如有神助,刷机过程最好什么都不要碰,刷机就会很顺利。
安装jtop验证一下是否安装成功
1: line2.mp4
卡住了,重启
2:官方的小猫视频
3:line1.mp4 line1_480.mp4
分辨率 | 时长 | 帧率 | 加载视频时长/s | 点击一次时长/s | 视频处理时长/s |
---|---|---|---|---|---|
1280*720 | 13 | 12 | 15 | 17 | 19min,平均3s/帧 |
比720p要低 | 5 | 30 | 17 | 17 | 26 |
1280*720 | 13 | 23 | 17 | 17 | 8:59 |
480*852 | 30 | 25 | 16 | 16 | 2:07,平均0.382s/帧 |