自己动手写深度学习框架(pytorch入门)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

自己用python和numpy,虽然可以写出深度学习框架代码。但是实际用的时候,一般还是用tensorflow、pytorch这样的框架来完成。通常来说,训练和部署是分开来的,训练的时候为了速度,一般用gpu加速训练。部署的时候,需要确认终端是否有gpu、npu支持,即需要把模型翻译成厂家支持的形式,才能更好地去应用和部署。

1、cpu/gpu版本选择

本身pytorch支持纯cpu版本,也支持gpu版本。所谓的gpu版本,其实就是nvidia的显卡版本,上面支持cuda库、支持cudnn。训练起来的时候会快不少。实在没有显卡,用cpu训练也是可以的。比如说,可以晚上扔在那,第二天起来再看。或者是下班的时候扔在那,第二天上班再看,这都是可以的,没必要过分教条。

2、python3.10.9下载

pytorch支持windows版本,对python要求不低。这里选择安装的python版本,是python3.10.9。有需要的同学可以这里下载,

复制代码
https://www.python.org/downloads/windows/

3、pytorch安装

pytorch依赖于python,我们一般就是cd到scripts目录,直接利用pip3安装即可。因为官方的路径一般比较慢,通常都是选择代理节点直接下载,速度会快很多,

复制代码
pip3 install torch torchvision -i https://pypi.doubanio.com/simple

4、确认pytorch是不是正确安装

安装好了之后,我们一般还会确认下,当前是不是真的安装好了,这个时候就会进入到python里面,看看import对应的package之后,有没有报错,

复制代码
C:\Python310>python
Python 3.10.9 (tags/v3.10.9:1dd9be6, Dec  6 2022, 20:01:21) [MSC v.1934 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> import torchvision
>>>

5、pytorch到soc部署

pytorch本身只是为了训练数据而存在的。通过pytorch,我们可以设定一个网络框架,得到一个模型。这个模型,一般还需要转换成onnx的通用形式。因为,大部分soc厂家都支持把onnx模型,转变成自己soc支持的形式。所以,就到了最后一步,即把onnx转换成本地npu、cpu、dsp、fpga、gpu支持的形式。

**它的形式就是pytorch-》onnx-》soc npu/cpu/dsp/fpga/gpu。**对于npu,不同厂家有不同的选择,比如有的是外购的ip,有的是自研,有的甚至用dsp实现,这部分就看每家厂家自己的选择了。

6、pytorch教程

网上这方面教程很多,找一个跟着做即可,

复制代码
https://www.runoob.com/pytorch/pytorch-tutorial.html

7、ncnn之纯cpu部署

对于一些没有npu、gpu的soc,这个时候基本只能靠cpu去运行模型了。这种情况下,可以去尝试下ncnn库。如果对ncnn有疑虑,不妨跑一下它的windows版本也是可以的。里面有bin、include和lib目录。

其中bin目录负责模型翻译,include是头文件目录,lib是静态库目录。

复制代码
https://github.com/Tencent/ncnn/releases

如果需要交叉编译,可以参考这篇文档,

复制代码
https://github.com/Tencent/ncnn/blob/master/docs/how-to-build/how-to-build.md#build-for-arm-cortex-a-family-with-cross-compiling
相关推荐
大龄程序员狗哥26 分钟前
第47篇:使用Speech-to-Text API快速构建语音应用(操作教程)
人工智能
KKKlucifer26 分钟前
数据安全合规自动化:策略落地、审计追溯与风险闭环技术解析
人工智能·安全
RWKV元始智能38 分钟前
RWKV超并发项目教程,RWKV-LM训练提速40%
人工智能·rnn·深度学习·自然语言处理·开源
dyj09540 分钟前
Dify - (一)、本地部署Dify+聊天助手/Agent
人工智能·docker·容器
墨染天姬1 小时前
【AI】Hermes的GEPA算法
人工智能·算法
小超同学你好1 小时前
OpenClaw 深度解析系列 · 第8篇:Learning & Adaptation(学习与自适应)
人工智能·语言模型·chatgpt
紫微AI1 小时前
前端文本测量成了卡死一切创新的最后瓶颈,pretext实现突破了
前端·人工智能·typescript
码途漫谈1 小时前
Easy-Vibe开发篇阅读笔记(四)——前端开发之结合 Agent Skills 美化界面
人工智能·笔记·ai·开源·ai编程
易连EDI—EasyLink1 小时前
易连EDI–EasyLink实现OCR智能数据采集
网络·人工智能·安全·汽车·ocr·edi
冬奇Lab1 小时前
RAG 系列(二):用 LangChain 搭建你的第一个 RAG Pipeline
人工智能·langchain·llm