MNN简介

news2024/12/24 21:42:24

一、轻量级高性能推理引擎

    1.简介   

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

特性:

  • 通用性 - 支持TensorFlow、Caffe、ONNX等主流模型格式,支持CNN、RNN、GAN等常用网络。

  • 高性能 - 极致优化算子性能,全面支持CPU、GPU、NPU,充分发挥设备算力。

  • 易用性 - 转换、可视化、调试工具齐全,能方便地部署到移动设备和各种嵌入式设备中。

PS:对于移动推理引擎,MNN有三个贡献点:

  • 提出了预推理机制,在线计算推理成本和最优方案
  • 优化了kernel
  • 提出后端抽象实现混合调度

开源网址:GitHub - alibaba/MNN: MNN is a blazing fast, lightweight deep learning framework, battle-tested by business-critical use cases in Alibaba

 官方网址:MNN - AI For Everyone

MNN 的论文(架构设计理念与性能数据):https://arxiv.org/abs/2002.12418

(曾在 MLSys 2020 上面发表)

2.整体特点

轻量性

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

通用性

  • 支持 TensorflowCaffeONNX 等主流模型文件格式,支持 CNNRNNGAN 等常用网络。
  • 支持 86 个 TensorflowOp、34 个 CaffeOp;各计算设备支持的 MNN Op 数:CPU 71 个,Metal 55 个,OpenCL 29 个,Vulkan 31 个。
  • 支持 iOS 8.0+、Android 4.3 + 和具有 POSIX 接口的嵌入式设备。
  • 支持异构设备混合计算,目前支持 CPU 和 GPU,可以动态导入 GPU Op 插件,替代 CPU Op 的实现。

高性能

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

易用性

  • 有高效的图像处理模块,覆盖常见的形变、转换等需求,一般情况下,无需额外引入 libyuv 或 opencv 库处理图像。
  • 支持回调机制,可以在网络运行中插入回调,提取数据或者控制运行走向。
  • 支持只运行网络中的一部分,或者指定 CPU 和 GPU 间并行运行。
  • 针对端侧设备特点深度定制和裁剪,无任何依赖,可以方便地部署到移动设备和各种嵌入式设备中。
  • iOS 平台:armv7+arm64 静态库大小 5MB 左右,链接生成可执行文件增加大小 620KB 左右,metallib 文件 600KB 左右。
  • Android 平台:so 大小 400KB 左右,OpenCL 库 400KB 左右,Vulkan 库 400KB 左右。

二、架构设计

 如上图所示,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 优化、手写汇编、多线程优化、内存复用、异构计算等。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/65688.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue/JS中定时器模拟随机指定范围、位数的小数并更新innerHTML以及页面被销毁时监听事件中销毁定时器

场景 若依前后端分离版手把手教你本地搭建环境并运行项目: 若依前后端分离版手把手教你本地搭建环境并运行项目_霸道流氓气质的博客-CSDN博客_前后端分离项目本地运行 Vue页面上某个弹窗内容是innerHTML动态拼接。 系统演示时需构造模拟数据,模拟出数…

CAXA 3D 实体设计2023 软件下载+补丁+安装教程

CAXA 3D 实体设计2023 软件下载补丁安装教程 软件下载链接:https://pan.baidu.com/s/1KQFTfBg1uim5AGmhryN7_A?pwdnopn 提取码:nopn CAXA 3D实体设计2023新增功能 1.3D曲线支持参数化约束 通过添加尺寸约束和几何约束实现对三维曲线的参数化驱动&…

基于java(ssm)人事考勤签到管理系统源码(java毕业设计)

基于java(ssm)人事考勤签到管理系统 人事考勤签到管理系统是基于java编程语言,mysql数据库,ssm框架,idea工具开发,本系统分为员工,部门经理,管理员三个角色,员工可以登陆…

超详细!旗舰SoC RK3588参数介绍-飞凌嵌入式

OK3568-C开发板RK3588是瑞芯微旗下最新的8K旗舰SoC芯片,采用ARM架构,主要用于PC、边缘计算设备、个人移动互联网设备和其他数字多媒体应用。 RK3588集成了四核Cortex-A76和四核Cortex-A55,以及单独的NEON协处理器,支持8K视频编解码…

图像处理基础知识

图像处理基础 自己学习整理的图像处理知识 视觉基本概念和直方图基本概念 文章目录图像处理基础基本概念视觉人类视觉概念人类视觉的特性机器视觉概念图像的感知直方图直方图的定义直方图的性质直方图的应用基本概念 视觉 人类视觉概念 人类视觉的特性 多义性 同一张图像可…

[附源码]Python计算机毕业设计Django项目管理系统的专家评审模块

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

5.32 综合案例2.0 - TTS语音云播报(支持M320开发板)

HaaS506 - TTS语音云播报简介准备硬件接口代码流程功能实现1、物联网平台开发2、设备端开发代码调试3.应用平台开发3.1新建‘普通项目’3.2关联产品和设备3.3新建移动应用简介 手机端发送文字,开发板发出对应语音信息。 本案例需要使用到阿里云平台连接网络。通过…

【TSP问题】基于遗传算法求解固定的开放式不返回多旅行推销员问题(M-TSP)附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab仿真内容点击👇 智能优化算法 …

基于django+sqlite3的新闻网站管理系统源代码,含数据库文件

基于djangosqlite3的新闻网站管理系统源代码,含数据库文件 程序部署方法 1、安装程序依赖; 2、 manage.py migrate #初始化数据库; 3、 manage.py createsuperuser创建管理员; 4、manage.py runserver启动程序 完整程序下载地址&…

编程内功心法「底层原理系列」 底层架构原理,分析CPU处理器鲜为人知的那些秘密

前提概要 所谓,知彼知己百战不殆,针对于计算机的优化技术来讲,最底层也不过是针对于CPU技术的优化了,但是如果要区优化程序,涉及到CPU的执行能力,那必须要了解CPU的原理和概念以及执行过程等概念&#xff0…

html网页设计大学生作业成品——公益校园网站设计与实现(HTML+CSS+JavaScript)

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

1.Spring概述(Spring官方文档总结)

目录 1.1jdk环境依赖 1.2 Spring介绍 1.3 Spring历史 1.4 设计理念 1.1 jdk环境依赖 从Spring Framework 5.1开始,Spring需要JDK 8 (Java SE 8),并提供对JDK 11 LTS的开箱即用支持。建议将Java SE 8 update 60作为Java 8的最低补丁版本,但…

由于找不到qt5core.dll,无法继续执行代码的问题

由于找不到qt5core.dll,无法继续执行代码的问题处理,其实和平常的dll缺失处理方法是差不多的 一. 下载qt5core.dll文件来解决 1.在百度搜索qt5core.dll这个dll文件,并且下载到自己的电脑 2.或者是直接在别人的电脑找qt5core.dll,然后拷贝到…

(附源码)ssm医护服务平台 毕业设计 260954

SSM医护服务平台 摘 要 随着互联网趋势的到来,各行各业都在考虑利用互联网将自己推广出去,最好方式就是建立自己的互联网系统,并对其进行维护和管理。在现实运用中,应用软件的工作规则和开发步骤,采用Java技术建设医护…

XFINIUM.PDF CROSS-PLATFORM BUNDLE 11.1.2

轻松将您的 PDF 应用程序移植到其他平台。 XFINIUM.PDF CROSS-PLATFORM BUNDLE 是一个用于跨平台 PDF 开发的库。在所有支持的平台(.NET、Windows Forms、Xamarin.Mac、ASP.NET Webforms 和 MVC、控制台应用程序、Windows 服务、Mono、Windows Presentation Foundat…

Python.02.语法进阶

目录 基本运算符 比较运算符 赋值运算符 多变量赋值 逻辑运算符 案例: 案例实现源码如下 三元运算符 条件语句 循环语句 1.计算0-100的求和 2.for循环数组求和 3.range定义一个1-100的奇数数组,for循环求出数组的和 4.while...else...语法 基本运算符 比较…

联通物联网卡激活方法

科技的发展日新月异,我们国家的发展战略也是支持高新科技公司的发展,所以越来越多的高新科技公司出现,但凡是高新科技公司,在设备的联网中,都会用到物联卡,所以物联卡的市场也愈发火爆,那么今天…

Web前端大作业——基于HTML+CSS+JavaScript仿英雄联盟LOL游戏网站

🎉精彩专栏推荐👇🏻👇🏻👇🏻 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业…

pytorch复习笔记--nn.Embedding()的用法

目录 1--nn.Embedding()的用法 2--实例展示: 3--注意的问题 1--nn.Embedding()的用法 import torch.nn as nnembedding nn.Embedding(num_embeddings 10, embedding_dim 256) nn.Embedding()产生一个权重矩阵weight,其shape为(num_em…

图解:Go Mutext

Mutex 可能处于两种不同的模式:正常模式和饥饿模式。 正常模式下获取Mutex 在正常模式下,新来的G会尝试自旋获取锁,如果自旋获取失败,则会按照FIFO的顺序排队获取锁。 当Mutex被释放,会唤醒等待队列中第一个等待者G&…