前言:
相比TensorFlow,现在是越来越喜欢Pytorch了,真的很方便。由于毕业需求,在嵌入式平台测试深度学习框架,所以在树莓派3b上安装Pytorch,这是我在树莓派上编译安装的第三个深度学习框架了,第一个是caffe,然后是TensorFlow,现在是Pytorch,期间走了不少弯路,所以在此记录一下。顺便在此吐槽一句,树莓派相比电脑性能真的很差,花了不少时间,后来先在服务器上编译测试,服务器真的特别快,通过之后再安装那个方法在树莓派上编译,前后花了三四天的时间。
此教程同样使用于其他平台的Ubuntu16.04系统
系统:Ubuntu16.04
硬件平台:树莓派3b
软件:Python3 (使用Python2的同学将下面的Python3换成Python,pip3换成pip即可)
1. 安装依赖包
由于Pytorch1.0 Facebook将caffe2并入了Pytorch,所以首先我们需要安装caffe2 的依赖包.
sudo apt-get update
sudo apt-get install -y --no-install-recommends \
build-essential cmake git \
libgoogle-glog-dev \
libgtest-dev \
libiomp-dev \
libleveldb-dev \
liblmdb-dev \
libopencv-dev \
libopenmpi-dev \
libsnappy-dev \
libprotobuf-dev \
openmpi-bin \
openmpi-doc \
protobuf-compiler \
python3-dev \
python3-pip
sudo pip3 install future numpy protobuf typing hypothesis setuptools
如果想将Python的pip包安装到用户目录,请在后面加上--user
# for Ubuntu 14.04
sudo apt-get install -y --no-install-recommends \
libgflags2 \
cmake3
# for Ubuntu 16.04
sudo apt-get install -y --no-install-recommends \
libgflags-dev \
cmake
如果有GPU请看此链接进行额外的操作。
2. 增加swap交换空间
创建2G的swap文件
mkdir /swap
cd /swap
sudo dd if=/dev/zero of=swapfile bs=2048 count=1000000
把生成的文件转换成 Swap 文件
sudo mkswap -f swapfile
激活swap文件
sudo swapon swapfile
卸载swap文件
sudo swapoff swapfile
如果需要一直保持这个 swap ,可以把它写入 /etc/fstab 文件。
/swap/swapfile /swap swap defaults 0 0
注意:由于树莓派只有1G的运存,而编译Pytorch的时候会占用大量运存,所以才会使用虚拟内存,但不建议长期使用,因为在树莓派上使用的是SD卡,虚拟内存会频繁读写SD卡,使SD卡的寿命大幅缩减,所以建议在编译完Pytorch后手动关闭虚拟内存
3. 编译Pytorch源代码
由于这个过程会花费大量时间,所以可以放在一边去做其他事,或者在晚上操作
git clone https://github.com/pytorch/pytorch.git && cd pytorch
# 切换Pytorch版本到1.0.0
git checkout -b v1.0.0 v1.0.0
git submodule update --init --recursive
# 设置最大jobs为1,因为树莓派运行内存有限,如果这个值较大,编译的时候会卡死
export MAX_JOBS=1
# 编译
python3 setup.py build
#生成whl文件
python3 setup.py bdist_wheel
在dist目录下会生成一个whl 文件,用pip3 按照即可
sudo pip3 install torch-1.0.0a0+db5d313-cp35-cp35m-linux_aarch64.whl
sudo pip3 install torchvision