树莓派上编译安装pytorch1.4

简介: 树莓派上编译安装pytorch1.4

为什么要在树莓派上安装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/pytorchcd pytorchgit checkout v1.4 #这里选择最新的1.4版git submodule syncgit submodule update --init --recursivegit submodule update --remote third_party/protobuf #这句必须要有,否则在编译时会报一个找不到protobuf.h的错误

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


export NO_CUDA=1export NO_DISTRIBUTED=1export NO_MKLDNN=1export 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 visiongit checkout v0.5 #如果需要使用与pytorch 1.4一同发布的0.5版,则要加上这句#本地安装python setup.py install
#打包成whlpython setup.py bdist_wheel

等待完成,就可以使用了

下载

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

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

下载地址在这里:https://github.com/zergtant/pytorch-handbook/tree/master/pi

参考

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

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

总结

编译pytorch总耗时大概5小时左右,编译numpy大概半小时,编译pytorch 2.5小时,编译torchvision 1小时,剩余半小时为报错解决的时间。

最后请大家珍惜这次在家宅就能为祖国做贡献的机会


目录
相关文章
|
6月前
|
PyTorch 算法框架/工具 C++
windows上编译安装pytorch的c++扩展
windows上编译安装pytorch的c++扩展
113 0
|
1月前
|
算法 PyTorch 算法框架/工具
Pytorch学习笔记(九):Pytorch模型的FLOPs、模型参数量等信息输出(torchstat、thop、ptflops、torchsummary)
本文介绍了如何使用torchstat、thop、ptflops和torchsummary等工具来计算Pytorch模型的FLOPs、模型参数量等信息。
190 2
|
1月前
|
机器学习/深度学习 自然语言处理 监控
利用 PyTorch Lightning 搭建一个文本分类模型
利用 PyTorch Lightning 搭建一个文本分类模型
60 8
利用 PyTorch Lightning 搭建一个文本分类模型
|
1月前
|
机器学习/深度学习 自然语言处理 数据建模
三种Transformer模型中的注意力机制介绍及Pytorch实现:从自注意力到因果自注意力
本文深入探讨了Transformer模型中的三种关键注意力机制:自注意力、交叉注意力和因果自注意力,这些机制是GPT-4、Llama等大型语言模型的核心。文章不仅讲解了理论概念,还通过Python和PyTorch从零开始实现这些机制,帮助读者深入理解其内部工作原理。自注意力机制通过整合上下文信息增强了输入嵌入,多头注意力则通过多个并行的注意力头捕捉不同类型的依赖关系。交叉注意力则允许模型在两个不同输入序列间传递信息,适用于机器翻译和图像描述等任务。因果自注意力确保模型在生成文本时仅考虑先前的上下文,适用于解码器风格的模型。通过本文的详细解析和代码实现,读者可以全面掌握这些机制的应用潜力。
58 3
三种Transformer模型中的注意力机制介绍及Pytorch实现:从自注意力到因果自注意力
|
2月前
|
机器学习/深度学习 PyTorch 调度
在Pytorch中为不同层设置不同学习率来提升性能,优化深度学习模型
在深度学习中,学习率作为关键超参数对模型收敛速度和性能至关重要。传统方法采用统一学习率,但研究表明为不同层设置差异化学习率能显著提升性能。本文探讨了这一策略的理论基础及PyTorch实现方法,包括模型定义、参数分组、优化器配置及训练流程。通过示例展示了如何为ResNet18设置不同层的学习率,并介绍了渐进式解冻和层适应学习率等高级技巧,帮助研究者更好地优化模型训练。
142 4
在Pytorch中为不同层设置不同学习率来提升性能,优化深度学习模型
|
2月前
|
机器学习/深度学习 监控 PyTorch
PyTorch 模型调试与故障排除指南
在深度学习领域,PyTorch 成为开发和训练神经网络的主要框架之一。本文为 PyTorch 开发者提供全面的调试指南,涵盖从基础概念到高级技术的内容。目标读者包括初学者、中级开发者和高级工程师。本文探讨常见问题及解决方案,帮助读者理解 PyTorch 的核心概念、掌握调试策略、识别性能瓶颈,并通过实际案例获得实践经验。无论是在构建简单神经网络还是复杂模型,本文都将提供宝贵的洞察和实用技巧,帮助开发者更高效地开发和优化 PyTorch 模型。
43 3
PyTorch 模型调试与故障排除指南
|
1月前
|
存储 并行计算 PyTorch
探索PyTorch:模型的定义和保存方法
探索PyTorch:模型的定义和保存方法
|
3月前
|
机器学习/深度学习 PyTorch 编译器
PyTorch 与 TorchScript:模型的序列化与加速
【8月更文第27天】PyTorch 是一个非常流行的深度学习框架,它以其灵活性和易用性而著称。然而,当涉及到模型的部署和性能优化时,PyTorch 的动态计算图可能会带来一些挑战。为了解决这些问题,PyTorch 引入了 TorchScript,这是一个用于序列化和优化 PyTorch 模型的工具。本文将详细介绍如何使用 TorchScript 来序列化 PyTorch 模型以及如何加速模型的执行。
126 4
|
3月前
|
机器学习/深度学习 边缘计算 PyTorch
PyTorch 与边缘计算:将深度学习模型部署到嵌入式设备
【8月更文第29天】随着物联网技术的发展,越来越多的数据处理任务开始在边缘设备上执行,以减少网络延迟、降低带宽成本并提高隐私保护水平。PyTorch 是一个广泛使用的深度学习框架,它不仅支持高效的模型训练,还提供了多种工具帮助开发者将模型部署到边缘设备。本文将探讨如何将PyTorch模型高效地部署到嵌入式设备上,并通过一个具体的示例来展示整个流程。
538 1
|
3月前
|
机器学习/深度学习 自然语言处理 PyTorch
PyTorch与Hugging Face Transformers:快速构建先进的NLP模型
【8月更文第27天】随着自然语言处理(NLP)技术的快速发展,深度学习模型已经成为了构建高质量NLP应用程序的关键。PyTorch 作为一种强大的深度学习框架,提供了灵活的 API 和高效的性能,非常适合于构建复杂的 NLP 模型。Hugging Face Transformers 库则是目前最流行的预训练模型库之一,它为 PyTorch 提供了大量的预训练模型和工具,极大地简化了模型训练和部署的过程。
173 2