alibaba / MNN 特点详细说明

1,052 阅读4分钟

中文版本

MNN主页

简介

MNN是一个高效和轻量级的深度学习框架。它支持深度学习模型的推理和训练,在设备上的推理和训练性能处于行业领先地位。目前,MNN已经集成在阿里巴巴公司的20多个应用中,如淘宝、天猫、优酷、丁谈、仙游等,涵盖了直播、短视频抓取、搜索推荐、商品图片搜索、互动营销、股权分配、安全风险控制等70多个使用场景。此外,MNN也被用于嵌入式设备,如物联网。

MNN的设计原理和性能数据已经在MLSys 2020的论文中发表,请点击这里。如果MNN有助于您的研究,请在您的出版物中引用MNN。

@inproceedings{alibaba2020mnn,
  author = {Jiang, Xiaotang and Wang, Huan and Chen, Yiliu and Wu, Ziqi and Wang, Lichuan and Zou, Bin and Yang, Yafeng and Cui, Zongyang and Cai, Yu and Yu, Tianhang and Lv, Chengfei and Wu, Zhihua},
  title = {MNN: A Universal and Efficient Inference Engine},
  booktitle = {MLSys},
  year = {2020}
}

文档和工具

MNN的文档放在这里的Yuque文档中。

MNN工作平台可以从MNN的主页上下载,它提供了预训练的模型,可视化的训练工具,以及一键部署模型到设备上。

主要特点

高性能

  • 通过大量优化的汇编代码实施核心计算,以充分利用ARM CPU。
  • 对于iOS,可以打开GPU加速(Metal),这比苹果的本地CoreML更快。
  • 对于安卓系统,OpenCL,Vulkan, 和OpenGL 是可用的,并且针对主流的GPU进行了深度调整 (AdrenoMali)。
  • 卷积和转置卷积算法是高效和稳定的。Winograd卷积算法被广泛用于更好地进行对称卷积,如3x3->7x7。
  • 新架构ARM v8.2的速度提高了两倍,支持FP16半精度计算。

轻量级

  • 针对设备进行了优化,没有依赖性,可以轻松部署到移动设备和各种嵌入式设备。
  • iOS平台:armv7+arm64平台的静态库大小约为5MB,链接的可执行文件大小增加约为620KB,metallib文件约为600KB。
  • Android平台:核心库大小约为400KB,OpenCL大小约为400KB,Vulkan大小约为400KB。

多样性

  • 支持TensorflowCaffeONNX ,并支持常见的神经网络如CNNRNNGAN
  • MNN模型转换器支持149个Tensorflow OPs,58个TFLite OPs,47个Caffe OPs和74个ONNX OPs;不同MNN硬件后端的OPs数量。111个用于CPU,6个用于ARM V8.2,55个用于金属,43个用于OpenCL,32个用于Vulkan。
  • 支持iOS 8.0+、Android 4.3+和具有POSIX接口的嵌入式设备。
  • 支持多个设备上的混合计算。目前支持CPU和GPU。

易用性

  • 高效的图像处理模块,在没有libyuv或opencv的情况下加快仿生变换和色彩空间变换。
  • 在整个工作流程中提供回调,以提取数据或精确控制执行。
  • 提供在CPU和GPU上选择推理分支和并行分支的选项。
  • (BETA) MNN Python API帮助ML工程师轻松地使用MNN来建立模型、训练模型和量化模型,而不需要在C++代码中浸泡。

架构

MNN可以分为两个部分。转换器和解释器。

转换器由前端和图形优化组成。前者负责支持不同的训练框架。MNN目前支持Tensorflow、Tensorflow Lite、Caffe和ONNX(PyTorch/MXNet);后者通过运算符融合、运算符替换和布局调整来优化图形。

解释器由引擎和后端组成。前者负责模型的加载和计算图的调度;后者包括内存分配和每个计算设备下的Op实现。在引擎和后端,MNN应用了多种优化方案,包括在卷积和解卷积中应用Winograd算法,在矩阵乘法中应用Strassen算法,低精度计算,Neon优化,手写汇编,多线程优化,内存重用,异质计算等。

许可证

Apache 2.0

鸣谢

MNN的参与者。淘宝网技术部、搜索工程团队、DAMO团队、优酷和其他阿里巴巴集团员工。

MNN指的是以下项目。