最近接触到了Nvidia Jetson TX2这块开发板,想入手测试一下自己的深度学习模型,因此和TX2的故事开始了!
前言
本人刷机多次,尝试各种大小坑:
-
自带系统搭建环境:刚开始不想刷机,就自己手动安装cuda等包,发现很多安装包不好找,好不容易下载的torch应该是支持cuda10.0,然后无奈放弃这条路
-
借助jetpack3.3搭建环境:只支持Ubuntu16.04的系统,实验室没有,只能用虚拟机来装了。刷好了之后,也报的相同的错,这时我才领悟到原来是需要cuda10.0以上的,又换!!!(这一步,多次搭建了VMware的系统,主要原因是提示内存不够,最后分配了50G才成功刷机)
-
借助jetpack4.2搭建:刚开始第二次尝试就是准备用这个的,但是登录界面一直进不去,提示我的账号或密码错误,反复确认是正确的,我还特地重新注册了个账号,同样的错误。后面才发现是这个包太久了,Nvidia应该不怎么维护了。
-
借助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
参照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很容易出错)
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。如下图。
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)
文章写的很多,很琐碎,主要是笔者想把自己遇到的问题都记录下来,为自己和其它小白作参考,遇到问题能对大家有所帮助,毕竟我也是参考网上的文章才安装成功的。人人为我,我为人人!!!