带你读《2022技术人的百宝黑皮书》——MNN 2.0 发布 ——移动端推理引擎到通用深度学习引擎(2) https://developer.aliyun.com/article/1248037?groupCode=taobaotech
技术挑战
MNN 面临的技术挑战,如上图所示,主要是两个矛盾
1.AI应用需要的复杂功能支持与受限制的程序体积之间的矛盾
AI 模型本身包含多种算子,并在不断演进,如 ONNX 的算子数目前有 160 个左右,Tensorflow 接近 2000 个,MNN 需要以更精简的代码去实现 AI 模型所需要的这些算子。
AI 应用除去模型推理之外,也包含数据前后处理所需要的数值计算与图像处理模块,算法工程师常用的 Numpy 与 OpenCV 库在移动端上往往因为体积占用过大而不能使用,对应功能也需要 MNN 支持。
2.AI应用需要的强大算力支撑与碎片化的计算资源之间的矛盾
AI 模型往往计算量很大,需要 MNN 对设备上的计算资源深入适配,持续做性能优化,以充分发挥设备的算力。
计算资源包括 CPU , GPU , DSP 和 NPU ,它们本身编程方式是碎片化的,需要 MNN 逐个适配,开发成本高,也会使程序体积膨胀。
架构设计
为了应对性能与功能层面的挑战,MNN 设计了预推理与表达式两个核心模块:
1. 预推理模块可以降低计算资源的差异性,在任意的计算资源上寻找到较优的计算方案。
2. 表达式模块可以抹平不同训练框架的算子差异,并将模型训练、图像处理、数值计算等功能转换为推理所需要的张量计算图,从而可用 MNN 进行推理。
带你读《2022技术人的百宝黑皮书》——MNN 2.0 发布 ——移动端推理引擎到通用深度学习引擎(4) https://developer.aliyun.com/article/1248035?groupCode=taobaotech