Jetson AGX Xavier部署深度学习环境

最近的项目需要在英伟达的盒子上部署目标跟踪算法,配环境踩了不少坑,做一个简单的记录。

拿到盒子之后需要注意jetpack的版本,还有是不是已经装好了cuda,这关系到后续安装pytorch和torchvision,我的盒子最开始的jetpack版本是4.3,并且没有cuda,配了几天环境一直会有报错,后来发现是重新装的cuda版本、torch版本还有jetpack版本这三个不匹配。刷机之后很快就把环境配好了,如果一开始盒子没有配套的环境,强烈建议刷机,后续可以省很多麻烦,而且刷机其实很容易。

图片里我的jetpack、L4T还有cuda版本都是刷机之后的

查看Jetpack版本以及CUDA版本

查看jetpack的方法有三种:

1.使用命令查看

sudo apt-cache show nvidia-jetpack

会出现下图这样的信息,我的jetpack的版本是5.02

2.通过代码查询L4T的版本,在官网找到与L4T版本对应的jetpack版本

代码如下:

cat /etc/nv_tegra_release

我的L4T的版本是35.1.0

3.使用Jtop查看

网上安装Jtop的方法一般如下:

sudo apt install python3-pip   #首先安装pip3
pip3 install jetson-stats
###或者 sudo -H pip3 install -U jetson-stats

sudo systemctl restart jetson_stats.service  #首次使用需要激活

但是我这样装会出现如下的报错,应该是pip和setuptools的版本问题

最后通过下面的代码成功安装

sudo python -m pip install --upgrade --force pip 
sudo pip install setuptools==33.1.1
sudo -H pip install -U jetson-stats

在终端输入代码打开Jtop

jtop

界面如下图所示,正常来说最上面的Jetpack后面会跟着版本号,括号里是L4T的版本

查看cuda的版本:

nvcc -V

我的cuda版本是11.4

刷机

相较于自己去再配置cuda、tensorRT,直接刷机来的更加简单粗暴,而且不会出现版本上的错误

材料准备:

Jetson AGX Xavier一台(英伟达盒子)
装有ubuntu系统的电脑一台(宿主电脑)
USB转TYPE-C数据线一条
电源线、网线、键盘、鼠标、显示屏

注意:宿主电脑的home剩余空间不能太小,因为后续在刷机的step 3时,下载的默认路径在home下面,我的home空间比较小,一开始把两个下载路径都改到了挂载的硬盘上,在烧录的时候出现了报错,可能是跟分区的格式有关系,后面换了一台电脑,直接采用默认路径,刷机一气呵成。很多帖子都要求至少有80G,具体需要多少我没做测试,如果空间不够会弹出提示。

下载SDK Manager

从英伟达官网下载SDK Manager

地址:NVIDIA SDK Manager | NVIDIA Developer

下载deb后缀的文件

可以直接双击安装或者使用sudo apt install指令

打开SDK Manager

装好以后,输入指令就可以打开SDK Manager

sdkmanager

打开之后需要登录英伟达的账号,如果没有的话注册一个就行

不需要勾选Host Machine,Target Hardware里面显示的是你盒子的型号,我这里没有连接盒子,所以显示“No board connected”,你可以选择在这一步就把盒子和主机连接起来,很多教程在烧录的时候才连接。第三行可以选择要安装的JetPack版本,我的主机Ubuntu版本是20.04,只能装最新的几个JetPack版本,如果要装低版本的可以用18.04的Ubuntu主机。

连接的注意事项:

1.使用USB转TYPE-C线将盒子与主机相连,要插在盒子有电源指示灯的那边

2.找到盒子一排的三个按钮,先按住中间的强制恢复键,再按旁边的电源键,等待2秒后同时放开

3.连接成功的话此时会跳出一个界面让你选择型号

直接选择默认的路径下载,勾选左边的框,随后就进入了下载和烧录的阶段

烧录的过程中会弹出这样的界面

选择手动安装(Manual Setup)输入想要给盒子系统设置的用户名和密码,其他不用管

选择USB,盒子没有连接网络也可以安装,只需要主机有网络就可以,能够通过USB分享给盒子

装到一定的过程,盒子会自动开机,如果有显示屏的话,与盒子连接,会看到此时进入了系统的设置界面,连接上鼠标键盘进行系统设置,可以在这步就进行换源(我是后面再换的)。此时已经刷得差不多了,后续继续等待,主机会接着给盒子安装组件和软件,直到安装结束。

换源

1.更换软件源

为了加快后续下载软件的速度,需要对盒子进行换源,首先备份原来的软件源,后续出问题了也可以恢复

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

编辑sources.list文件,进行换源

sudo gedit /etc/apt/sources.list

把原来的内容全部用下面的内容替换,我用的是清华源

deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-updates main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-security main restricted universe multiverse
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-security main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-backports main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic main universe restricted
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic main universe restricted

更新软件源

sudo apt update

2.更换pip源

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

安装深度学习环境

 Jetson AGX xavier是aarch64的架构,不能直接通过pytorch官网安装pytorch,也不能(不确定)使用anaconda,我看anaconda的官网现在也有aarch64的包,下载安装之后,终端也会出现base,但是是在刷机之前装的,那时候import torch会出现非常难解决的错误,刷完机之后我装的是miniforge,跟anaconda的用法相同

1.下载安装miniforge

网址:Releases · conda-forge/miniforge · GitHub

选择对应的版本,我选的版本是‘miniforge-pypy3-4.14.0-0-linux-aarch64.sh’

下好后使用sh指令安装,安装过程跟anaconda相同,重新打开终端会看到前面出现了(base)

2.创建环境

创建环境与anaconda相同,注意python版本会影响到后面安装的torch版本,我要用到的torch版本是1.11,安装的是python3.8

conda create -n py38 python=3.8

后续torch和torchvision的安装都是在这个环境下

3.下载安装torch

虽然不能从pytorch官网安装torch,但是英伟达提供了编译好的torch文件

网址:PyTorch for Jetson - Jetson Nano - NVIDIA Developer Forums

!!!注意:选择与自己jetpack版本相兼容的torch文件

 我的JetPack版本是5.0.2,所以我装的是v1.11.0,装错版本后续可能会报错

下载好以后,进入自己刚才创建的环境,使用pip install 指令安装

4.安装torchvision

直接复制了英伟达官网的教程

sudo apt-get install libjpeg-dev zlib1g-dev libpython3-dev libavcodec-dev libavformat-dev libswscale-dev
git clone --branch <version> https://github.com/pytorch/vision torchvision   #选择对应版本进行修改
###例如 git clone --branch v0.12.0 https://github.com/pytorch/vision torchvision
cd torchvision
export BUILD_VERSION=0.x.0  # 0.x.0 要填对应的torchvision的版本
###例如 export BUILD_VERSION=0.12.0
python3 setup.py install --user
cd ../  # attempting to load torchvision from build dir will result in import error
pip install 'pillow<7' # always needed for Python 2.7, not needed torchvision v0.5.0+ with Python 3.6

我在装的过程中报了个错:

ImportError: libopenblas.so.0: cannot open shared object file: No such file or directory

使用下面的代码解决:

sudo apt-get install libopenblas-dev

安装好torchvision之后,测试一下import torch会不会报错,再试试torch.cuda.is_available()会不会返回True,如果可以的话,大功告成!

猜你喜欢

转载自blog.csdn.net/a545454669/article/details/126907171