最近接触到了Nvidia Jetson TX2这块开发板,想入手测试一下自己的深度学习模型,因此和TX2的故事开始了!


前言

本人刷机多次,尝试各种大小坑:

  1. 自带系统搭建环境:刚开始不想刷机,就自己手动安装cuda等包,发现很多安装包不好找,好不容易下载的torch应该是支持cuda10.0,然后无奈放弃这条路

  2. 借助jetpack3.3搭建环境:只支持Ubuntu16.04的系统,实验室没有,只能用虚拟机来装了。刷好了之后,也报的相同的错,这时我才领悟到原来是需要cuda10.0以上的,又换!!!(这一步,多次搭建了VMware的系统,主要原因是提示内存不够,最后分配了50G才成功刷机)

  3. 借助jetpack4.2搭建:刚开始第二次尝试就是准备用这个的,但是登录界面一直进不去,提示我的账号或密码错误,反复确认是正确的,我还特地重新注册了个账号,同样的错误。后面才发现是这个包太久了,Nvidia应该不怎么维护了。

  4. 借助jetpack4.4 Developer Preview 搭建:终于成功了!!!

从小白到测试成功,确实不容易!

PS:jetpack3.3的刷机教程和自带系统安装深度学习环境的教程,我也出了:

xyl-507:Nvidia Jetson TX2 详细刷机教程及踩坑记录(Jetpack3.3,python2.7,torch1.2,torchvision)


刷机

刚接触TX2的时候,不知道为什么要刷机,后面看见有个博主说:

TX2 出厂时,已经自带了Ubuntu16.04 系统,可以直接启动。但一般我们会选择刷机,目的是更新到最新的 JetPack L4T,并自动安装最新的驱动、CUDA Toolkit、cuDNN、TensorRT。

(踩的坑,文末汇总)在自带的系统上,自己安装cuda8.0和cudnn6.0.21

(踩的坑)使用jetpack3.3刷机,附带安装的是cuda9.0和cudnn7.1.5。强烈建议给TX2烧机时选择jetpack4.2。

jetpack3.3没有对应的whl,踩坑无数还没有成功。

(一)使用jetpack4.4 Developer Preview 刷机,附带安装的是cuda10.2和cudnn8.0

1.刷机准备

  • pc端的ubuntu18.06系统,内存80G(虚拟机也可以,)

  • 一个交换机(路由器也可以)

  • 网线 2 条(tx2和ubuntu都需要连接至路由器或者交换机)

  • HDMI线和显示器

  • 连接设备:交换机分出两根网线,一根连接TX2,一根连接PC机(Ubuntu18.04),最好开始也用TX2自带的usb线把TX2和PC机连接起来。(全程都是联网的,我的PC机是通过手机USB共享热点来上网的,条件有限,不过没什么影响)

PS:测试是否成功连接交换机。首先在tx2上输入:

ifconfig

得到下图:

​可以看见我的tx2的IP为:192.168.43.150

然后在刷机用的电脑上(前提是tx2和电脑都连上了交换机),使用

ping 192.168.43.150

​出现上图这个,恭喜你,就是成功连上,进行下一步。

2.首先确定jetpack的版本:

torch、torchvision、cuda 、python对应版本匹配的关系如图所示。

​参照官网:https://pytorch.org/get-started/previous-versions/

3.下载jetpack4.4 Developer Preview(我的代码需要这个,因人而异。下载的是这个,但后面安装的是jetpack4.5.1)

Nvidia的官网下载jetpack安装包(我的包是:sdkmanager_1.6.1-8175_amd64.deb)。很慢,可以去csdn碰碰运气,有的人会上传。PS:在这个网址把英伟达账号注册

​参照官网:https://developer.nvidia.com/embedded/jetpack-archive

4.更换国内源(在ubuntu18.04的PC机完成)

把Ubuntu系统自带的源修改为国内的源,我用的是清华源链接,为什么要换国内源呢,因为快快快,提高成功率!!!

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak #备份 

sudo gedit sources.list # 也可以用vim,我习惯用gedit,就是打开这个文件把官方源删掉换成国内的

将下面清华源内容覆盖掉原文件内容,注意如果清华源不行,可以更换阿里源、中科大源、网易源等,如果都失败还是用官方的,可能更新速度会慢点。

deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse 
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse 
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse 
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse 
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse 
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse 
#deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse

在终端输入以下的命令来使更改有效

sudo apt-get update

5. 安装jetpack安装包,在PC机上安装sdkmanager软件

下面命令中的.deb文件名字依照你的版本输入,有所不同

sudo apt install ./sdkmanager_1.6.1-8175_amd64.deb

安装完成之后,在终端输入下面命令运行sdkmanager

sdkmanager

PS:我的还出现了这个错误,但是不影响,点击 continue

接下来就会出现,然后登录nvidia的账号,正式刷机

https://blog.csdn.net/qq_38522972/article/details/111570964

6.开始刷机(首先给TX2装系统)

安装包下载阶段:刚开始我使用学校无线网下载的安装包,所以我这里勾选了Download now,install later。下载完成就开始去实验室,进行第二次安装。(如果是网速够快,不需要分为两个阶段,直接不选Download now,install later,下载完成之后就安装)

​出现上图表示刷机需要的包已经下载完成。

开始安装阶段:

先连接TX2、PC机和交换机。

然后进入TX2的恢复模式:(一来可以不进,但后面也会提示你进入。)

a.确认处于关机状态,然后拔掉电源适配器,使用官方的microUSB线(切记!!!)连接TX2和PC机

b.插上电源适配器,按一下power键开机

c.按下REC(RECOVERY FORCE)不要松开!!

d.再按下RST(reset按下松开,稍微有一定的按键时长)

e.REC保持两秒后松开

官方的microUSB线。图片来自:https://blog.csdn.net/qq_46046959/article/details/111675179

进入恢复模式之后,可以在终端输入

lsusb

查看,有 Nvidia Corp,就证明链接成功,可以进行操作

https://blog.csdn.net/NSSC_K/article/details/106092499

下图也可以看出jetpack的版本为4.5.1(进入了恢复模式,图上应该显示的是connected,我当时没截图,哈哈哈)

这里不要点,Host machine,我的会报错,见文末的踩坑记录

​检测到下载的安装包

​开始安装

7.安装过程中

安装到下图时,TX2会自动开机,这时需要去TX2上操作。(TX2上的操作大概就是安装Ubuntu系统的那些设置,很快)

​TX2上的操作截图,https://blog.csdn.net/qq_38522972/article/details/111570964

​一开始没进入恢复模式,这里还会提示进入恢复模式。一般选择手动设置(Manual setup)。图片来源:https://blog.csdn.net/qq_38522972/article/details/111570964

8.然后开始安装cuda等包

装完系统之后,在PC机上填入刚才设置的账号和密码,点击 install,开始安装

然后出现下图的画面,我的PC机是通过手机开USB共享热点上网,所以和TX2连接的USB可能有点冲突,自己尝试了换个USB,没解决就skip了,不过也没什么影响。

​9.然后完成安装

安装的cuda和cudnn基本没问题,不需要查看验证。(实在是需要可以在终端输入:nvcc -V)

10.查询安装的jetpack版本

a)查看其 L4T 信息

在TX2上,终端输入:

cat /etc/nv_tegra_release # 方法1

jetson查看Jetpack版本 - 走看看

参照Nvidia的官网:https://developer.nvidia.com/embedded/jetpack-archive

b)直接查询jetpack版本

网友在Nvidia上给的回答:

sudo apt-cache show nvidia-jetpack

参考:查看Jetson系列产品JetPack的版本信息_氵文大师的博客-CSDN博客_查看jetpack版本

https://blog.csdn.net/HaoZiHuang/article/details/119903753

https://blog.csdn.net/HaoZiHuang/article/details/119903753

安装的过程参考以下文章:

TX2开发之刷机JetPack4.4(博主亲测,可解答)_fengfeng,Z的博客-CSDN博客

Jetson tx2 使用 jetpack 4.3刷机全过程

Nvidia AGX Xavier刷机指北(在STEP 01的时候不要勾选Host Machine)

查看Jetson系列产品JetPack的版本信息_氵文大师的博客-CSDN博客_jetpack版本查看

JETSON TX2刷机-Jetpack 4.4版本,总结并解决了各种刷机中遇到的问题


安装工具包

TX2的换源和上面的PC机换源是一样的,这里不赘述了。

安装谷歌拼音

1.首先在

sudo apt-get install fcitx-googlepinyin

2.在settings -> language support 里将 keyboard input method system 设置为fcitx

3.重启

更换默认的python

TX2刷机完成之后,有两个python,一个是3.6,一个是2.7。我这里需要3.6,所以需要设置默认的python为3.6。输入下列命令,把两个版本的python加入到alternatives列表中,

sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 100 
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 150

然后运行以下命令配置

sudo update-alternatives --config python

选择python3 版本对应的序号,然后退出。

输入下面命令,查看版本

python

参考:Nvidia TX2 刷机+深度学习环境配置(cuda 8.0+python 3.5+opencv 3.4+tensorflow 1.4.1+keras+pip3)

安装pip

sudo apt-get install python3-pip

查看版本

pip3 -V

升级版本

pip3 install --upgrade pip

参考:Nvidia TX2 刷机+深度学习环境配置(cuda 8.0+python 3.5+opencv 3.4+tensorflow 1.4.1+keras+pip3)

安装torch1.6和torchvision0.7.0(Nvidia的官网也有安装说明!!)

​官网截图,https://forums.developer.nvidia.com/t/pytorch-for-jetson-version-1-10-now-available/72048

安装torch

1.下载torch

得去Nvidia的官网下载专门针对jetson架构的torch安装包,我的是:

torch-1.6.0-cp36-cp36m-linux_aarch64.whl

Nvidia的下载速度很慢,我都是请同学帮忙下载的,大家也可以去csdn上碰碰运气,看看有没有人上传了你想要的.whl文件。我的这个包,我看了一下csdn上有,

torch-1.6.0-cp36-cp36m-linux_aarch64.zip_torch1.6-深度学习文档类资源-CSDN文库

2.安装torch

首先需要安装依赖,不然报错:

ImportError: libmpi_cxx.so.20: cannot open shared object file: No such file or directory
sudo apt-get install libopenblas-base libopenmpi-dev 
pip3 install torch-1.6.0-cp36-cp36m-linux_aarch64.whl

3.测试:输入python,然后import torch看看会不会报错

PS:不要先装numpy很容易出错!!!不要问我怎么知道的

参考:

OSError: libmpi_cxx.so.20: cannot open shared object file: No such file or directory(torch需要安装依赖)

Jetson 错误(一):Illegal instruction (core dumped)解决(先装numpy很容易出错)

TX2 (jetpack4.2)安装pytorch详细教程

Jetson TX2安装pytorch(jetpack4.2)

编译torchvision

torchvision的低版本0.1,0.2之类的,可以通过下面命令安装

pip3 install torchvision==0.2

我的torchvision需要0.7,不能通过pip安装,只能下载官方repo,自己编译

sudo apt-get install libjpeg-dev zlib1g-dev 
git clone -b v0.7.0 https://github.com/pytorch/vision torchvision # 版本可以自己选择 
cd torchvision 
sudo python3 setup.py install

注意:编译的时候报了个错:

fatal error: libavcodec/avcodec.h: No such file or directory

​https://shliang.blog.csdn.net/article/details/109862917

网上给出的方法很多都是说由于ffmpeg版本导致的问题,我参照这个文章就成功编译了

方法:在编译之前,对setup.py文件进行一些修改,把:

if has ffmpeg 改为if False即可

其它工具包(强烈推荐!!!)

jetson-packages-family 整理了包括Matplotlib、Pycuda、Pillow、Pandas在内的多个常用依赖库在jetson平台下的安装方法,甚至还有VSCode、Pycharm、Docker、Qt5等工具的安装方式。

参考:

Jetson AGX Xavier避坑指南(五)--环境搭建2.(python3、conda、ros、pytorch、tensorflow)

TX2安装torchvision0.5.0(实测有效)_混沌鼠的博客-CSDN博客_tx2安装torchvision

在Jetson Xavier NX上安装torchvision编译报错:fatal error: libavcodec/avcodec.h: No such file or directory


配置代码的深度学习环境

opencv-python

yacs

tqdm

pyyaml

matplotlib(一直报错,没装上)

colorama

cython

tensorboardX

pip install opencv-python 
pip install pyyaml yacs tqdm colorama matplotlib cython tensorboardX 
python setup.py build_ext --inplace

刚开始自己的numpy==1.19和torch同时装的,在torchvision之前,运行代码时报错:

Illegal instruction (core dumped)

在这查了一下:Jetson 错误(一):Illegal instruction (core dumped)解决

​用的是第二个办法解决的,先卸载了numpy

pip uninstall numpy

运行代码会报错:

ImportError: numpy.core.multiarray failed to import(因为没有numpy了呀,哈哈哈)

再重新安装numpy

pip install -U numpy

就好了!!!


踩坑记录

大部分的坑都是不懂jetson tx2造成的,所以在此记录一下,为自己和他人作参考!

Ubuntu18.04的apt-get报错

使用apt-get操作,出现了如下报错:

Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend)

查了一下:产生错误的根本原因是lock file。 lock file用于防止两个或多个进程使用相同的数据。 当运行apt或apt-commands时,它会在几个地方创建lock files。 当前一个apt命令未正确终止时,lock file未被删除,因此它们会阻止任何新的apt / apt-get命令实例,比如正在执行apt-get upgrade,在执行过程中直接ctrl+c取消了该操作,很有可能就会造成这种情况。

要解决此问题,首先要删除lock file。

lsof /var/lib/dpkg/lock 
lsof /var/lib/apt/lists/lock 
lsof /var/cache/apt/archives/lock

原文链接:Ubuntu中Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend)问题的解决

刷机的电脑配置(>80G的硬盘空间)

使用VMware虚拟机的时候用的是50G的内存,报错

step 01时点上了 Host,就会报下列错误:

Access to APT repository and ability to install Debian packages with it.

解决方案:在STEP 01的时候不要勾选Host Machine。如下图。

​参考:Nvidia AGX Xavier刷机指北

matplotlib一直没安装上

安装matplotlib的时候,一直不断下载,可能高版本的不适合,一直降低版本再下载,于是停止了,没耐心下载完,可能还没到适合我的版本。有时间试一下。

查了一下参考文章,Jetson Packages Family给的matplotlib 的安装命令是

sudo apt install libfreetype6-dev -y sudo apt install python3-matplotlib -y

参考

Jetson AGX Xavier避坑指南(五)--环境搭建2.(python3、conda、ros、pytorch、tensorflow)


文章写的很多,很琐碎,主要是笔者想把自己遇到的问题都记录下来,为自己和其它小白作参考,遇到问题能对大家有所帮助,毕竟我也是参考网上的文章才安装成功的。人人为我,我为人人!!!

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐