原创 small_munich 最后发布于2019-10-13 10:41:56 阅读数 540 收藏
展开
简述
说起在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
1
2
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
1
2
3
相关pytorch-arm版源码编译资源链接:
https://github.com/nmilosev/pytorch-arm-builds # use for python3.7
https://github.com/pytorch/pytorch/issues/8103 # use for python3.6
1
2
下面是安装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
1
2
3
4
5
不同版本的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
1
2
3
4
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
1
2
xavier上面安装numba的时候,需要手动提前编译LLVM(low level virtual machine)库。建议采用方案一:
方案一:
直接从ubuntu中进行安装(记住llvm version lowest > 7.0+):
sudo apt-get install llvm-7
1
查看llvm的路径(执行下面命令后会在终端显示llvm的安装路径):
which llvm-config-7
1
执行下面的命令:
export LLVM_CONFIG=/usr/bin/llvm-config-7
pip3 install llvmlite==0.29.0
pip3 install numba==0.44.1
1
2
3
到此,如果安装没问题的话,在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
1
2
3
方案二:
下载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
1
2
3
4
5
6
7
8
9
10
11
如果编译顺利,会在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/
1
安装过程中遇到的一些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
1
2
No module named seaborn :
解决方法:画图函数,在second.pytorch代码中用到的注释掉。
No module named pstuil : sysv_ipc plyfile
pip3 install psutil sysv_ipc plyfile
1
小结
终于在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
————————————————
版权声明:本文为CSDN博主「small_munich」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Small_Munich/article/details/102526312