近日,阿里正式开源了轻量级深度学习端侧推理引擎 “MNN”。
MNN 是一个轻量级的深度学习端侧推理引擎,核心解决深度神经网络模型在端侧推理运行问题,涵盖深度神经网络模型的优化、转换和推理。
官方希望 MNN 能够抹平 Android 和 iOS 的差异、碎片设备之间的差异、不同训练框架的差异,实现快速的在端侧部署运行,并且能够根据业务模型进行 OP 灵活添加和 CPU/GPU 等异构设备深入性能优化。
△ MNN 架构设计,分为 Converter 和 Interpreter 两部分
具体来说,MNN 负责加载网络模型,推理预测返回相关结果。整个推理过程可以分为模型的加载解析、计算图的调度、在异构后端上高效运行。MNN 具备四大特征:
-
通用性:支持 Tensorflow、Caffe、ONNX 等主流模型文件格式,支持 CNN、RNN、GAN 等常用网络;
-
轻量性:针对端侧设备特点深度定制和裁剪,无任何依赖,可以方便地部署到移动设备和各种嵌入式设备中。
-
高性能:不依赖任何第三方计算库,依靠大量手写汇编实现核心运算,充分发挥 ARM CPU 的算力。
-
易用性:具备完善的文档和实例,有高效的图像处理模块,覆盖常见的形变、转换等需求。支持回调机制,方便提取数据或者控制运行走向。
关于 MNN 的优势,已入职阿里的 AI 科学家贾扬清评价道:
与 Tensorflow、Caffe2 等同时覆盖训练和推理的通用框架相比,MNN 更注重在推理时的加速和优化,解决在模型部署的阶段的效率问题,从而在移动端更高效地实现模型背后的业务。
这意味着 MNN 和服务器端 TensorRT 等推理引擎的想法相符合。在大规模机器学习应用中,考虑到大规模的模型部署,机器学习的推理侧计算量往往是训练侧计算量的十倍以上,所以推理侧的优化尤其重要。
△ MNN 与 Caffe2 等框架进行性能比较,有 20% 以上优势
目前,MNN 已经在手淘、手猫、优酷、聚划算、UC 等 20 多个 App 中使用,覆盖直播、短视频、搜索推荐、商品图像搜索等场景,每天稳定运行上亿次。此外,IoT 等场景下也有若干应用。官方计划每两个月发布一个稳定版本。
参考:MNN 项目介绍、阿里技术