当前位置:网站首页>NVIDIA Jetson测试安装yolox过程记录

NVIDIA Jetson测试安装yolox过程记录

2022-07-07 22:41:00 submarineas

引言

此篇想总结一下关于nvidia jetson边缘盒子的一些使用过程,主要想就从连上盒子ssh环境到跑通yolox的过程进行一个记录,如果之后还有相关业务的话可以参考。

jetson内容介绍

本篇主要测试环境并不是在宿主机上,而是会选择nvidia针对jetson出的镜像,原因有很多,第一是环境隔离,宿主机因为并不是我一个人用,第二个是宿主机上遇到很多的bug,针对我想用的包,有太多环境需要修改,而宿主机预安装好的基于arm架构的python3里面有太多环境没有,并且大多都是依赖,比如shapely的关于地理的libgeos_c.so动态库都基本缺失,所以我还是选择了官方的docker镜像。至于宿主机上,我刚开始装arm的conda遇到坑后就转了docker,所以踩坑不多。

预安装环境

这里预安装的环境一般边缘盒子到手后基本就有了,就我目前拿到的两台jetson xavier nx是这样的,即有jtop以及相应的一些基础依赖,vim还需要自己安装,其它的大致上也没了,主要是jtop这个性能监测工具需要装上,就像主机服务器上的rtx显卡监测工具nvtop,这两个是非常优秀的插件。

如果在没有的情况下,我也根据网上一些资料,从python3服务到jtop安装笔记,最快的安装方式如下:

"""1. 基础依赖"""
sudo apt-get install git cmake
sudo apt-get install python3-dev
sudo apt-get install libhdf5-serial-dev hdf5-tools
sudo apt-get install libatlas-base-dev gfortran

"""2. pip3安装"""
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install python3-pip

"""3. pip安装"""
pip3 install jetson-stats

"""4. 源码编译jtop(如果3失败)"""
git clone https://github.com/rbonghi/jetson_stats.git
cd jetson_stats/
sudo python3 ./setup.py install

上述过程是安装插件全过程,当然如果全部都能用apt或者pip走通那当然好,不过有些人喜欢源码编译安装,那么从python开始到jetson,也可以全部走源码编译,过程就看apt的速度和编译速度哪个快了。安装好后,在终端输入jtop即可进入页面:
在这里插入图片描述
刚进去的页面为数字键1显示的all页面,相应的还有数字键2 GPU可视化页面,数字键3 CPU可视化页面,数字键4 内存管理页面,数字键5 控制风扇以及功率转速等设置页面,最后的6是显示边缘盒子信息的页面:
在这里插入图片描述

jetson环境安装

这里将分为三个部分,第一个是从宿主机进入docker镜像过程,第二个是容器里pytorch和torchvision这两个环境的更新,因为容器内部基本没有和当前代码匹配的版本,最后一个就是直接跑起来yolox。

docker镜像

一般边缘盒子也是会预安装docker的,但可能是19.03以下的版本,如果在使用过程中遇到库函数问题,也是可以重装的,因为在docker官网下,arm架构和x86的安装方式基本一致,即根据官网的命令是可以根据当前ubuntu系统选择合适的架构进行安装。
在这里插入图片描述
目前我就在deepin系统上装docker出现过识别不出服务器架构,需要自己手动,nvidia jetson在我更新过后基本没什么问题了。安装过程可以看我之前的docker使用笔记(1):docker介绍与安装 安装成功后,可以查看版本信息与info,如果docker --version没有问题,正确显示版本,那么久可以去nvidia官网选择镜像了:
在这里插入图片描述
在官网下进入nvidia的container目录,搜索jetson,会出现很多基于L4T的镜像,这些就是能直接使用于jetson的,网页链接为:

https://catalog.ngc.nvidia.com/containers?filters=&orderBy=dateModifiedDESC&query=jetson%20

我这里选择的NVIDIA L4T ML,因为在装完docker后,我更新了一下docker的保存路径,nvidia jetson盒子的磁盘比较小,加了一块机械盘,然后把存储路径都丢过去了,所以L4T ML这个镜像我记得好像是有接近10个G,但越大说明环境越完整,越不容易出bug,这个就仁者见仁智者见智了,pull tag命令为:

docker pull nvcr.io/nvidia/l4t-ml:r34.1.1-py3

拉下来后,跟x86架构的启动命令一样,只需要加上-e参数将gpu加入就行了,具体详细的可以看我之前写得docker学习笔记(9):nvidia-docker安装、部署与使用
在这里插入图片描述
我的命令为:

docker run -it --net=host  --name jetson --runtime nvidia --restart always --privileged=true -e LD_LIBRARY_PATH=/usr/local/ffmpeg/lib/  --entrypoint="./home//program/xxx/start.sh"  submarineas/nvidia:v5.0 /bin/bash

在这里插入图片描述

这里可能还存在一个cuda版本问题,不过jetson默认宿主机与镜像都是基于cuda 10.2的,我装完后才想到,结果发现完全一致,可以在装完后检查一下镜像和宿主机驱动环境问题:

nvcc -V

cat /usr/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

pytorch以及torchvision安装

进入docker,因为我上面容器选择的是基本包含所有依赖与ml有关的pip包,这里我进去看到的torch版本为0.6.0,而torchvision比它高0.1,这是适配上的,但是yolox需要的torch版本必须要0.9.0来着,我记得,那么就需要卸载重装,这里的顺序为先装pytorch,再装torchvision,因为如果换一个顺序,torchvision装的还是基于CPU的版本,pip默认走的pypi,我就犯了一个错误。 因为pypi网页上是有编译好的arm架构的pytorch安装包,我当时没看拉下来直接装了:
在这里插入图片描述

正确方法还是在nvidia官网,它提供了所有pytorch版本,链接为:

https://forums.developer.nvidia.com/t/pytorch-for-jetson-version-1-11-now-available/72048
在这里插入图片描述
拉下pytorch的whl离线版本进行安装,然后进一步再安装torchvision,这里的步骤来源于torchvision的GitHub,源码编译安装,不然会跟我上面一样,直接pip install可以装上,但torch.cuda.is_available()为false。

$ 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   # see below for version of torchvision to download
$ cd torchvision
$ export BUILD_VERSION=0.x.0  # where 0.x.0 is the torchvision version 
$ 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

yolox环境安装

安装完了torch与torchvision后,剩下的包基本不会再有问题。同样与GitHub中:

git clone [email protected].com:Megvii-BaseDetection/YOLOX.git
cd YOLOX
pip3 install -v -e .  # or python3 setup.py develop

至此,镜像环境就安装完成。

原网站

版权声明
本文为[submarineas]所创,转载请带上原文链接,感谢
https://blog.csdn.net/submarineas/article/details/125506832