原創 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