在树莓派上安装最新版的pytorch不是一件容易的事情,因为pip只提供了一个旧版本的pytorch。
通过pip搜索torchpip search torch
我们可以发现有如下两个树莓派的版本
- rpi3.torch (0.1.0)
- torch-raspi (0.4.0)
这两个版本,一个是0.1.0, 另外一个是0.4.0,都是比较老的版本。
目前pytorchv1.0.1已经出来,还整合了caffe2。因此想安装新版本的pytorch,我们只能自己在树莓派编译pytorch。
从pytorch源上进行编译安装
前提条件
首先sd最好是16Gb或者32Gb的,然后安装好系统后,对系统进行更新sudo apt update && sudo apt upgrade
sudo apt install vim
增加交换区的大小到2G
首先通过命令打开交换区设置文件sudo vim /etc/dphys-swapfile
接着找出常量CONF_SWAPSEIZE,把后面的默认的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
创建虚拟环境
这个时候我们可以用venv创建需要的虚拟环境,把pytorch跟其他python包隔离。可以通过一下命令:python3 -m venv pytorch
`source pytorch/bin/activate
这个时候我们可以在命令窗口的提示符前面见到(pytorch),这样代表我们已经进入了虚拟环境了。
下载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
编译pytorch
这个时候我们就可以开始编译pytorch。
但是在编译pytorch之前,我们还是需要安装依赖的python包。安装依赖包:pip install -r requirements.txt
设置环境变量
这一步非常重要,如果环境变量设置不正确,编译的过程会报错。例如: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
接着我们就可以利用命令:python setup build
对pytorch进行编译,这个过程需要需要耗费几个小时。
当编译完成后,我们就可以利用命令进行安装了python setup install
这样pytorch就完成安装了。
测试pytorch
现在我们再虚拟环境中,利用命令python
就可以进去python的编译环境。
然后输进去下面的命令
import torch
a = torch.rand(5,3)
我们一般可以得到下面的结果
tensor([[0.4512, 0.6844, 0.2541],
[0.8479, 0.5679, 0.2709],
[0.2783, 0.6527, 0.8900],
[0.6391, 0.4194, 0.3088],
[0.7420, 0.7410, 0.4173]])
由于现在caffe2已经合并到pytorch,所以安装pytorch后,同时也安装了caffe2。
我们这个时候可以通过下面这段代码测试一下caffe2
from caffe2.python import workspace, model_helper
import numpy as np
x = np.random.rand(4, 3, 2)
workspace.FeedBlob(“my_x”, x)
x2 = workspace.FetchBlob(“my_x”)
print(x2)
这个时候我们可以得到下面到结果
[[[0.81060838 0.35865418]
[0.35568901 0.67212295]
[0.1332663 0.47914204]][[0.85494785 0.84664708]
[0.27500796 0.9747805 ]
[0.24910547 0.15672073]][[0.28877039 0.07946231]
[0.89988456 0.64606068]
[0.84067924 0.02291551]][[0.09549854 0.90223063]
[0.62950545 0.8257564 ]
[0.39615143 0.07896499]]]