树莓派安装Pytorch踩坑

Pytorch不像TensorFlow一样提供了预编译的安装文件,只能麻烦自己来手动编译一下了

前提条件
首先sd最好是16Gb或者32Gb的,然后安装好系统后,对系统进行更新

sudo apt update && sudo apt upgrade
sudo apt install vim

 

增加交换区的大小到2G

树莓派3B+只有1GB的内存容量,在编译PyTorch的过程中可能会爆内存。因此我们需要划分一些SWAP空间出来。其基本原理就是当内存吃紧的时候,用一部分硬盘(对于本文来说就是Micro SD卡)空间来减轻内存的负担。

首先通过命令打开交换区设置文件

sudo vim /etc/dphys-swapfile

接着找出常量CONF_SWAPSIZE和CONF_MAXSWAP,把后面的默认的100改成2048。
然后执行以下命令激活交换文件系统:

sudo /etc/init.d/dphys-swapfile stop
sudo /etc/init.d/dphys-swapfile start

接着安装依赖包
sudo apt-get install libopenblas-dev cython3 libatlas-dev m4 libblas-dev cmake

 

下载Pytorch源代码
这个时候我们可以用git下载源代码了。

git clone --recursive https://github.com/pytorch/pytorch

打开pytorch安装目录:

cd pytorch

切换到我们想安装的版本,例如v1.0.1:

git checkout tags/v1.0.1 -b build
git submodule update --init --recursive

 

设置环境变量
这一步非常重要,如果环境变量设置不正确,编译的过程会报错。例如:
Failed to run ‘bash tools/build_pytorch_libs.sh –use-cuda –use-nnpack –use mkldnn –use qnnpack caffe2’
我们可以利用export命令,设置所需要的环境变量,例如我们把cuda支持去掉,因为树莓派不支持cuda。

export NO_CUDA=1
export NO_DISTRIBUTED=1
export NO_MKLDNN=1
export NO_NNPACK=1
export NO_QNNPACK=1

树莓派运行内存有限,如果这个值较大,编译的时候会卡死,将编译的jobs数量减小反而会编译得更快

export MAX_JOBS=2

 

编译Pytorch
这个时候我们就可以开始编译Pytorch。
如果在日后再次安装或在另一台树莓派上安装时不想花时间再次编译,那么可以先生成一个wheel文件

python3 setup.py bdist_wheel

然后去dist文件夹去安装你生成的wheel文件,其文件名取决于你用了Pytorch的哪个分支

cd dist
pip3 install ./torch-1.0.0a0+8322165-cp35-cp35m-linux_armv7l.whl

 

下载预编译的安装文件

这些都是从网上找到的一些预编译的安装文件,统一收集在这里,单击即可下载。

自己编译最后还是出现了一些问题,也找不到解决方法,还是用的编译好的文件直接安装的

Python 3.5 Pytorch 0.4.0

Python 3.5 Pytorch 1.0.0

Python 3.6 Pytorch 0.4.0

 

参考文章

手动编译Pytorch遇到了很多问题,在这里参考了以下文章,本文也有部分引用

在树莓派上安装PyTorch 1.0

在树莓派上编译安装pytorch

RaspberryPi 上编译 PyTorch

Pytorch on RaspberryPi

发表评论

电子邮件地址不会被公开。 必填项已用*标注