树莓派4B (aarch64) 安装PyTorch 1.8 的可行方案
樹(shù)莓派4B (aarch64) 安裝PyTorch 1.8 的可行方案
最終可行方案
試了一堆方案(源碼編譯、Fast.ai的安裝文件等)之后,終于找到一個(gè)可行的方案。是在 PyTorch 官方討論社區(qū)的一個(gè)帖子中找到的,在回復(fù)中一個(gè)大佬給出了自己在2021年1月為樹(shù)莓派制作的一個(gè) PyTorch 1.8 版本的安裝方案。如果是想在樹(shù)莓派上安裝 PyTorch 的話,只需下載其中的一個(gè) whl 文件,然后 pip install torch-1.8.0a0-cp37-cp37m-linux_aarch64.whl 即可。筆者目前測(cè)試的各功能正常,包括
- Python 接口 import torch 測(cè)試正常
- C++ 接口 Libtorch 構(gòu)建自己的文件,并運(yùn)行模型測(cè)試正常,關(guān)于 C++ Libtorch 的具體構(gòu)建過(guò)程,可參考 PyTorch導(dǎo)出JIT模型并用C++ API libtorch調(diào)用。
踩坑過(guò)程碎碎念
筆者這一天試了許多種方案,踩了許多坑,最后才發(fā)現(xiàn)大佬提供的 whl 文件是最快、問(wèn)題最少的方案。當(dāng)然這是在筆者自己的設(shè)備的情況,以下提供幾種嘗試過(guò),但是或多過(guò)少遇到了一些問(wèn)題,有的最終行不通,有的則是功能不全的方案,記錄一下,可能之后會(huì)用得到,也為看到本文的讀者提供一點(diǎn)思路。有清楚下面這些問(wèn)題的產(chǎn)生原因及解決方法的大佬也歡迎留言,感激不盡。
源碼編譯安裝
以下源碼樹(shù)莓派編譯安裝 PyTorch 的步驟是翻譯自 StackOverflow 的一個(gè)問(wèn)答。
預(yù)先準(zhǔn)備
擴(kuò)展交換
首先,如果設(shè)備是樹(shù)莓派3或者更低版本(也就是說(shuō),樹(shù)莓派4及以上,內(nèi)存3GB及以上可跳過(guò)此步),我們需要先擴(kuò)展交換(sawp),因?yàn)榫幾g安裝的過(guò)程非常吃內(nèi)存。
修改文件 /etc/dphys-swapfile:
CONF_SWAPFILE=2048M然后執(zhí)行下面的命令來(lái)更新修改:
sudo dphys-swapfile setup安裝基本包
安裝以下包:
sudo apt install build-essential make cmake git python3-pip libatlas-base-devLibtorch 的編譯需要 CMake 版本 3.15 及以上,可以通過(guò) cmake --version 來(lái)查看。如果低于 3.15 版本可以通過(guò)以下命令來(lái)安裝新版本:
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源碼構(gòu)建 PyTorch 并得到 ARM 后端的 Libtorch
再次提醒一下,如果內(nèi)存小于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 # 不然這里會(huì)有個(gè)bug設(shè)置環(huán)境變量,將以下內(nèi)容添加到 ~/.bashrc 文件:
export NO_CUDA=1 export NO_DISTRIBUTED=1 export NO_MKLDNN=1 export NO_NNPACK=1 export NO_QNNPACK=1更新剛才的修改:
source ~/.bashrc安裝所需的 Python 依賴(lài):
pip3 install setuptools pyyaml numpy開(kāi)始構(gòu)建安裝 PyTorch ,別忘了 -E 參數(shù)來(lái)確定環(huán)境變量都被用到,(可以歇會(huì)兒了,時(shí)間巨長(zhǎng)):
sudo -E python setup.py install檢查安裝是否成功:
python import torch torch.__version__源碼編譯安裝首先是被被github的網(wǎng)絡(luò)狀況惡心了大半天),因?yàn)橐乱欢炎幽K,經(jīng)常下著下著網(wǎng)絡(luò)突然不行了,在下載完之后 sudo -E python setup.py install ,還是會(huì)遇到報(bào)錯(cuò)。
Fast.ai 安裝文件
pip install torch -f https://torch.kmtea.eu/whl/stable.html整個(gè)安裝過(guò)程是順利的,然后 import torch 測(cè)試也是沒(méi)有問(wèn)題的,成功后用 Libtorch CMake 構(gòu)建自己的源文件也成功,但是運(yùn)行時(shí)卻報(bào)錯(cuò) 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 的警告信息(雖然有這個(gè)警告,但是整個(gè)編譯過(guò)程順利完成了)應(yīng)該是少庫(kù),筆者又源碼編譯了 kineto_LIBRARY 庫(kù)之后還是不行,還是報(bào) Illegal instruction (core dumped)。
注意,此方法安裝是正常的,在 Python 接口使用時(shí)也沒(méi)遇到什么問(wèn)題,但是用 Libtorch 構(gòu)建出的自己的文件卻不能正常運(yùn)行。
總結(jié)
以上是生活随笔為你收集整理的树莓派4B (aarch64) 安装PyTorch 1.8 的可行方案的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【深度学习】深入理解Batch Norm
- 下一篇: ONNX再探