樹莓派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-dev

Libtorch 的編譯需要 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 構建出的自己的文件卻不能正常運行。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/532592.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/532592.shtml
英文地址,請注明出處:http://en.pswp.cn/news/532592.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

sqli-lab———writeup(11~17)

less11 用戶名提交單引號顯示sql語法錯誤&#xff0c;故存在sql注入 根據單引號報錯&#xff0c;在用戶名和密碼任意行輸入 萬能密碼&#xff1a;‘ or 11# 輸入后username語句為&#xff1a;SELECT username, password FROM users WHERE username or 11; 雙引號 password語…

深入理解Python中的全局解釋鎖GIL

深入理解Python中的全局解釋鎖GIL 轉自&#xff1a;https://zhuanlan.zhihu.com/p/75780308 注&#xff1a;本文為蝸牛學院資深講師卿淳俊老師原創&#xff0c;首發自公眾號https://mp.weixin.qq.com/s/TBiqbSCsjIbNIk8ATky-tg&#xff0c;如需轉載請私聊我處獲得授權并注明出處…

sqli-lab————Writeup(18~20)各種頭部注入

less18 基于錯誤的用戶代理&#xff0c;頭部POST注入 admin admin 登入成功&#xff08;進不去重置數據庫&#xff09; 顯示如下 有user agent參數&#xff0c;可能存在注入點 顯示版本號&#xff1a; 爆庫&#xff1a;User-Agent:and extractvalue(1,concat(0x7e,(select …

Python GIL

轉自&#xff1a;https://blog.csdn.net/weixin_41594007/article/details/79485847 Python GIL 在進行GIL講解之前&#xff0c;我們可以先回顧一下并行和并發的區別&#xff1a; 并行&#xff1a;多個CPU同時執行多個任務&#xff0c;就好像有兩個程序&#xff0c;這兩個程序…

sqli-lab——Writeup21~38(各種過濾繞過WAF和)

Less-21 Cookie Injection- Error Based- complex - string ( 基于錯誤的復雜的字符型Cookie注入) base64編碼&#xff0c;單引號&#xff0c;報錯型&#xff0c;cookie型注入。 本關和less-20相似&#xff0c;只是cookie的uname值經過base64編碼了。 登錄后頁面&#xff1a;…

Libtorch報錯:terminate called after throwing an instance of ‘c10::Error‘ what():isTensor()INTERNAL ASS

Libtorch報錯&#xff1a;terminate called after throwing an instance of ‘c10::Error’ what(): isTensor() INTERNAL ASSERT FAILED 報錯 問題出現在筆者想要將 yolov5 通過 PyTorch 的 C 接口 Libtorch 部署到樹莓派上。 完整報錯信息&#xff1a; terminate called …

sqli-lab——Writeup(38~over)堆疊等......

知識點&#xff1a; 1.堆疊注入原理&#xff08;stacked injection&#xff09; 在SQL中&#xff0c;分號&#xff08;;&#xff09;是用來表示一條sql語句的結束。試想一下我們在 ; 結束一個sql語句后繼續構造下一條語句&#xff0c;會不會一起執行&#xff1f;因此這個想法…

mysql常規使用(建立,增刪改查,視圖索引)

目錄 1.數據庫建立 2.增刪改查 3.視圖建立&#xff1a; 1.數據庫建立 mysql> mysql> show databases; ----------------------------------- | Database | ----------------------------------- | information_schema | | ch…

php操作mysql數據庫

phpmyadmin phpadmin是一個mysql圖形化管理工具&#xff0c;是一款實用php開發的mysql苦戶端軟件&#xff0c;基于web跨平臺的管理系統&#xff0c;支持簡體中文&#xff0c;官網&#xff1a;www.phpmyadmin.net可以下載免費最新版。提供圖形化操作界面&#xff0c;完成對mysq…

C:C++ 函數返回多個參數

C/C 函數返回多個參數 轉自&#xff1a;https://blog.csdn.net/onlyou2030/article/details/48174461 筆者是 Python 入門的&#xff0c;一直很困惑 C/C 中函數如何返回多個參數。 如果一個函數需要返回多個參數&#xff0c;可以采用以下兩種方法&#xff1a; 傳引用或指針…

sql預編譯

一.數據庫預編譯起源: 數據庫接受sql語句,需要解析和制定執行,中間需要花費一段時間. 有時候同一語句可能會多次執行, 那么就會造成資源的浪費 如何減少編譯執行的時間 ? 就有了預編譯,預編譯是將這類語句提前用占位符替代,一次編譯,多次執行. 預編譯后的執行代碼會被緩存下來…

C++中智能指針的原理、使用、實現

C中智能指針的原理、使用、實現 轉自&#xff1a;https://www.cnblogs.com/wxquare/p/4759020.html 1 智能指針的作用 C程序設計中使用堆內存是非常頻繁的操作&#xff0c;堆內存的申請和釋放都由程序員自己管理。程序員自己管理堆內存可以提高了程序的效率&#xff0c;但是…

Xctf練習sql注入--supersqli

三種方法 方法一 1 回顯正常 1’回顯不正常,報sql語法錯誤 1’ -- 回顯正常,說明有sql注入點,應該是字符型注入(# 不能用) 1’ order by 3 -- 回顯失敗,說明有2個注入點 1’ union select 1,2 -- 回顯顯示過濾語句: 1’; show databases -- 爆數據庫名 -1’; show tables …

深拷貝與淺拷貝、值語義與引用語義對象語義 ——以C++和Python為例

深拷貝與淺拷貝、值語義與引用語義/對象語義 ——以C和Python為例 值語義與引用語義&#xff08;對象語義&#xff09; 本小節參考自&#xff1a;https://www.cnblogs.com/Solstice/archive/2011/08/16/2141515.html 概念 在任何編程語言中&#xff0c;區分深淺拷貝的關鍵都…

一次打卡軟件的實戰滲透測試

直接打卡抓包, 發現有疑似企業網站,查ip直接顯示以下頁面 直接顯示了后臺安裝界面…就很有意思 探針和phpinfo存在 嘗試連接mysql失敗 fofa掃描為阿里云服務器 找到公司官網使用nmap掃描,存在端口使用onethink 查詢onethink OneThink是一個開源的內容管理框架&#xff0c;…

C++中類的拷貝控制

C中類的拷貝控制 轉自&#xff1a;https://www.cnblogs.com/ronny/p/3734110.html 1&#xff0c;什么是類的拷貝控制 當我們定義一個類的時候&#xff0c;為了讓我們定義的類類型像內置類型&#xff08;char,int,double等&#xff09;一樣好用&#xff0c;我們通常需要考下面…

centos7ubuntu搭建Vulhub靶場(推薦Ubuntu)

這里寫目錄標題一.前言總結二.成功操作&#xff1a;三.出現報錯&#xff1a;四.vulhub使用正文&#xff1a;一.前言總結二.成功操作&#xff1a;三.出現報錯&#xff1a;四.vulhub使用看完點贊關注不迷路!!!! 后續繼續更新優質安全內容!!!!!一.前言總結 二.成功操作&#xff1…

使用 PyTorch 數據讀取,JAX 框架來訓練一個簡單的神經網絡

使用 PyTorch 數據讀取&#xff0c;JAX 框架來訓練一個簡單的神經網絡 本文例程部分主要參考官方文檔。 JAX簡介 JAX 的前身是 Autograd &#xff0c;也就是說 JAX 是 Autograd 升級版本&#xff0c;JAX 可以對 Python 和 NumPy 程序進行自動微分。可以通過 Python的大量特征…

Yapi Mock 遠程代碼執行漏洞

跟風一波復現Yapi 漏洞描述&#xff1a; YApi接口管理平臺遠程代碼執行0day漏洞&#xff0c;攻擊者可通過平臺注冊用戶添加接口&#xff0c;設置mock腳本從而執行任意代碼。鑒于該漏洞目前處于0day漏洞利用狀態&#xff0c;強烈建議客戶盡快采取緩解措施以避免受此漏洞影響 …

C++ ACM模式輸入輸出

C ACM模式輸入輸出 以下我們都以求和作為題目要求&#xff0c;來看一下各種輸入輸出應該怎么寫。 1 只有一個或幾個輸入 輸入樣例&#xff1a; 3 5 7輸入輸出模板&#xff1a; int main() {int a, b, c;// 接收有限個輸入cin >> a >> b >> c;// 輸出結果…