天天看點

NVIDIA_Jetson_Xavier安裝second.pytorch環境

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

繼續閱讀