导读 在人工智能飞速发展的时代,端侧大模型因其在隐私保护、个性化服务和成本控制等方面的优势,受到了越来越多的关注。随着端侧设备(如手机、PC、平板等)的算力、内存和磁盘空间不断提升,将大模型部署到移动端已从理想逐渐变为现实。AI 手机、AI PC,甚至 AI 汽车等创新产品正逐步进入大众视野,成为技术发展的新趋势。
作为专注于端侧 AI 推理的引擎,MNN 近期在大模型的端侧部署领域进行了深入的探索与实践,致力于打造端侧大模型高效部署的解决方案。今天,我将与大家分享 MNN 在端侧大模型高效部署方面的技术创新和实践经验,希望通过交流能为各位提供一些新的思路和启发。
1. 端侧大模型兴起趋势
2. MNN 框架介绍
3. MNN 大模型能力介绍
4. 模型转换(图优化/量化)技术
5. 推理优化技术(内存/性能优化)
6. 大模型测评数据与 Demo
分享嘉宾|邢世稳 阿里巴巴淘天集团 技术专家
编辑整理|许通
内容校对|李瑶
出品社区|DataFun
01
端侧大模型兴起趋势
![图片[1]-阿里巴巴MNN在端侧大模型高效部署上的技术创新与实践 - AI资源导航站-AI资源导航站](https://www.aitube.vip/wp-content/uploads/2025/04/20250413_67fbf8eec89d5.png)
端侧设备厂商,例如苹果,也在全线产品上,支持部署如 Stable Diffusion 这样的文本生成图像大模型。
Iphone 16 正式部署端侧大模型,重点实现智能回复、辅助撰写、图片擦除等任务,这标志着苹果进入了 AI Phone 时代。国内很多厂商如 oppo、vivo 也在自己的产品上部署端侧大模型。
大模型推理的应用场景涵盖广泛,包括:
-
聊天应用:输入文字有相应的回答。
-
代码补全:根据之前的代码执行代码补全的操作。
-
生图应用:描述相关的信息从而生成相关的图片。
常见的端侧设备主要分为如下几个类别:
-
娱乐办公设备:手机,个人电脑。
-
出行设备:汽车。
-
智能家居设备:音响,扫地机器人。
-
穿戴设备:眼镜、耳机、手表。
基于大模型的算力和内存限制,目前端侧大模型主要部署在手机、个人电脑和智能汽车等算力较高、存储容量较大的设备上。
端侧部署大模型的优势主要体现在以下方面:
-
实时感:数据存储和计算在本地进行,可以避免云测网络延时、资源等待,这样提示词和响应的实时感更强。
-
隐私性:提示词和响应均在本地,可避免数据上传云端带来的隐私问题。
-
个性化:通过模型微调/Lora 等技术,可以在端侧设备上实现更好的个性化互动体验。
02
MNN 框架介绍
MNN 是一个开源的轻量级深度学习推理引擎,核心解决 AI 模型如何在各类设备(尤其是移动设备)上高效部署运行的问题,涵盖 AI 模型图优化、转化、高效运行。
![图片[2]-阿里巴巴MNN在端侧大模型高效部署上的技术创新与实践 - AI资源导航站-AI资源导航站](https://www.aitube.vip/wp-content/uploads/2025/04/20250413_67fbf8efe24b9.png)
上图中可以看到,训练好的模型,经过 MNN 的转换器,进行一些优化操作,转换为 MNN 模型,之后在端侧设备上部署运行。目前,MNN 引擎已在阿里系的淘宝、咸鱼、钉钉等数十个 APP,以及集团外的 20+APP 上部署应用。
03
MNN 大模型能力介绍
下面介绍 MNN 在大模型方面做的一些工作。目前 MNN 主要针对 LLM(大语言模型)和 Diffusion 模型,统称为 Transformer 模型结构。
![图片[3]-阿里巴巴MNN在端侧大模型高效部署上的技术创新与实践 - AI资源导航站-AI资源导航站](https://www.aitube.vip/wp-content/uploads/2025/04/20250413_67fbf8f0dfcc7.png)
主要包括四个方面:
(1)导出工具:将各类大模型转化为 MNN 模型格式。
(2)量化工具:减少 MNN 模型大小,降低运行内存,提高运行速度。
(3)插件和引擎:运行大模型需要的 tokenizer/embedding/Lora 等插件信息。
(4)MNN 主库:底层运算,内存分配方面。
底层会部署到 CPU、GPU 或 NPU。
针对不同种类的模型会有不同的流程,得到不同的输出结果。
![图片[4]-阿里巴巴MNN在端侧大模型高效部署上的技术创新与实践 - AI资源导航站-AI资源导航站](https://www.aitube.vip/wp-content/uploads/2025/04/20250413_67fbf8f1b52e5.png)
(1)一个大模型进行导出的操作,导出到 MNN 模型,然后再进行量化的操作,得到量化后的 MNN 模型,也就是简化后的模型。
(2)针对 LLM 系列,输入是一个文本,首先对文本进行解析,会进行一个 tokenize 的 encode 操作,把文本转成一个整型的数组,然后进行 embedding 操作(对整形数组向量化),以向量表示后可以更好地进行模型的推理。通过多种模型的推理迭代之后,将输出的结果 decode(转成文本的形式),输出 8×12=96 样式的答案给用户。
(3)对于 Diffusion 模型,也是输入 text,比如想要画一只小猫,它首先会对文本进行 tokenize 的操作,转成整形数组的形式,再通过 embedding 操作转成向量的形式,经过多轮迭代的 Diffuse(20 次或 50 次迭代),最后进行解码操作,得出一个小猫的图像。
接下来将详细介绍 MNN 大模型部署的一些技术细节。
04
模型转换
首先介绍一下模型转换部分。
![图片[5]-阿里巴巴MNN在端侧大模型高效部署上的技术创新与实践 - AI资源导航站-AI资源导航站](https://www.aitube.vip/wp-content/uploads/2025/04/20250413_67fbf8f2a06e2.png)
MNN 支持 Qwen、LLaMA、DeepSeek 等众多模型。从 huggingface 或 modelscope 等模型资源库上下载大语言模型后,经过中间一系列的操作会转化成量化的MNN 模型以及一些额外的资源包。中间的一些具体的操作包括,tokenize 标准化(支持 Sentencepiece、Tiktoken、Bert 等 tokenizer)、embedding 导出、Lora 导出、量化的工作,以及针对 Transformer-Plugin Fuse 等的图优化操作。转好的大模型存放在 MNN Model Zoo 中,主页地址如上图右下角所示。
Transformer 模型由一系列连续 block 组成,Attention 运算是每个 block 的计算核心部分,对 Attention 运算的优化影响着大模型的整体优化效果。
![图片[6]-阿里巴巴MNN在端侧大模型高效部署上的技术创新与实践 - AI资源导航站-AI资源导航站](https://www.aitube.vip/wp-content/uploads/2025/04/20250413_67fbf8f391b91.png)
上图中左侧是一个 ONNX 模型图,展示了 Diffusion 模型中 Attention 的操作,其中将 Attention 拆分成了 16 个算子,包括 12 个形状变化算子,4 个计算型算子,存在大量访存冗余。
右侧是 LLM 模型中的 Attention,其中有 past key/value 缓存,会涉及大量Cache 重复读写的问题。
Attention Fuse 的好处是可以消除访存冗余,增大 Attention 计算管理的便利性,可以更好地管理 KV-Cache。
下面是针对 Transformer 常用插件的 fuse。
![图片[7]-阿里巴巴MNN在端侧大模型高效部署上的技术创新与实践 - AI资源导航站-AI资源导航站](https://www.aitube.vip/wp-content/uploads/2025/04/20250413_67fbf8f470ab1.png)
首先是 Transformer ResnetBlock,包含 BroadCast Binary+GroupNorm+SiLU结构,在 ONNX 模型圈中包含 13 个算子,融合为 FuseGroupNorm。
另外,在 Transformer 激活函数中,Feed-Forward 模块中采用 GEGLU 结构,融合为 SpiltGeLU。
通过这些 Transformer-Plugin Fuse 可以消除访存冗余,简化计算。
另外一个重要部分是权重量化(Weight Quantization)。
-
低比特量化是端侧部署大模型必备
7B 模型 float32 需要 25GB+内存,int4 量化版仅需 3.5GB 内存。
1.8B 模型,int4 量化版只需不到 1GB 内存。
权重量化太大降低内存占用,加快运行速度。
-
MNN 量化支持:
4 比特/8 比特 无输入数据校验 Weight 量化。
对称/非对称量化。
Channel block 量化。
GPTQ/AWQ 权重导入,无缝对接 MNN 计算。
05
推理优化技术
接下来重点介绍推理优化技术,包括四个方面:动态量化、KV-Cache 量化、DRAM-Flash 混用方法,以及针对硬件特性的加速方法。
1. 动态量化
![图片[8]-阿里巴巴MNN在端侧大模型高效部署上的技术创新与实践 - AI资源导航站-AI资源导航站](https://www.aitube.vip/wp-content/uploads/2025/04/20250413_67fbf8f590db0.png)
动态量化,即在运行时对实时输入数据进行量化。
对于 CPU,对输入的浮点类型数据,计算其量化信息,量化为 int8 的输入与量化好的 int4/int8 的权重去进行计算。ARM 有 int8 域特定的加速指令集,不仅可以减少内存,还可以得到加速的效果。采用 PerBatch 量化,来保证精度。
对于 GPU,在 int8 域计算相对于浮点域没有优势,所以端侧 GPU 不进行动态量化,会在浮点域进行矩阵乘的运算。对于内存瓶颈的矩阵乘运算,会在 kernel 内部对权重在线反量化成浮点,与浮点输入进行计算。对于计算密集型算子,会插入一个额外的算子,提前反量化成浮点。
2. KV-Cache 量化
![图片[9]-阿里巴巴MNN在端侧大模型高效部署上的技术创新与实践 - AI资源导航站-AI资源导航站](https://www.aitube.vip/wp-content/uploads/2025/04/20250413_67fbf8f6a9856.png)
当文本较长时,KV-Cache 大小增加明显,量化可以减少存储和访存量。
-
Key Cache 采用 per-token 量化成 int8,在 int8 域和经过动态量化后的 Query 做矩阵乘累加操作。
-
Value 与 QK 结果在 kv_seq_len 方向累加,如果采用 per-token int8 量化,需要在 K_Loop 内每个元素进行读 scale 反量化,就会产生较大性能损失,因此Value Cache 不采用 int8 量化。
-
Value Cache 采用 fp8(e5m2)量化,直接对 fp32 转为 fp8 进行量化。
3. DRAM-Flash 混用方法
![图片[10]-阿里巴巴MNN在端侧大模型高效部署上的技术创新与实践 - AI资源导航站-AI资源导航站](https://www.aitube.vip/wp-content/uploads/2025/04/20250413_67fbf8f78f2f2.png)
由于端侧运行内存是有限的,多个应用抢占内存,会造成内存不足。针对这一问题,第一个解决方法是采用磁盘映射技术,通过 mmap 接口,操作系统可将运行内存映射到磁盘,从而避免其他应用运行内存过大抢占 DRAM 造成崩溃。
第二个方法是 DRAM-Flash 混用。针对长文本 KV-Cache 存储较大,当超过运行内存限制时采用磁盘进行存储。磁盘存储可能会读取较慢,可以采用提前预取的形式避免磁盘产生的 Overhead。
4. Hardware-Driven Accelerate
下面介绍针对硬件特性进行的加速。
![图片[11]-阿里巴巴MNN在端侧大模型高效部署上的技术创新与实践 - AI资源导航站-AI资源导航站](https://www.aitube.vip/wp-content/uploads/2025/04/20250413_67fbf8f89328f.png)
-
ARM CPU 优化
为了做到多核负载均衡(CPU 多核频率也不同),可以采取以下方法:
针对算力瓶颈的算子,按照核心频率比例进行任务划分。
针对带宽瓶颈的算子,每个核心平均发配任务。
-
Armv8.2 sdot 指令优化
sdot 实现 2 个 4×4 的 int8 数据乘累加,输出一个 4×1 的 int32 数据,从而提高吞吐。
-
Armv8.6 smmla 指令优化
smmla 实现 2×8 和 8×2 的 int8 数据做 gemm,输出一个 2×2 的 int32 数据。
-
进行中:集成 ARM KleidiAI(ARM 针对深度学习高性能算子的加速库),支持SME 指令。
![图片[12]-阿里巴巴MNN在端侧大模型高效部署上的技术创新与实践 - AI资源导航站-AI资源导航站](https://www.aitube.vip/wp-content/uploads/2025/04/20250413_67fbf8f96a08c.png)
-
Qualcomm GPU 优化
支持 Recordable queue,将多个 kernel 放在一个 Recordable queue 中,以减少 kernel launch 耗时。
支持 On-chip memory,相较于 global memory 有更快的访存速度。
-
Apple GPU 优化
Apple A14 and M1 GPU 支持 Simdgroup,Simdgroup 中所有 thread 间寄存器数据共享,无需同步或者 threadgroup memory 共享。
Simdgroup_reduce 指令优化。
Simdgroup_matrix 指令优化。
06
大模型测评数据与 Demo
1. 怎样运行 MNN LLM/Diffusion
主要步骤:
-
Huggingface/modelscope 下载 LLM/Diffusion 项目模型资源(torch 模型及其它资源);
-
下载 MNN 源码,编译;
-
使用 MNN 模型转换工具,将 torch 模型转为 MNN 模型;
-
使用 MNN LLM/Diffusion Demo 运行。
详细教程参见:
LLM:https://mnn-docs.readthedocs.io/en/latest/transformers/llm.html
Diffusion:https://mnn-docs.readthedocs.io/en/latest/transformers/diffusion.html
2. 性能数据
下图展示了在小米 14(8 Gen3)上一些 LLM 模型的性能。
![图片[13]-阿里巴巴MNN在端侧大模型高效部署上的技术创新与实践 - AI资源导航站-AI资源导航站](https://www.aitube.vip/wp-content/uploads/2025/04/20250413_67fbf8fa67b3c.png)
可以看到,MNN-LLM 在 prefill 性能上,无论是 CPU 还是 GPU,都处于绝对领先的水平。在 decode 领域,MNN-LLM 相对于其他的大模型也有着不同程度的优势。
![图片[14]-阿里巴巴MNN在端侧大模型高效部署上的技术创新与实践 - AI资源导航站-AI资源导航站](https://www.aitube.vip/wp-content/uploads/2025/04/20250413_67fbf8fb39540.png)
上图展示了在 Stable Diffusion 上的测评数据。可以看到,在 Android Mi 14 和Apple Mac M3 上,MNN-diffusion 相对于竞品都有着明显的优势。
3. Demo
![图片[15]-阿里巴巴MNN在端侧大模型高效部署上的技术创新与实践 - AI资源导航站-AI资源导航站](https://www.aitube.vip/wp-content/uploads/2025/04/20250413_67fbf8fc3543c.png)
在手机上,使用 MNN-LLM 提出的需求都可以得出满意的回答,运行速度也完全可以满足需求。在多模态方面,文生图、图生文、语音生文,都有着流畅的性能表现。
4. MNN 对外通道