当前位置:网站首页>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
至此,镜像环境就安装完成。
边栏推荐
- 去了字节跳动,才知道年薪 40w 的测试工程师有这么多?
- 备库一直有延迟,查看mrp为wait_for_log,重启mrp后为apply_log但过一会又wait_for_log
- Visual Studio Deployment Project - Create shortcut to deployed executable
- Daily question brushing record (16)
- 单机高并发模型设计
- 5g NR system messages
- Zhou Hongqi, 52 ans, est - il encore jeune?
- 大数据开源项目,一站式全自动化全生命周期运维管家ChengYing(承影)走向何方?
- 35岁真就成了职业危机?不,我的技术在积累,我还越吃越香了
- 詹姆斯·格雷克《信息简史》读后感记录
猜你喜欢
Robomaster visual tutorial (1) camera
Huawei switch s5735s-l24t4s-qa2 cannot be remotely accessed by telnet
1293_ Implementation analysis of xtask resumeall() interface in FreeRTOS
Cause analysis and solution of too laggy page of [test interview questions]
STM32F1與STM32CubeIDE編程實例-旋轉編碼器驅動
51 communicates with the Bluetooth module, and 51 drives the Bluetooth app to light up
Qt添加资源文件,为QAction添加图标,建立信号槽函数并实现
Reentrantlock fair lock source code Chapter 0
[question de programmation] [scratch niveau 2] oiseaux volants en décembre 2019
STM32F1与STM32CubeIDE编程实例-旋转编码器驱动
随机推荐
单机高并发模型设计
Play sonar
Open display PDF file in web page
[programming questions] [scratch Level 2] March 2019 garbage classification
Qt不同类之间建立信号槽,并传递参数
DNS 系列(一):为什么更新了 DNS 记录不生效?
大数据开源项目,一站式全自动化全生命周期运维管家ChengYing(承影)走向何方?
Is Zhou Hongyi, 52, still young?
Scrapy framework
Stm32f1 and stm32cubeide programming example - rotary encoder drive
【obs】官方是配置USE_GPU_PRIORITY 效果为TRUE的
A brief history of information by James Gleick
STM32F1與STM32CubeIDE編程實例-旋轉編碼器驅動
从Starfish OS持续对SFO的通缩消耗,长远看SFO的价值
Use filters to count URL request time
How to add automatic sorting titles in typora software?
If an exception is thrown in the constructor, the best way is to prevent memory leakage?
51 communicates with the Bluetooth module, and 51 drives the Bluetooth app to light up
[研发人员必备]paddle 如何制作自己的数据集,并显示。
去了字节跳动,才知道年薪 40w 的测试工程师有这么多?