阿里巴巴开源移动端多模态LLM工具——MNN

在这里插入图片描述

MNN 是一个高效且轻量级的深度学习框架。它支持深度学习模型的推理和训练,并在设备端的推理和训练方面具有行业领先的性能。目前,MNN 已集成到阿里巴巴集团的 30 多个应用中,如淘宝、天猫、优酷、钉钉、闲鱼等,覆盖了直播、短视频拍摄、搜索推荐、以图搜货、互动营销、权益发放、安全风控等 70 多个使用场景。此外,MNN 还被用于嵌入式设备,如物联网。

MNN-LLM 是一个基于 MNN 引擎开发的大型语言模型运行时解决方案。该项目的使命是将 LLM 模型部署在每个人的本地平台上(手机/PC/物联网)。它支持流行的大型语言模型,如千问、百川、智谱、LLAMA 等。

MNN-Diffusion 是一个基于 MNN 引擎开发的稳定扩散模型运行时解决方案。该项目的使命是在每个人的平台上本地部署稳定扩散模型。

在这里插入图片描述
在阿里巴巴内部,MNN作为Walle系统中的计算容器基础模块,Walle系统是首个端到端、通用且大规模的设备-云协同机器学习生产系统,该系统已在顶级系统会议OSDI’22上发表。MNN的关键设计原则和广泛的基准测试结果(与TensorFlow、TensorFlow Lite、PyTorch、PyTorch Mobile、TVM的对比)可以在OSDI论文中找到。基准测试的脚本和说明放在“/benchmark”路径下。

主要特点

轻量级
  • 针对设备进行优化,无依赖项,可轻松部署到移动设备和各种嵌入式设备。
  • iOS 平台:armv7+arm64 平台的静态库大小约为 12MB,链接的可执行文件大小增加约为 2M。
  • Android 平台:核心 so 文件大小约为 800KB(armv7a - c++_shared)。
  • 使用 MNN_BUILD_MINI 可以将包大小减少约 25%,但限制了固定模型输入大小。
  • 支持 FP16 / Int8 量化,可以将模型大小减少 50%-70%。
多功能性
  • 支持 TensorflowCaffeONNXTorchscripts,并支持常见的神经网络,如 CNNRNNGANTransformer
  • 支持具有多输入或多输出的 AI 模型,各种维度格式,动态输入,控制流。
  • MNN 支持近似全量的 AI 模型操作符。转换器支持 178 个 Tensorflow 操作符,52 个 Caffe 操作符,163 个 Torchscripts 操作符,158 个 ONNX 操作符。
  • 支持 iOS 8.0+、Android 4.3+ 以及具有 POSIX 接口的嵌入式设备。
  • 支持多设备混合计算。目前支持 CPU 和 GPU。
高性能
  • 通过大量优化的汇编代码实现核心计算,以充分利用 ARM / x64 CPU。
  • 使用 Metal / OpenCL / Vulkan 支持移动设备上的 GPU 推理。
  • 使用 CUDA 和 tensorcore 支持 NVIDIA GPU,以获得更好的性能。
  • 卷积和转置卷积算法高效且稳定。Winograd 卷积算法广泛用于更好地处理对称卷积,如 3x3、4x4、5x5、6x6、7x7。
  • 支持 FP16 半精度计算的新架构 ARM v8.2 速度提升两倍。使用 sdot 和 VNNI 的 ARM v8.2 速度提升 2.5 倍。

支持的架构/精度MNN如下所示:

  • S:支持且运行良好,深度优化,推荐使用
  • A:支持且运行良好,可以使用
  • B:支持但有bug或未优化,不推荐使用
  • C:不支持
架构 / 精度常规FP16BF16Int8
CPUNativeBCBB
x86/x64-SSE4.1ABBA
x86/x64-AVX2SBBA
x86/x64-AVX512SBBS
ARMv7aSS (ARMv8.2)SS
ARMv8SS (ARMv8.2)S(ARMv8.6)S
GPUOpenCLASCS
VulkanAACA
MetalASCS
CUDAASCA
NPUCoreMLACCC
HIAIACCC
NNAPIBBCB

News 🔥

[2025/05/12] android app 支持 qwen2.5 omni 3b and 7b

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

代码:https://github.com/alibaba/MNN/

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

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

相关文章

Vue.js---watch 的实现原理

4.7 watch 的实现原理 watch本质上就是使用了effect以及options.scheduler 定义watch函数: // watch函数:传入参数source以及回调函数function watch(source , cb) {effect(() > source.foo,{scheduler(){// 回调函数cb()}})}watch接收两个参数分别是source和c…

SpringBoot3+AI

玩一下AI 1. SSE协议 我们都知道tcp,ip,http,https,websocket等等协议,今天了解一个新的协议SSE协议(Server-Sent Events) SSE(Server-Sent Events) 是一种允许服务器…

vscode中Debug c++

在vscode中Debug ros c程序 1 在Debug模式下编译 如果用命令行catkin_make,在输入catkin_make时加上一个参数: catkin_make -DCMAKE_BUILD_TYPEDebug 或者直接修改CMakelist.txt,添加以下代码: SET(CMAKE_BUILD_TYPE "D…

【ROS2】 核心概念6——通信接口语法(Interfaces)

古月21讲/2.6_通信接口 官方文档:Interfaces — ROS 2 Documentation: Humble documentation 官方接口代码实战:https://docs.ros.org/en/humble/Tutorials/Beginner-Client-Libraries/Single-Package-Define-And-Use-Interface.html ROS 2使用简化的描…

C#里与嵌入式系统W5500网络通讯(2)

在嵌入式代码里,需要从嵌入式的MCU访问W5500芯片。 这个是通过SPI通讯来实现的,所以要先连接SPI的硬件通讯线路。 接着下来,就是怎么样访问这个芯片了。 要访问这个芯片,需要通过SPI来发送数据,而发送数据又要有一定的约定格式, 于是芯片厂商就定义下面的通讯格式: …

SuperYOLO:多模态遥感图像中的超分辨率辅助目标检测之论文阅读

摘要 在遥感影像(RSI)中,准确且及时地检测包含数十像素的多尺度小目标仍具有挑战性。现有大多数方法主要通过设计复杂的深度神经网络来学习目标与背景的区分特征,常导致计算量过大。本文提出一种兼顾检测精度与计算代价的快速准确…

计算机软件的基本组成

计算机软件的基本组成 一, 计算机软件的分类 软件按其功能分类, 可分为系统软件和应用软件 图解 (1)系统软件 系统软件是一组保证计算机系统高效, 正确运行的基础软件, 软件通常作为系统资源提供给用户使用. 系统软件主要有操作系统(OS), 数据库管理系统(DBMS), 语言处理程…

unity开发游戏实现角色筛选预览

RenderTexture通俗解释 RenderTexture就像是Unity中的"虚拟相机胶片",它可以: 捕获3D内容:将3D场景或对象"拍照"记录下来 实时更新:不是静态图片,而是动态视频,角色可以动起来 用作…

Spring源码主线全链路拆解:从启动到关闭的完整生命周期

Spring源码主线全链路拆解:从启动到关闭的完整生命周期 一文看懂 Spring 框架从启动到销毁的主线流程,结合原理、源码路径与伪代码三位一体,系统学习 Spring 底层机制。 1. 启动入口与环境准备 原理说明 Spring Boot 应用入口是标准 Java 应…

SAP RF 移动屏幕定制

SAP RF 移动屏幕定制 ITSmobile 是 SAP 当前将移动设备连接到 SAP 系统的技术基础。它基于 SAP Internet Transaction Server (ITS),从 Netweaver 2004 开始作为 Netweaver 平台的一部分提供。ITSmobile 提供了一个框架,用于为任何 SAP 事务生成基于 HT…

Spark,数据提取和保存

以下是使用 Spark 进行数据提取(读取)和保存(写入)的常见场景及代码示例(基于 Scala/Java/Python,不含图片操作): 一、数据提取(读取) 1. 读取文件数据&a…

如何用mockito+junit测试代码

Mockito 是一个流行的 Java 模拟测试框架,用于创建和管理测试中的模拟对象(mock objects)。它可以帮助开发者编写干净、可维护的单元测试,特别是在需要隔离被测组件与其他依赖项时。 目录 核心概念 1. 模拟对象(Mock Objects) 2. 打桩(Stubbing) 3. 验…

最新缺陷检测模型:EPSC-YOLO(YOLOV9改进)

目录 引言:工业缺陷检测的挑战与突破 一、EPSC-YOLO整体架构解析 二、核心模块技术解析 1. EMA多尺度注意力模块:让模型"看得更全面" 2. PyConv金字塔卷积:多尺度特征提取利器 3. CISBA模块:通道-空间注意力再进化 4. Soft-NMS:更智能的重叠框处理 三、实…

【Linux网络与网络编程】12.NAT技术内网穿透代理服务

1. NAT技术 之前我们说到过 IPv4 协议中IP 地址数量不充足的问题可以使用 NAT 技术来解决。还提到过本地主机向公网中的一个服务器发起了一个网络请求,服务器是怎么将应答返回到该本地主机呢?(如何进行内网转发?) 这就…

uniapp的适配方式

文章目录 前言✅ 一、核心适配方式对比📏 二、rpx 单位:uni-app 的核心适配机制🧱 三、默认设计稿适配(750宽)🔁 四、字体 & 屏幕密度适配🛠 五、特殊平台适配(底部安全区、刘海…

JAVA EE(进阶)_进阶的开端

别放弃浸透泪水的昨天,晨光已为明天掀开新篇 ——陳長生. ❀主页:陳長生.-CSDN博客❀ 📕上一篇:JAVA EE_HTTP-CSDN博客 1.什么是Java EE Java EE(Java Pla…

SQL脚本规范

主要作用:数据库的备份和迁移 SQL脚本规范 每一个sql语句必须与;结束 脚本结构: { 删库,建库 删表,建表 插入初始数据 } 建库语法: CREATE DATABASE 数据库名CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CHARA…

std::ratio<1,1000> 是什么意思?

author: hjjdebug date: 2025年 05月 14日 星期三 09:45:24 CST description: std::ratio<1,1000> 是什么意思&#xff1f; 文章目录 1. 它是一种数值吗&#xff1f;2. 它是一种类型吗&#xff1f;3. std:ratio 是什么呢&#xff1f;4. 分析一个展开后的模板函数5.小结: …

测试--测试分类 (白盒 黑盒 单元 集成)

一、按照测试目标分类&#xff08;测试目的是什么&#xff09; 主类别细分说明1. 界面测试UI内容完整性、一致性、准确性、友好性&#xff0c;布局排版合理性&#xff0c;控件可用性等2. 功能测试检查软件功能是否符合需求说明书&#xff0c;常用黑盒方法&#xff1a;边界值、…

整理了 2009 - 2025 年的【199 管综真题 + 解析】PDF,全套共 34 份文件

每年真题原卷 ✅ 每年详细解析 ✅ &#x1f4c2;【管综真题 2009-2025】 &#x1f4c2;【管综解析 2009-2025】 目录树&#xff1a; ├── 2009-2025管综真题 PDF │ ├── 2009年199管综真题.pdf │ ├── 2010年199管综真题.pdf │ ├── 2011年199管综真题.pd…