高效、轻量的深度学习框架MNN

简介: MNN是一个高效、轻量的深度学习框架。

image.png

简介

MNN是一个高效、轻量的深度学习框架。它支持深度模型推理与训练,尤其在端侧的推理与训练性能在业界处于领先地位。目前,MNN已经在阿里巴巴的手机淘宝、手机天猫、优酷、钉钉、闲鱼等20多个App中使用,覆盖直播、短视频、搜索推荐、商品图像搜索、互动营销、权益发放、安全风控等70多个场景。此外,IoT等场景下也有若干应用。

MNN的架构设计理念与性能数据在MLSys 2020上面发表。Paper 在此处。如果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的使用文档统一放在语雀,请移步至语雀文档

MNN官网上还可以下载MNN团队全新力作MNN工作台,涵盖开箱即用模型、可视化训练等工具,更可以一键部署到多端设备。

MNN 特色

高性能

  • 不依赖任何第三方计算库,依靠大量手写汇编实现核心运算,充分发挥ARM CPU的算力。
  • iOS设备上可以开启GPU加速(Metal),常用模型上快于苹果原生的CoreML。
  • Android上提供了OpenCLVulkanOpenGL三套方案,尽可能多地满足设备需求,针对主流GPU(AdrenoMali)做了深度调优。
  • 卷积、转置卷积算法高效稳定,对于任意形状的卷积均能高效运行,广泛运用了 Winograd 卷积算法,对3x3 -> 7x7之类的对称卷积有高效的实现。
  • 针对ARM v8.2的新架构额外作了优化,新设备可利用FP16半精度计算的特性获得两倍提速。

轻量性

  • 针对端侧设备特点深度定制和裁剪,无任何依赖,可以方便地部署到移动设备和各种嵌入式设备中。
  • iOS平台:armv7+arm64静态库大小5MB左右,链接生成可执行文件增加大小620KB左右,metallib文件600KB左右。
  • Android平台:so大小400KB左右,OpenCL库400KB左右,Vulkan库400KB左右。

通用性

  • 支持TensorflowCaffeONNX等主流模型文件格式,支持CNNRNNGAN等常用网络。
  • 转换器支持149个TensorflowOP、58个TFLite OP、47个Caffe OP、74个ONNX OP;各计算设备后端支持的MNN OP数:CPU 111个,ARM V8.2 6个,Metal 55个,OpenCL 43个,Vulkan 32个。
  • 支持iOS 8.0+、Android 4.3+和具有POSIX接口的嵌入式设备。
  • 支持异构设备混合计算,目前支持CPU和GPU。

易用性

  • 有高效的图像处理模块,覆盖常见的形变、转换等需求,一般情况下,无需额外引入libyuv或opencv库处理图像。
  • 支持回调机制,可以在网络运行中插入回调,提取数据或者控制运行走向。
  • 支持只运行网络中的一部分,或者指定CPU和GPU间并行运行。
  • (BETA)MNN Python API,让算法工程师可以轻松地使用MNN构图、训练、量化训练,无需编写C++。

架构设计

image.png

MNN可以分为Converter和Interpreter两部分。

Converter由Frontends和Graph Optimize构成。前者负责支持不同的训练框架,MNN当前支持Tensorflow(Lite)、Caffe和ONNX(PyTorch/MXNet的模型可先转为ONNX模型再转到MNN);后者通过算子融合、算子替代、布局调整等方式优化图。

Interpreter由Engine和Backends构成。前者负责模型的加载、计算图的调度;后者包含各计算设备下的内存分配、Op实现。在Engine和Backends中,MNN应用了多种优化方案,包括在卷积和反卷积中应用Winograd算法、在矩阵乘法中应用Strassen算法、低精度计算、Neon优化、手写汇编、多线程优化、内存复用、异构计算等。

相关实践学习
基于阿里云DeepGPU实例,用AI画唯美国风少女
本实验基于阿里云DeepGPU实例,使用aiacctorch加速stable-diffusion-webui,用AI画唯美国风少女,可提升性能至高至原性能的2.6倍。
相关文章
|
2月前
|
机器学习/深度学习 API 语音技术
|
2月前
|
机器学习/深度学习 PyTorch 算法框架/工具
深度学习框架:Pytorch与Keras的区别与使用方法
深度学习框架:Pytorch与Keras的区别与使用方法
|
4天前
|
机器学习/深度学习 PyTorch TensorFlow
PAI DLC与其他深度学习框架如TensorFlow或PyTorch的异同
PAI DLC与其他深度学习框架如TensorFlow或PyTorch的异同
|
18天前
|
机器学习/深度学习 人工智能 算法框架/工具
【深度学习】OneFlow深度框架:数据流图与异步计算的科技革新
【深度学习】OneFlow深度框架:数据流图与异步计算的科技革新
20 2
|
2月前
|
机器学习/深度学习 开发框架 Android开发
移动应用开发的未来:跨平台框架与原生系统之争深度学习在图像识别中的应用与挑战
【5月更文挑战第28天】 在移动设备日益成为我们生活不可或缺的一部分的同时,移动应用的开发也正经历着前所未有的变革。本文将探讨当前移动应用开发的关键技术趋势,特别是跨平台开发框架的兴起以及它们与传统的原生移动操作系统之间的竞争。我们将分析这些技术如何塑造了开发者构建、部署和维护移动应用的方式,并预测了未来可能的发展方向。 【5月更文挑战第28天】 随着人工智能技术的飞速发展,深度学习已成为推动计算机视觉领域进步的核心动力。本文旨在探讨深度学习技术在图像识别任务中的运用,并分析其面临的主要挑战。通过回顾卷积神经网络(CNN)的基础理论及其变体,文章揭示了深度学习如何提高图像识别的准确性和效率。
|
17天前
|
机器学习/深度学习 编解码 计算机视觉
【深度学习】探秘PSD:合成到真实去雾框架的实例解析
【深度学习】探秘PSD:合成到真实去雾框架的实例解析
27 0
|
2月前
|
机器学习/深度学习 PyTorch API
|
2月前
|
机器学习/深度学习 开发框架 自动驾驶
移动应用开发的未来:跨平台框架与原生系统之争基于深度学习的图像识别技术在自动驾驶领域的应用
【5月更文挑战第29天】 随着移动设备成为日常生活不可或缺的一部分,移动应用的开发和维护变得尤为重要。本文将探讨移动应用开发的当前趋势,重点关注跨平台开发框架和原生操作系统之间的竞争。我们将分析各种开发工具的优势和局限性,并预测未来可能的发展方向。同时,考虑到性能、用户体验和市场适应性的要求,本文旨在为开发者提供一个关于选择何种开发策略的清晰视角。
|
2月前
|
机器学习/深度学习 人工智能 算法
深度学习在图像识别中的应用与挑战移动应用开发的未来:跨平台框架与原生操作系统的融合
【4月更文挑战第30天】 随着人工智能的迅猛发展,深度学习技术已成为图像识别领域的核心竞争力。本文章将探讨深度学习在图像识别中的应用,并分析其面临的主要挑战。我们将从卷积神经网络(CNN)的基础架构出发,讨论其在图像分类、目标检测和语义分割等方面的应用案例,同时指出数据偏差、模型泛化能力以及对抗性攻击等问题对图像识别准确性的影响。通过实例分析和最新研究成果,本文旨在为读者提供一个关于深度学习在图像处理领域内应用的全面视角。
|
2月前
|
机器学习/深度学习 TensorFlow 算法框架/工具
【深度学习】Tensorflow、MindSpore框架介绍及张量算子操作实战(超详细 附源码)
【深度学习】Tensorflow、MindSpore框架介绍及张量算子操作实战(超详细 附源码)
103 0