返回顶部
热门问答 更多热门问答
技术文章 更多技术文章

阿里巴巴MNN在端侧大模型高效部署上的技术创新与实践

[复制链接]
链载Ai 显示全部楼层 发表于 半小时前 |阅读模式 打印 上一主题 下一主题

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 1.5px;color: rgb(0, 0, 0);font-size: 14px;text-align: justify;visibility: visible;line-height: 2em;">导读在人工智能飞速发展的时代,端侧大模型因其在隐私保护、个性化服务和成本控制等方面的优势,受到了越来越多的关注。随着端侧设备(如手机、PC、平板等)的算力、内存和磁盘空间不断提升,将大模型部署到移动端已从理想逐渐变为现实。AI 手机、AI PC,甚至 AI 汽车等创新产品正逐步进入大众视野,成为技术发展的新趋势。

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 1.5px;color: rgb(0, 0, 0);font-size: 14px;text-align: justify;visibility: visible;line-height: 2em;">作为专注于端侧 AI 推理的引擎,MNN 近期在大模型的端侧部署领域进行了深入的探索与实践,致力于打造端侧大模型高效部署的解决方案。今天,我将与大家分享 MNN 在端侧大模型高效部署方面的技术创新和实践经验,希望通过交流能为各位提供一些新的思路和启发。

分享围绕以下六点展开:


ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 1.5px;line-height: 2em;visibility: visible;">1.端侧大模型兴起趋势

2.MNN 框架介绍

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 1.5px;line-height: 2em;">3.MNN 大模型能力介绍

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 1.5px;line-height: 2em;">4.模型转换(图优化/量化)技术

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 1.5px;line-height: 2em;">5.推理优化技术(内存/性能优化)

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 1.5px;line-height: 2em;">6.大模型测评数据与 Demo

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 17px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;text-align: left;line-height: 1.75em;">分享嘉宾|邢世稳 阿里巴巴淘天集团 技术专家

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 17px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;text-align: left;line-height: 1.75em;">编辑整理|许通

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 17px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;text-align: left;line-height: 1.75em;">内容校对|李瑶

出品社区|DataFun


01


端侧大模型兴起趋势


2024 年 8 月 7 日,面壁智能发布端侧多模态模型,“小钢炮”MiniCPM-V2.6,专注于多图联合理解、实时视频理解等领域。
随后,8 月 30 日,Qwen2-VL 发布端侧 2B 模型,重点增强了图像、视频、多语言理解能力。
紧接着,9 月 19 日,Qwen2.5 发布了端侧 0.5/1/5/3B 模型,特别在数学和编程方面展现出卓越的性能。9 月 26 日,LLaMA 3.2 发布端侧 1B/3B 模型,在多语言对话方面做了迭代优化。


端侧设备厂商,例如苹果,也在全线产品上,支持部署如 Stable Diffusion 这样的文本生成图像大模型。


Iphone 16 正式部署端侧大模型,重点实现智能回复、辅助撰写、图片擦除等任务,这标志着苹果进入了 AI Phone 时代。国内很多厂商如 oppo、vivo 也在自己的产品上部署端侧大模型。


大模型推理的应用场景涵盖广泛,包括:


  • 聊天应用:输入文字有相应的回答。


  • 代码补全:根据之前的代码执行代码补全的操作。


  • 生图应用:描述相关的信息从而生成相关的图片。


常见的端侧设备主要分为如下几个类别:


  • 娱乐办公设备:手机,个人电脑。


  • 出行设备:汽车。


  • 智能家居设备:音响,扫地机器人。


  • 穿戴设备:眼镜、耳机、手表。


基于大模型的算力和内存限制,目前端侧大模型主要部署在手机、个人电脑和智能汽车等算力较高、存储容量较大的设备上。


端侧部署大模型的优势主要体现在以下方面:


  • 实时感:数据存储和计算在本地进行,可以避免云测网络延时、资源等待,这样提示词和响应的实时感更强。


  • 隐私性:提示词和响应均在本地,可避免数据上传云端带来的隐私问题。


  • 个性化:通过模型微调/Lora等技术,可以在端侧设备上实现更好的个性化互动体验。


02


MNN框架介绍


MNN是一个开源的轻量级深度学习推理引擎,核心解决AI模型如何在各类设备(尤其是移动设备)上高效部署运行的问题,涵盖AI模型图优化、转化、高效运行。


上图中可以看到,训练好的模型,经过MNN的转换器,进行一些优化操作,转换为MNN模型,之后在端侧设备上部署运行。目前,MNN引擎已在阿里系的淘宝、咸鱼、钉钉等数十个APP,以及集团外的20+APP上部署应用。


03


MNN大模型能力介绍


下面介绍MNN在大模型方面做的一些工作。目前MNN主要针对LLM(大语言模型)和Diffusion模型,统称为Transformer模型结构。


主要包括四个方面:


(1)导出工具:将各类大模型转化为MNN模型格式。


(2)量化工具:减少MNN模型大小,降低运行内存,提高运行速度。


(3)插件和引擎:运行大模型需要的tokenizer/embedding/Lora等插件信息。


(4)MNN主库:底层运算,内存分配方面。


底层会部署到CPU、GPU或NPU。


针对不同种类的模型会有不同的流程,得到不同的输出结果。


(1)一个大模型进行导出的操作,导出到MNN模型,然后再进行量化的操作,得到量化后的MNN模型,也就是简化后的模型。


(2)针对LLM系列,输入是一个文本,首先对文本进行解析,会进行一个tokenize的encode操作,把文本转成一个整型的数组,然后进行embedding操作(对整形数组向量化),以向量表示后可以更好地进行模型的推理。通过多种模型的推理迭代之后,将输出的结果decode(转成文本的形式),输出8×12=96样式的答案给用户。


(3)对于Diffusion模型,也是输入text,比如想要画一只小猫,它首先会对文本进行tokenize的操作,转成整形数组的形式,再通过embedding操作转成向量的形式,经过多轮迭代的Diffuse(20次或50次迭代),最后进行解码操作,得出一个小猫的图像。


接下来将详细介绍MNN大模型部署的一些技术细节。


04


模型转换


首先介绍一下模型转换部分。


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运算的优化影响着大模型的整体优化效果。


上图中左侧是一个ONNX模型图,展示了Diffusion模型中Attention的操作,其中将Attention拆分成了16个算子,包括12个形状变化算子,4个计算型算子,存在大量访存冗余。


右侧是LLM模型中的Attention,其中有past key/value缓存,会涉及大量Cache重复读写的问题。


Attention Fuse的好处是可以消除访存冗余,增大Attention计算管理的便利性,可以更好地管理KV-Cache。


下面是针对Transformer常用插件的fuse。


首先是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.动态量化

动态量化,即在运行时对实时输入数据进行量化。


对于CPU,对输入的浮点类型数据,计算其量化信息,量化为int8的输入与量化好的int4/int8的权重去进行计算。ARM有int8域特定的加速指令集,不仅可以减少内存,还可以得到加速的效果。采用PerBatch量化,来保证精度。


对于GPU,在int8域计算相对于浮点域没有优势,所以端侧GPU不进行动态量化,会在浮点域进行矩阵乘的运算。对于内存瓶颈的矩阵乘运算,会在kernel内部对权重在线反量化成浮点,与浮点输入进行计算。对于计算密集型算子,会插入一个额外的算子,提前反量化成浮点。


2. KV-Cache量化


当文本较长时,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混用方法


由于端侧运行内存是有限的,多个应用抢占内存,会造成内存不足。针对这一问题,第一个解决方法是采用磁盘映射技术,通过mmap接口,操作系统可将运行内存映射到磁盘,从而避免其他应用运行内存过大抢占DRAM造成崩溃。


第二个方法是DRAM-Flash混用。针对长文本KV-Cache存储较大,当超过运行内存限制时采用磁盘进行存储。磁盘存储可能会读取较慢,可以采用提前预取的形式避免磁盘产生的Overhead。


4. Hardware-Driven Accelerate


下面介绍针对硬件特性进行的加速。

  • 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指令。

  • 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模型的性能。


可以看到,MNN-LLM在prefill性能上,无论是CPU还是GPU,都处于绝对领先的水平。在decode领域,MNN-LLM相对于其他的大模型也有着不同程度的优势。


上图展示了在Stable Diffusion上的测评数据。可以看到,在Android Mi 14和Apple Mac M3上,MNN-diffusion相对于竞品都有着明显的优势。


3. Demo


在手机上,使用MNN-LLM提出的需求都可以得出满意的回答,运行速度也完全可以满足需求。在多模态方面,文生图、图生文、语音生文,都有着流畅的性能表现。


4. MNN对外通道

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

链载AI是专业的生成式人工智能教程平台。提供Stable Diffusion、Midjourney AI绘画教程,Suno AI音乐生成指南,以及Runway、Pika等AI视频制作与动画生成实战案例。从提示词编写到参数调整,手把手助您从入门到精通。
  • 官方手机版

  • 微信公众号

  • 商务合作

  • Powered by Discuz! X3.5 | Copyright © 2025-2025. | 链载Ai
  • 桂ICP备2024021734号 | 营业执照 | |广西笔趣文化传媒有限公司|| QQ