树莓派4B (aarch64) 安装PyTorch 1.8 的可行方案
樹莓派4B (aarch64) 安裝PyTorch 1.8 的可行方案
最終可行方案
試了一堆方案(源碼編譯、Fast.ai的安裝文件等)之后,終于找到一個可行的方案。是在 PyTorch 官方討論社區的一個帖子中找到的,在回復中一個大佬給出了自己在2021年1月為樹莓派制作的一個 PyTorch 1.8 版本的安裝方案。如果是想在樹莓派上安裝 PyTorch 的話,只需下載其中的一個 whl 文件,然后 pip install torch-1.8.0a0-cp37-cp37m-linux_aarch64.whl 即可。筆者目前測試的各功能正常,包括
- Python 接口 import torch 測試正常
- C++ 接口 Libtorch 構建自己的文件,并運行模型測試正常,關于 C++ Libtorch 的具體構建過程,可參考 PyTorch導出JIT模型并用C++ API libtorch調用。
踩坑過程碎碎念
筆者這一天試了許多種方案,踩了許多坑,最后才發現大佬提供的 whl 文件是最快、問題最少的方案。當然這是在筆者自己的設備的情況,以下提供幾種嘗試過,但是或多過少遇到了一些問題,有的最終行不通,有的則是功能不全的方案,記錄一下,可能之后會用得到,也為看到本文的讀者提供一點思路。有清楚下面這些問題的產生原因及解決方法的大佬也歡迎留言,感激不盡。
源碼編譯安裝
以下源碼樹莓派編譯安裝 PyTorch 的步驟是翻譯自 StackOverflow 的一個問答。
預先準備
擴展交換
首先,如果設備是樹莓派3或者更低版本(也就是說,樹莓派4及以上,內存3GB及以上可跳過此步),我們需要先擴展交換(sawp),因為編譯安裝的過程非常吃內存。
修改文件 /etc/dphys-swapfile:
CONF_SWAPFILE=2048M然后執行下面的命令來更新修改:
sudo dphys-swapfile setup安裝基本包
安裝以下包:
sudo apt install build-essential make cmake git python3-pip libatlas-base-devLibtorch 的編譯需要 CMake 版本 3.15 及以上,可以通過 cmake --version 來查看。如果低于 3.15 版本可以通過以下命令來安裝新版本:
wget https://github.com/Kitware/CMake/releases/download/v3.18.0-rc1/cmake-3.18.0-rc1.tar.gz tar -xzf cmake-3.18.0-rc1.tar.gz cd cmake<version> mkdir build cd build cmake .. make sudo make installsudo apt remove cmake sudo ln -s /usr/local/bin/cmake /usr/bin/cmake sudo ldconfig源碼構建 PyTorch 并得到 ARM 后端的 Libtorch
再次提醒一下,如果內存小于3GB,則需要將交換增加到 2048MB。
安裝所需的包:
sudo apt-get update sudo apt-get install build-essential tk-dev libncurses5-dev libncursesw5-dev libreadline6-dev libdb5.3-dev libgdbm-dev libsqlite3-dev libssl-dev libbz2-dev libexpat1-dev liblzma-dev zlib1g-dev下載 PyTorch 源碼:
git clone --recursive https://github.com/pytorch/pytorch --branch=release/1.6 cd pytorch初始化所有子模塊:
git submodule update --init --recursive git submodule update --remote third_party/protobuf # 不然這里會有個bug設置環境變量,將以下內容添加到 ~/.bashrc 文件:
export NO_CUDA=1 export NO_DISTRIBUTED=1 export NO_MKLDNN=1 export NO_NNPACK=1 export NO_QNNPACK=1更新剛才的修改:
source ~/.bashrc安裝所需的 Python 依賴:
pip3 install setuptools pyyaml numpy開始構建安裝 PyTorch ,別忘了 -E 參數來確定環境變量都被用到,(可以歇會兒了,時間巨長):
sudo -E python setup.py install檢查安裝是否成功:
python import torch torch.__version__源碼編譯安裝首先是被被github的網絡狀況惡心了大半天),因為要下一堆子模塊,經常下著下著網絡突然不行了,在下載完之后 sudo -E python setup.py install ,還是會遇到報錯。
Fast.ai 安裝文件
pip install torch -f https://torch.kmtea.eu/whl/stable.html整個安裝過程是順利的,然后 import torch 測試也是沒有問題的,成功后用 Libtorch CMake 構建自己的源文件也成功,但是運行時卻報錯 Illegal instruction (core dumped)。
CMake Warning at /home/pisong/miniconda3/lib/python3.7/site-packages/torch/share/cmake/Torch/TorchConfig.cmake:22 (message):static library kineto_LIBRARY-NOTFOUND not found. Call Stack (most recent call first):/home/pisong/miniconda3/lib/python3.7/site-packages/torch/share/cmake/Torch/TorchConfig.cmake:127 (append_torchlib_if_found)CMakeLists.txt:4 (find_package)看 CMake 的警告信息(雖然有這個警告,但是整個編譯過程順利完成了)應該是少庫,筆者又源碼編譯了 kineto_LIBRARY 庫之后還是不行,還是報 Illegal instruction (core dumped)。
注意,此方法安裝是正常的,在 Python 接口使用時也沒遇到什么問題,但是用 Libtorch 構建出的自己的文件卻不能正常運行。
總結
以上是生活随笔為你收集整理的树莓派4B (aarch64) 安装PyTorch 1.8 的可行方案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【深度学习】深入理解Batch Norm
- 下一篇: 苏式坦克的传奇经典T-72主战坦克