Skip to content

Latest commit

 

History

History

pi

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

树莓派上编译安装pytorch

为什么要在树莓派上安装pytorch

树莓派是一个香烟盒大小的电脑,能运行window(IOT)和linux系统。可以当做一台普通的电脑用来办公上网,还有裸露的针脚可以用来控制你自己设计的电路。比如读取各种(温度,重力,加速度)传感器信息,也可以驱动马达和蜂鸣器,摄像头什么的。

说到可以驱动摄像头,那么我们就可以通过pytorch进行推理,树莓派的配置很低,毕竟几百块钱的成本,配置不会高到哪里去,但是通过他的cpu还是能够处理一些简单的推理工作的。

系统环境安装

这部分就略掉了,主要就是要将系统安装到SD卡中并插入树莓派,这个官网都有介绍,就不细说了。 我这里使用的是树莓派4b:1.5GHz四核64位ARM Cortex-A72 CPU, 4G内存 系统也是官官方的基于Debian 10 Buster的ARM版linux.

进入系统后,首先还是安装conda,因为arm版的conda很久都不更新了,所以有个大佬专门制作了树莓派版的conda : https://github.com/jjhelmus/berryconda 我们按照说明直接安装后就可以使用了

因为pytorch没有官方的arm版提供下载,所以我们需要在树莓派上自己进行编译

下面安装编译pytorch所需要的包

sudo apt install libopenblas-dev libblas-dev m4 cmake cython

继续安装python的包

pip install numpy pyyaml cyphon

这里如果不安装numpy的话也能成功编译,但是编译出来的PyTorch不支持numpy

编译pytorch 1.4

做新版就是1.4 所以我们这里拿最新版来做

git clone --recursive https://github.com/pytorch/pytorch
cd pytorch
git checkout v1.4 #这里选择最新的1.4版
git submodule sync
git submodule update --init --recursive
git submodule update --remote third_party/protobuf #这句必须要有,否则在编译时会报一个找不到protobuf.h的错误

树莓派是不支持CUDA和MKLDNN的,CUDA是nv的,MKLDNN是intel的, 我们拿树莓派也只做推理,分布式也不要了。 所以我们设置以下的环境变量

export NO_CUDA=1
export NO_DISTRIBUTED=1
export NO_MKLDNN=1
export MAX_JOBS=4 #这里设置4是因为4b是4核,如果树莓派是3的话,设置成1

进行完以上的配置,我们可以编译了

#本地安装
python setup.py install

#打包成whl,打包成功后这个文件在dist目录里面
python setup.py bdist_wheel

编译时一个漫长的过程,我的4b上大概花了2个半小时。听说3需要5个小时左右。慢慢等,不要着急,按照我上面的步骤肯定是可以成功的。

安装 torchvision

编译完pytorch以后我们肯定还需要安装torchversion,pip的arm源里面torchvision的版本是0.22,已经是一个很老的版本了,所以这里面我们还是通过源码自己编译。

安装编译所需要的包,这里主要是编译pillow使用的,因为torchvision是基于

sudo apt-get install libjpeg-dev libavcodec-dev libavformat-dev libswscale-dev

安装pillow

pip install pillow

编译 torchvision

目前官网的torchvision版本是0.6,我们不用切换版本直接用就好了

git clone https://github.com/pytorch/vision.git

cd vision
git checkout v0.5 #如果需要使用与pytorch 1.4一同发布的0.5版,则要加上这句
#本地安装
python setup.py install

#打包成whl
python setup.py bdist_wheel

等待完成,就可以使用了

下载

为了节省大家的时间,我这里也将我编译好的包提供给大家下载

我这个是基于python 3.6 进行编译的,如果大家用3.6的话,直接下载安装即可

pytorch 1.4

torchvision 0.6

参考

这边日本人写的文章里面 编译遇到的问题总结的比较全: https://qiita.com/yyojiro/items/d91b02149aa6480ded80

这里只有 1.2以前版本的,想装以前版本可以直接从这里下: https://github.com/nmilosev/pytorch-arm-builds