这篇文章上次修改于 1825 天前,可能其部分内容已经发生变化,如有疑问可询问作者。
一. 整体架构
1. MNN简介
欢迎转载,转载请注明原文地址 。谢谢!
简介
MNN是一个轻量级的深度神经网络推理引擎,在端侧加载深度神经网络模型进行推理预测。目前,MNN已经在阿里巴巴的手机淘宝、手机天猫、优酷等20多个App中使用,覆盖直播、短视频、搜索推荐、商品图像搜索、互动营销、权益发放、安全风控等场景。此外,IoT等场景下也有若干应用。 -- MNN官方文档
整体架构
引用官方文档中架构图
可以看出整个MNN项目由两大部分组成:
- Converter: 转换工具, 负责将其他深度学习框架如
TensorFlow
,Caffe
,ONNX
的模型转换到MNN
的模型格式。 Interpreter: 推理引擎, 负责使用模型进行前向计算,得到模型推理结果。
Engine
模块:包含计算图调度,模型加载,图像处理。backend
模块:各种计算设备实现的backend, 包含了内存分配,Op的实现。
源码分析的流程
阅读源码是提升编程能力的一种方式,该系列文档主要用于学习MNN框架的设计与实现,提高个人水平,由于能力有限,如有理解错误的地方还请指正。
目前计划根据首先根据 MNN 官方文档中的推理流程进行分析,逐步分析每一步的流程,在该流程中记录可能需要后续继续分析的源码, 在分析完单个模型推导流程之后,再选择按模块进行详细分析。
分为以下阶段
1. 推理流程
创建会话
- 创建Interpreter
- 创建Session
- 输入数据
- 运行会话
- 获取输出
2. 模块分析
- MNN内存池的实现
- FlatBuffers定义的数据结构
to do.
没有评论