树莓派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 构建出的自己的文件却不能正常运行。

树莓派4B (aarch64) 安装PyTorch 1.8 的可行方案相关推荐

  1. 树莓派4b Opencv安装(真实有效)——授人鱼不如授人以渔

    树莓派4b OpenCV安装(真实有效)--授人鱼不如授人以渔 前言 巨人的肩膀 树莓派配置 扩容 换源(我选的清华大学源): 下载依赖 Opecv下载 离线安装方法: 使用wget下载OpenCV源 ...

  2. 树莓派4b上安装tensorflow+keras

    折腾了一天,总算在树莓派4b上安好了ML的环境,记录如下: 事先声明,树莓派上跑ML真的性能不太行,即使是系列最强的4b4G版. 我也只是为了测试性能(闲得蛋疼 )才来试一下来着: 大部分的方法参考了 ...

  3. 空卡安装设置树莓派4B并安装opencv+QT

    目录 1.烧写镜像 2.设置树莓派分辨率 3.连接WIFI 4.换源和中文输入法 5.安装opencv 6.安装QT5 7.安装LCD驱动 8.切换LCD和HDMI 1.烧写镜像 新SD卡直接使用Wi ...

  4. 树莓派4B上安装OpenWrt/LEDE

    简介 LEDE(Linux Embedded Development Environment),LEDE可能大家不太熟悉,但是OpenWRT应该如雷贯耳.LEDE和OpenWRT的渊源颇深. 关于Op ...

  5. 【树莓派4B】安装Ubuntu Mate20.04+ROS Noetic+使用电脑自带的xrdp和VNC进行PC端远程控制

    目录 前言 一.烧录Ubuntu Mate20.04 1.下载Ubuntu Mate 20.04 2.格式化SD卡并烧录系统 3*.打开SSH功能 二.配置Ubuntu环境 1.初次开机进行简单的配置 ...

  6. 树莓派4B 8G安装日志(1)——基础环境安装

    由于内卷严重,想带着孩子(一年级)玩玩编程,所以把树莓派又玩了起来.之前我买的是3B+现在更新到了4b,于是买了8G版本回来.下面把安装过程中的坑和琐事记录下来备忘也可为由类似需求的朋友借鉴. 一.安 ...

  7. 树莓派4B——操作系统的安装

    文章目录 树莓派4B 系统烧录 系统-官方带图形界面 远程登陆--VNC方式 查看IP 开启ssh服务 远程登陆--Teamviewer方式 系统-官方不带图形界面 远程登陆服务 系统--ubuntu ...

  8. 树莓派4B:安装QT5开发环境

    一.环境介绍 开发板:树莓派4B 操作方式:windows远程桌面连接 远程桌面连接参考这里:https://blog.csdn.net/xiaolong1126626497/article/deta ...

  9. 树莓派4B 8G安装日志(2)——硬件操控

    一.基础硬件介绍 1物理引脚 最权威最详细信息科参见官网: 树莓派官网 树莓派提供了一组对外的 IO 接口,称为 GPIO( 通用 IO 接口,General-purpose input/output ...

最新文章

  1. ecm工作原理 usb_(转)USB中CDC-ECM的了解和配置
  2. iOS逆向(8)-Monkey、Logos
  3. PHP 学习笔记 01
  4. php 图片地址用变量,php使用ob_start()实现图片存入变量的方法
  5. 你必须知道的EF知识和经验
  6. Lexus Extroic OpenCart 2.X 自适应主题模板 ABC-0648-03
  7. Linux下安装和使用Latexdiff
  8. Python编程基础:第二十一节 函数返回Return
  9. 试图抓取非英文windows操作系统镜像时PE无法正常启动解决方法
  10. 大规模混合部署项目在字节跳动的落地实践
  11. jmeter 获取全部响应_Jmeter获取响应结果中参数出现的次数
  12. spring social_Spring Social入门
  13. iOS Application Security
  14. 前端学习(3290):object.define3
  15. HTTPS 互联网世界的安全基础
  16. 推荐系统实践学习笔记(一)
  17. 关于apipost接口测试
  18. Vue 实现电子签名
  19. 数字档案馆系统测试办法
  20. mysql 中一个表里有父子关系_SQLAlchemy - 同一个表中的父子关系

热门文章

  1. gradle下载及配置
  2. python语言是编译性语音_最强编程语言 Java 和最受欢迎之 Python 的巅峰对决
  3. java 静态方法_80后程序员,教你学Java核心技术:用户自定义类+静态域静态方法
  4. java sonar教程_SonarQube配置与使用教程.PDF
  5. python第四章单元测试_智慧树APPPython语言应用第四单元章节测试答案
  6. psp中java,PSP编程概述
  7. mysql从服务器配置_mysql主从服务器配置基础教程
  8. java phantomjs 截图_phantomjs 截图
  9. 华为mstp多生成树配置_网络工程师(30):多实例生成树如何计算
  10. 叶金荣mysql教程_mysql优化--叶金荣老师讲座笔记