NVIDIA_Jetson_Xavier安装second.pytorch环境

简述

  说起在nvidia的xavier上面安装second.pytorch算法环境,也是醉了。没有什么特别的原因,就是在没有对second.pytorch算法pytorch模型进行tensorrt加速时候,单纯的项测试一下该算法能够跑多少fps,为以后优化过在tensorrt下进行对比。好吧,这个单纯的想法,导致付出时间不少。以此记录下来,避免其它相同需求的同学跨坑。ok,废话不多说,那我们开始遨游arm环境吧。

Xavier install second.pytorch Envs

  首先,建议你的xavier上面使用python3系列的环境,建议使用一下python3.6系列的,方便后续其它软件可以直接安装。(我编译或源代码的whl有提供,省去你编译的时间与编译出错)。下面我们在xavier上先进行一下python的软件环境切换:

alias python="/usr/bin/python3" # use python3 envs
alias python="/usr/bin/python2" # use python2 envs
install torch & torchvision envs

  在xavier上面编译安装pytorch环境算是一个费劲点,好在github上面有些说明关于源码编译的过程。你可以直接使用我编译好torch的whl,直接pip安装。当然,我把编译torch的相关资源链接会给出来。

xavier上编译的torch-1.1.0的arm版本:torch-1.1.0-cp36-cp36m-linux_aarch64.whl

百度网盘下载链接:
web-link: https://pan.baidu.com/s/1LT1owyk8BXUmApUFtDqHNg
passwd : qweu

pip3 install torch-1.1.0-cp36-cp36m-linux_aarch64.whl
# if failed msgs: not supported on this platform, please input this command as follows:
pip3 install --upgrade torch-1.1.0-cp36-cp36m-linux_aarch64.whl

相关pytorch-arm版源码编译资源链接:

https://github.com/nmilosev/pytorch-arm-builds # use for python3.7
https://github.com/pytorch/pytorch/issues/8103 # use for python3.6

下面是安装torchvision,参考nvidia官方里的issues的答案:

$ sudo apt-get install libjpeg-dev zlib1g-dev
$ git clone -branch v0.3.0 https://github.com/pytorch/vision torchvision
$ cd torchvision
$ sudo python3 setup.py install
$ cd ../ # attempting to load torchvision from build dir will result in import error

不同版本的torch所对应的torchvision:

PyTorch v1.0 - torchvision v0.2.2
PyTorch v1.1 - torchvision v0.3.0
PyTorch v1.2 - torchvision v0.4.0
PyTorch v1.3 - torchvision v0.4.2
install third_party for using pip

  安装好torch与torchvision之后,将second.pytorch的三方库安装一下:ps 这里说下如果安装过程中出现了错误,请重新尝试可能是网络连接的问题,或者是安装三方库的lib出错

pip3 install fire tensorboardX protobuf opencv-python
pip3 install scikit-image scipy pillow

  xavier上面安装numba的时候,需要手动提前编译LLVM(low level virtual machine)库。建议采用方案一:

方案一:

直接从ubuntu中进行安装(记住llvm version lowest > 7.0+):

sudo apt-get install llvm-7

查看llvm的路径(执行下面命令后会在终端显示llvm的安装路径):

which llvm-config-7

执行下面的命令:

export LLVM_CONFIG=/usr/bin/llvm-config-7
pip3 install llvmlite==0.29.0
pip3  install numba==0.44.1

到此,如果安装没问题的话,在python环境下看能否import numba成功,可以的话说明已经安装成功,接下来在.bashrc下面添加导出路径。

export NUMBAPRO_CUDA_DRIVER=/usr/lib/aarch64-linux-gnu/libcuda.so   # (set your Xavier cuda lib path)
export NUMBAPRO_NVVM=/usr/local/cuda/nvvm/lib64/libnvvm.so # set your libnvvm path
export NUMBAPRO_LIBDEVICE=/usr/local/cuda/nvvm/libdevice 

方案二:

下载LLVM源码在xavier上面进行手动编译,这样比较不容易出错。当然,你需要安装好cmake>3.13.2为了后面编译spconv的whl。

资源链接:https://devtalk.nvidia.com/default/topic/1050899/jetson-agx-xavier/numba-installation-issue-on-jetson-xavier/post/5334339/#5334339

  接下来,就要在xavier上面编译spconv三方库了,步骤与traveller59/spconv一致,可以参考传送门。需要cmake lowest version > 3.13.2,同时先把libboost-all-dev安装上。


git clone https://github.com/traveller59/spconv.git --recursive
sudo apt-get install libboost-all-dev 

# Download cmake >= 3.13.2, then add cmake executables to PATH
# If your sys path cmake version is > 3.13.2, this step could be pass
export PATH=$PATH:/your_camke_path/

#Ensure you have installed pytorch 1.0+ in your environment, run python setup.py bdist_wheel (don't use python setup.py install

#Run cd ./dist, use pip to install generated whl file

如果编译顺利,会在dist文件下面发现编译好的whl的arm文件,当然你可以直接下载我编译好的spconv的whl文件直接进行pip3安装:

xavier上面编译的spconv安装文件: spconv-1.1-cp36-cp36m-linux_aarch64.whl
百度网盘下载链接:

web-link: https://pan.baidu.com/s/1AomD00X4C4uOYMDVeFL0jg
passwd: w3qi

最后,不要忘记将second.pytorch/添加致PYTHONPATH:

export PYTHONPATH=$PYTHONPATH:/your_second.pytorch_path/
安装过程中遇到的一些issues:

Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarly unavailable).
Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is an other process using it?

解决方法:

sudo rm /var/lib/dpkg/lock-fronted 
sudo rm /var/lib/dpkg/lock

No module named seaborn :

解决方法:画图函数,在second.pytorch代码中用到的注释掉。

No module named pstuil : sysv_ipc plyfile

pip3  install   psutil   sysv_ipc   plyfile 
小结

  终于在xavier上面将second.pytorch的环境安装结束了,ARM上面的环境支持还是很少的,基本都需要源码编译,不支持anaconda的方式。不过还好最终通过cmake解决测试一下second.pytorch的pointpillars算法的fps,我的系统GPU环境:ubuntu18.04 + Xavier + cuda10.0: 4hz,本机测试算法的fps: ubuntu18.04 + RTX2080 + cuda10.0: 21hz。看来还是要采用tensorrt的加速来看下pointpillars的效果最终能够跑多少hz,后续会改写成c/c++代码在tensorrt下面看效果。

参考文献

https://github.com/traveller59/second.pytorch
https://github.com/traveller59/spconv
https://developer.download.nvidia.cn/assets/embedded/secure/jetson/xavier/docs/jetson_agx_xavier_developer_kit_user_guide.pdf?3h04EtHdR4JSCtkkiHs3GZtrgApbhXWml-lp7Jc3Rfgkglg5h8uXGKTb5tu4XhJ-XPbV0xbQKStNE6I9oTUGM40ZioqOjy7t_UruJVkvDsBDEnJDmErObzG3C6QXHJGBPNYsMRHrA6Ya_lZwXfOuax9keApsjf0kZibgmQYm4N3dftcmqNDDi5x-b9F4FH1l6m1zGSUeNA

你可能感兴趣的:(深度学习)