一、基本介绍
NX开发板全名Jetson Xavier NX(后简称为NX),是NVIDIA英伟达提供的模组和开发者套件,保持Jetson Nano小巧尺寸的同时拥有相当于Jetson TX2的10倍以上的高性能。其预制基于ARM架构下的Ubuntu系统,提供GPU环境,大大提升了强化学习算法的训练速度。
图为NX开发板示意图,其中各部分组成如下:
1.用于主存储的microSD卡插槽
2.40针扩展引脚
3.Micro-USB端口
4.千兆以太网端口
5.USB 3.1 A 端口 (x4)
6.HDMI 输出端口
7.DP接口
8.19V直流电源插孔
9.MIPI CSI 摄像头接口
GPU |
NVIDIA Volta architecture with 384 NVIDIA CUDA® cores and 48 Tensor cores |
CPU |
6-core NVIDIA Carmel ARM®v8.2 64-bit CPU 6 MB L2 + 4 MB L3 |
DL Accelerator |
2x NVDLA Engines |
Vision Accelerator |
7-Way VLIW Vision Processor |
Memory |
8 GB 128-bit LPDDR4x @ 51.2GB/s |
Storage |
microSD (not included) |
Video Encode |
2x 4K @ 30 | 6x 1080p @ 60 | 14x 1080p @ 30 (H.265/H.264) |
Video Decode |
2x 4K @ 60 | 4x 4K @ 30 | 12x 1080p @ 60 | 32x 1080p @ 30 (H.265) |
Camera |
2x MIPI CSI-2 DPHY lanes |
Connectivity |
Gigabit Ethernet, M.2 Key E (WiFi/BT included), M.2 Key M (NVMe) |
Display |
HDMI and display port |
USB |
4x USB 3.1, USB 2.0 Micro-B |
Others |
GPIO, I2C, I2S, SPI, UART |
Mechanical |
103 mm x 90.5 mm x 34.66 mm |
↑表1 NX技术参数
为实现强化学习算法在NX上成功运行,需要配置相应的环境。其主要难点在于ARM架构下强化学习相关平台的调用,例如Pytorch和Tensorflow的安装。由于官方基本不提供ARM架构下的软件支持,NVIDIA推出了一系列安装包以使得强化学习平台适配NX。
二、预先准备
空白TF(MicroSD)卡(建议SanDisk 64GB金卡及以上,保证容量和读写速度)
读卡器(保证读写速度)
支持DP或HDMI接口的外接显示器
USB键鼠(NX需要外接显示器及键鼠实现输出、输入)
三、环境配置具体流程
3.1 NX刷机
NX通过调用SD卡中的内容运行系统,因此需要预先对SD卡进行烧录,此过程需要利用空白SD卡。
1)下载NX开发板套件(SD Card Image)
下载链接:Jetson Download Center | NVIDIA Developer
点击下载可能需要登录Nvidia的账号,文件大小大概6GB左右。或使用链接:
https://developer.nvidia.com/jetson-nx-developer-kit-sd-card-image
2)下载烧录工具
下载链接:balenaEtcher - Flash OS images to SD cards & USB drives
下载解压后安装软件,准备烧录TF卡。
3)烧录TF卡
点击Flash form file选择刚才下载好的SD Card Image压缩包将TF卡插入到读卡器,并插入到电脑主机的USB口,点击select target选择要烧录到的TF卡(有的也会自动识别TF卡)
点击Flash,输入root密码后,进行烧录,根据读卡器、TF卡等的速度不同,烧录花费的时间也有不同。
4)开机启动
将烧录好的TF卡插入NX开发板,按照NVIDIA官方说明的操作,连接好鼠标、键盘、显示器、最后连接电源,开发板将自动启动。
开机后将进入系统配置的界面,语言选择”English”,地点选择中国上海,创建用户名、密码和计算机名,配置完成后系统会重新启动。
刷机成功!
3.2 NX相关组件安装
1)版本检查命令行
驱动版本:head -n 1 /etc/nv_tegra_release
内核版本:uname -r
操作系统:lsb_release -i -r
CUDA版本:nvcc -V
cuDNN版本:dpkg -l libcudnn8
opencv版本:dpkg -l libopencv
Tensorrt版本:dpkg -l tensorrt
若无法查询到CUDA和cuDNN版本,解决方法如下:
利用gedit打开 ~ 路径下.bashrc文件,终端输入:
sudo vim ~./bashrc
在文件的最后添加以下内容(按a进入编辑模式,按esc退出编辑模式,按:wq保存文件后回车即可退出(注意有冒号)):
export PATH=/usr/local/cuda-10.2/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
export CUDA_HOME=/usr/local/cuda-10.2
重新执行.bashrc文件,直接生效;
source ~./bashrc
此时即可利用前述命令查看CUDA和CUDNN版本。
2)换源
添加国内清华源,首先需要备份原本的source.list文件,防止误操作后无法恢复。
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak #备份原文件
sudo gedit /etc/apt/sources.list
然后删除所有内容,复制下列内容到到sources.list后保存
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-security main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-updates main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-backports main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-security main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-updates main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-backports main multiverse restricted universe
之后打开终端输入:
sudo apt-get update
换源成功!注意处理器是aarch64架构的Ubuntu 18.04.2 LTS系统类型的,要使用与之匹配的源。
3)python3及pip3安装
NX开发套件中预装的python版本为2.7,但由于现在强化学习用到的更多的版本为python3,在此介绍直接安装python3的方法,下一节将介绍如何在NX中利用anaconda配置python3及强化学习环境。
直接在终端输入:
sudo apt-get install python3-pip python3-dev
之后将pip升级为最新版:
python3 -m pip install --upgrade pip #升级pip
4)远程桌面控制软件NoMachine
软件下载地址:NoMachine - Free Remote Desktop For Everybody
注意NX开发板要选择对应的NoMachine for ARM版
下载后安装即可使用。
Ubuntu系统下安装deb文件命令:
sudo dpkg -i nomachine_6.10.12_1_arm64.deb
5)安装Jetson-stats管理工具
利用该软件可以查看cpu 电源,gpu的使用 频率和调度等情况。
在pip配置好的情况下,直接在终端pip3安装:
pip3 install jetson-stats
安装好后输入:
jtop
即可查看NX开发套件的各项资源使用情况,按 q 结束退出。
3.3 强化学习环境配置
运行强化学习需要的基本环境有:python3、tensorflow、pytorch及其他依赖等。通常利用anaconda对不同项目进行管理,conda可以为不同的项目创建不同的虚拟环境,不同的虚拟环境中python版本和依赖均可不同。便于项目的管理、运行和迁移。NX通常以强化学习算法的运行平台而不是算法的训练平台出现,因此不需要利用conda对环境进行管理。且由于conda中的许多命令不支持arm架构下的算法环境,通常不采用此方法。接下来的环境配置将基于前文中已做换源处理的系统python3展开,直接在终端进行配置即可。同时,对conda的安装和使用也做简要介绍,配置者可根据需要灵活运用。
1.Miniconda安装
下载链接:
Miniconda — Conda documentation
创建文件夹:mkdir miniconda
下载安装包至文件夹中并转到文件夹:cd miniconda
安装:
bash Miniconda3-latest-Linux-x86_64.sh
安装过程中会弹出软件协议条款,直接按下Ctrl+C便可以跳过阅读过程,直接按照提示,输入yes,然后按回车键,同意软件协议条款。接下来继续按回车,将miniconda安装到电脑上。安装好之后,出现提示:
这一步务必输入yes,保证安装之后的正常使用。重启终端之后,就可以正常使用miniconda了。重启终端,然后分别执行如下命令,更换conda和pip的软件源,提高软件的下载安装速度:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes
pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
再次重启终端之后,你会发现每次打开终端默认都会自动进入到miniconda的base环境中,终端中多了“base”字样。将拖慢终端打开速度,并且有可能干扰到其它软件的安装。每次打开终端之后先执行conda deactivate命令退出则非常麻烦。执行如下命令,便可以解决终端每次打开都进入conda的base环境的问题:
conda config --set auto_activate_base false
创建conda环境:
conda create -n RL python=3.7
其中RL为创建的虚拟环境名称,可自定义。
查看conda环境:
conda env list
激活conda环境:
conda activate RL
关闭conda环境:
conda deactivate RL
删除conda环境:
conda env remove --name RL
值得注意的是,conda环境在现有的源中已无法直接在ARM结构下创建python3.6的虚拟环境,因此前文所写为3.7。若采用conda环境配置后续环境,需要注意python版本与Pytorch、Tensorflow等的版本对应关系!接下来的安装与配置均建立在系统环境基础上,不建立在conda环境基础上。
2)Pytorch安装
官方下载链接:PyTorch for Jetson - version 1.11 now available - Jetson Nano - NVIDIA Developer Forums
安装依赖:
sudo pip3 install -U pip testresources setuptools
sudo apt-get install libopenblas-base libopenmpi-dev
sudo pip3 install mpi4py
sudo pip3 install Cython
下载Pytorch-1.6.0的.whl文件:https://forums.developer.nvidia.com/t/pytorch-for-jetson-version-1-6-0-now-available/72048
下载完成拷贝到NX后,进行安装,注意文件存放位置和执行命令的位置相一致,输入命令:
pip3 install torch-1.6.0-cp36-cp36m-linux_aarch64.whl
安装完成后测试:
python
>>>import torch
>>>print(torch.cuda.is_available()) #测试cuda是否能用
>>>True #返回Ture说明cuda能用
安装torchvision:
sudo apt-get install libjpeg-dev zlib1g-dev
git clone --branch v0.7.0 https://github.com/pytorch/vision torchvision
如果git下载失败,可以使用码云将https://github.com/pytorch/vision导入,然后如图选择,选择完成后进行下载。
cd进入到目录中,git命令下载时修改了文件名称,为torchvision(码云默认下载为vision,无修改)cd路径自行判断。
cd vision
sudo python3 setup.py install
安装到最后需要pillow包,最后可能会下载失败。但是torchvision已经安装成功了,输入命令pip3 list可以看到。
pip3 install ‘pillow<7’
安装pillow包即可。
验证程序:
import torch
print(torch.__version__)
print('CUDA available: ' + str(torch.cuda.is_available()))
print('cuDNN version: ' + str(torch.backends.cudnn.version()))
a = torch.cuda.FloatTensor(2).zero_()
print('Tensor a = ' + str(a))
b = torch.randn(2).cuda()
print('Tensor b = ' + str(b))
c = a + b
print('Tensor c = ' + str(c))
3)Tensorflow安装
官方教程:Official TensorFlow for Jetson AGX XavierNX - Jetson Xavier NX - NVIDIA Developer Forums
查看jetpack版本:
sudo apt-cache show nvidia-jetpack
安装依赖:
sudo apt-get update
sudo apt-get install libhdf5-serial-dev hdf5-tools libhdf5-dev zlib1g-dev zip libjpeg8-dev liblapack-dev libblas-dev gfortran
sudo apt-get install python3-pip
sudo pip3 install -U pip testresources setuptools
sudo pip3 install -U numpy==1.16.1 future==0.17.1 mock==3.0.5 h5py==2.9.0 keras_preprocessing==1.0.5 keras_applications==1.0.8 gast==0.2.2 futures protobuf pybind11
安装tensorflow:
Tensorflow与nv和jetpack版本对应表如下:
https://docs.nvidia.com/deeplearning/frameworks/install-tf-jetson-platform-release-notes/tf-jetson-rel.html#tf-jetson-rel
tensorflow-gpu已更名为tensorflow,因此根据官方教程安装:
sudo pip3 install --pre --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v44 ‘tensorflow<2’
由于采用ARM架构,NX中的Pycharm安装首先需要配置java环境,终端输入:
sudo apt-cache search openjdk
sudo apt-get install openjdk-8-jdk
安装结束后可输入 java -version 确认是否安装成功
输入which javac
输入file /usr/bin/javac
输入file /etc/alternatives/javac
输入file /usr/lib/jvm/java-8-openjdk-arm64/bin/javac
输入sudo gedit ~/.bashrc
在文件的最下方输入:
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-arm64
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
保存后,关闭gedit
输入source ~/.bashrc
Java环境配置完成!
Pycharm安装包官方下载链接:Download PyCharm: Python IDE for Professional Developers by JetBrains
网盘链接:
链接:百度网盘 请输入提取码
提取码:4umy
在下载位置输入解压命令tar -zxvf pycharm-community-2020.1.1.tar.gz
解压完成后输入sudo mv pycharm-community-2020.1.1/ /opt将安装文件移动到opt下。
输入/opt/pycharm-community-2020.1.1/bin/pycharm.sh启动Pycharm
安装过程中的数据分享选择Don't Send,设置选择Skip Remaining and Set Defaults,安装成功!
打开Pycharm后将其锁定在左侧菜单栏中,以便下次打开。
若未锁定则通过/opt/pycharm-community-2020.1.1/bin/pycharm.sh打开
Pycharm安装完成后若遇到不报错但无法运行强化学习代码的情况,例如Illegal instruction(core dumped)问题,解决方法如下:
终端输入sudo vi ~/.bashrc
在最后添加:
export OPENBLAS_CORETYPE=ARMV8
然后再输入source ~/.bashrc
即可成功运行!