在树莓派上安装Pytorch (Installing Pytorch on Raspberry Pi) ---- 一个比较详细的版本

Torch有太多好处啦,很Pythonic,简单易学,内置了caffe2等等。因为要在树莓派上跑一点简单的深度学习的小程序,所以最近研究了以下在Pi上安装Pytorch的方案。下面会为大家详细介绍如何安装,以及我遇到的所有障碍和解决办法(方法一到现在还没解决呢~)。

背景

首先说一下我的软硬配置:

  1. 目前最新的树莓派系统,NOOBS安装的v3.2.1
  2. 系统自带的Python3.7 pip3自带18.1的版本,我没有对它进行更新
  3. 目标Pytorch版本为1.2,网上有人说0.4以前的版本可以通过pip3直接获得,但是0.4和目前最新的1.2还是差别很大,而且新版好用一些,我也没有做尝试,所以在这不讨论那个版本的情况了。
  4. 3B+的板,1核1G的配置,没舍得买最新的4B+,一会儿会吐槽这个配置。
  5. 32G的TF卡,这个会影响到方法二的编译环节,建议使用32G或以上的闪存卡。

上面提到过pip3的安装办法,那么为什么不用这个办法去安装1.2的torch呢?答案很简单,官网没有提供Debian的安装命令,直接拿来Linux的命令来安装会发现找不到1.2版本的报错(虽然我用pip3 search找到了最新的1.2版本)。好吧,要另辟蹊径了!

方法一

其实Google Installing Pytorch on Raspberry Pi之后,出来的方案并不算太多,utube上貌似也只有一个教程真的是在讲安装的tutor(其他貌似是在说树莓派上可以跑深度学习的程序以及可以实现什么样的人工智能应用)。这位操着“斯拉夫“口音的小哥哥在这里(是个油管的连接,国内科学上网才看到)用英语解释它的安装过程。

如果看不到也没关系,我简单描述一下他视频的内容,就在本文记作方法一吧:
首先他介绍了以下背景balabalabala,然后说他的这个办法适用于任何一个版本的树莓派(注意是从0到最新的4B+哦!反正在我的3B+上是没有成功的)。接下来sudo apt-get update,没错,要安装依赖库了。据他说要这样:

sudo apt-get install libopenblas-dev libblas-dev m4 cmake cython python3-dev python3-yaml python3-setuptools python3-wheel python3-pillow python3-numpy

接下来通过pytorch-arm-builds来安装pytorch。小哥哥在他的github上传了各个版本的whl文件,当你把git clone下来他的资源以后,在树莓派输入uname -m查看你的Pi machine hardware name,我的是armv7l,那么就安装对应的版本

pip3 install torch-1.2.0a0+8554416-cp37-cp37m-linux_armv7l.whl

接下来是安装过程,其实这个过程蛮快的,大概一两分钟就好了,接下来你就可以测试了,进入python3的交互环境输入:

import torch

当我兴高采烈地以为要成功的时候,他报错了:No module named 'torch._C',谷歌了一下看到绝大多数是在说路径的问题–你的路径下有一个讲torch的文件夹,切换路径就可以解决该问题。然而我试了各种不同路径,也不奏效。在本站上面搜索,看到各种说法,如cuda配置的,anaconda配置的等。最终在这里找到了solution,哥们写的很详细,按照他说的修改对应路径(每个人安装的torch文件路径可能有些不同)配置文件的名字,将它缩短,然后重新python3并import torch就不再报这个错啦!

不再报这个错的意思并不是成功导入torch了,而是报了新的错:
/usr/lib/aarch64-linux-gnu/libstdc++.so.6: version GLIBCXX_3.4.26' not found ,其实这个报错在很多地方都蛮常见的,首先sudo apt-get install libstdc++6,Pi回馈当前包已经是最新的了。无奈继续谷歌,解决办法不外乎类似这里说的,通过这个语句:

$ strings /usr/lib/arm-linux-gnueabihf/libstdc++.so.6 | grep GLIBCXX

列出所有的c++.so.6的版本,可是我的Pi只显示出25版本,压根就没有26,所以按照网上说的其他解决办法也解决不了这个问题了。

到目前我还没有找到解决的方案,网上也有人说是系统级别的错误,如果你熟悉这方面或者知道该怎样解决这个问题欢迎在下面留言、分享。

好了,方法一行不通就另寻出路吧!

方法二

方法二就是大家都能想到的直接编译源代码,pytorch是用C++写的,直接在树莓派上编译就好了。这个方法的步骤在本站、知乎还有外文网站上都有详细描述,我参考了几篇,其实都是大同小异,步骤如下:

  1. 准备工作:增加交换区的大小到2G
    众所周知,3B+的板只有1G的RAM,亲测在编译torch的时候,内存会爆掉(而且不止一次,无奈只有断电强制reboot),所以必须通过增加交换区大小来帮助树莓派在内容不够用的时候使用闪存空间完成编译。这一步网上的教程都是修改/etc下的配置文件:
sudo nano
  • 25
    点赞
  • 79
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值