当前位置:网站首页>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
至此,镜像环境就安装完成。
边栏推荐
- 【obs】官方是配置USE_GPU_PRIORITY 效果为TRUE的
- 应用实践 | 数仓体系效率全面提升!同程数科基于 Apache Doris 的数据仓库建设
- [question de programmation] [scratch niveau 2] oiseaux volants en décembre 2019
- Reading notes 004: Wang Yangming's quotations
- 华泰证券官方网站开户安全吗?
- 【obs】Impossible to find entrance point CreateDirect3D11DeviceFromDXGIDevice
- The method of server defense against DDoS, Hangzhou advanced anti DDoS IP section 103.219.39 x
- Sqlite数据库存储目录结构邻接表的实现2-目录树的构建
- SQL knowledge summary 004: Postgres terminal command summary
- 快速上手使用本地测试工具postman
猜你喜欢
ROS from entry to mastery (IX) initial experience of visual simulation: turtlebot3
The standby database has been delayed. Check that the MRP is wait_ for_ Log, apply after restarting MRP_ Log but wait again later_ for_ log
玩轉Sonar
Play sonar
Deep dive kotlin synergy (XXII): flow treatment
How to insert highlighted code blocks in WPS and word
他们齐聚 2022 ECUG Con,只为「中国技术力量」
An error is reported during the process of setting up ADG. Rman-03009 ora-03113
[研发人员必备]paddle 如何制作自己的数据集,并显示。
SQL knowledge summary 004: Postgres terminal command summary
随机推荐
快速上手使用本地测试工具postman
Is Zhou Hongyi, 52, still young?
If an exception is thrown in the constructor, the best way is to prevent memory leakage?
Common selectors are
关于组织2021-2022全国青少年电子信息智能创新大赛西南赛区(四川)复赛的通知
Linkedblockingqueue source code analysis - add and delete
华为交换机S5735S-L24T4S-QA2无法telnet远程访问
"An excellent programmer is worth five ordinary programmers", and the gap lies in these seven key points
ABAP ALV LVC模板
paddle入门-使用LeNet在MNIST实现图像分类方法二
Qt添加资源文件,为QAction添加图标,建立信号槽函数并实现
DNS 系列(一):为什么更新了 DNS 记录不生效?
After going to ByteDance, I learned that there are so many test engineers with an annual salary of 40W?
Development of a horse tourism website (realization of login, registration and exit function)
某马旅游网站开发(对servlet的优化)
【obs】Impossible to find entrance point CreateDirect3D11DeviceFromDXGIDevice
Introduction knowledge system of Web front-end engineers
RPA cloud computer, let RPA out of the box with unlimited computing power?
Reptile practice (VIII): reptile expression pack
Huawei switch s5735s-l24t4s-qa2 cannot be remotely accessed by telnet