- 引言 =======
树树皆秋色,山山唯落晖。
小伙伴们好,我是微信公众号《小窗幽记机器学习》的小编:卖炒米粉的小男孩。最近,智谱AI推出的智能体AutoGLM引起了广泛关注。随着测试的深入,用户对该产品需要将屏幕数据上传至云端所带来的隐私安全问题愈发担忧。为此,今天小编将基于近期一篇关于端侧大模型的综述文章,介绍该领域的一些最新进展。随着端侧大模型的发展,这些隐私安全的顾虑有望得到有效缓解。由于文章内容较为丰富全面, 将其分为上下两篇: 上篇 主要介绍端侧大模型的进展及其模型架构, 下篇 则聚焦于端侧大模型的模型压缩技术、加速和部署方案以及应用实例。 鉴于篇幅较长,建议小伙伴们收藏以便后续阅读。
论文地址:https://arxiv.org/abs/2409.00088
- 简介 =======
大型语言模型(LLMs)的出现彻底改变了自然语言处理(NLP)领域。由于其在边缘设备上的低延迟、数据本地化和个性化用户体验的优势,越来越多的研究关注在资源受限环境中部署LLMs的挑战与解决方案。本文综述了设备端语言模型的发展,包括高效架构设计、模型压缩技术及硬件加速策略,并通过案例研究展示其实际应用及潜在优势。
- 基础与准备工作 ============
2.1 端侧大模型的演进
设备端大型语言模型的演进与技术进步息息相关。图3展示了自2023年以来的发展时间线,生动呈现了这一领域的快速进步。2023年标志着边缘大型语言模型的正式探索,当时出现了几个参数量低于10B的模型,使其能在边缘设备上运行。值得注意的例子包括:
- Meta的 LLaMA 系列
- 微软的 Phi 系列
- 智谱的 ChatGLM 系列
- 阿里巴巴的 Qwen 系列
- 01万物的 Yi 系列
- Mistral 系列
- 上海AI lab的InternLM 系列
除此之外,还有TII发布的Falcon模型和Mosaic ML发布的MPT模型。尽管这些小参数模型性能不如传统大参数模型,但它们使在边缘设备上运行大型语言模型成为可能,体现了对边缘应用场景的重视。混合专家、量化和压缩等技术的应用,进一步提升了小参数模型的性能。
图3还展示了自2023年以来多模态模型的出现,如LLaVa系列、QwenVL、Gemini Nano和Yi VL。这些模型尝试在边缘设备上部署多模态能力,以适应移动设备上更复杂的用户场景。
Figure 3:端侧大语言模型的演变
进入2024年,创新步伐加快,图中右侧密集的新模型群体现了这一趋势。这一时期引入了:
- Nexa AI 的 Octopus 系列
- 面壁智能的 MiniCPM 系列
- Google的 Gemma 系列
- Apple的 OpenELM 和 DataComp-LM
- AI2的OLMo
新模型同时提供文本和多模态功能,适应多样化的任务处理场景。设备端语言模型的多样性和进展,结合智能硬件和软件的成熟,使其在智能手机、联网汽车、计算机和机器人等终端设备中展示出日益增长的潜力和价值。
2.2 大语言模型架构基础
- 传统文本大型语言模型: 从Transformer架构发展而来,最初由编码器和解码器组成。如今,流行的模型如GPT和LLaMA主要使用仅解码器架构。GPT模型在自注意力机制后应用层归一化,而LLaMA在每个子层前应用归一化以提高训练稳定性。在注意力机制方面,GPT模型使用标准自注意力机制,允许模型在生成序列时考虑输入序列中所有位置的信息,而LLaMA使用分组查询注意力(GQA),优化计算和内存效率。混合专家(MoE)概念最早于1991年提出,在现代语言模型预训练中关键。MoE使用稀疏层减少计算资源,包含多个独立的“专家”网络和一个门控网络,以确定token的路由。
- 多模态大型语言模型: 依托Transformer强大的学习能力,这些模型可以同时处理文本、图像、声音等多种模态。。其内部运作机制如下: A) 使用标准交叉注意力层在模型内部层对多模态输入进行深度融合(如MultiModal-GPT) B) 使用定制设计的层在模型内部层对多模态输入进行深度融合(LLaMA-Adapter,MoE-LLaVa) C) 在模型输入阶段对多模态输入进行早期融合,使用特定模态的编码器(LLaVa,Qwen-VL) D) 在输入阶段进行早期融合,但使用tokenization技术(如分词器)处理不同模态。
2.3 端侧大语言模型训练
在资源有限的设备上部署大型语言模型面临内存和计算能力的挑战。为解决这些问题,采用协作和分层模型方法分配计算负载。在资源受限设备上进行训练的经典方法包括:
- 量化感知缩放:通过自动缩放不同位精度张量的梯度来稳定训练过程,解决量化图中不同位宽张量梯度尺度不一致的问题,使量化模型的训练精度与浮点模型相当。
- 稀疏更新:选择性地更新网络中部分层的权重,跳过不太重要的层和子张量的梯度计算,从而减少内存使用和计算成本。
- 微型训练引擎(TTE):包括反向图中的冗余节点,如冻结权重的梯度节点,并重新排序操作以实现原位更新 。
- 贡献分析:自动确定稀疏更新方案,即确定哪些参数(权重/偏置)对下游精度贡献最大,以便在有限内存预算下选择应更新哪些层或张量部分。
2.4 云端推理的局限性和端侧推理的优势
边缘-云协作部署是首选,而单纯云端部署(例如ChatGPT)并不广泛接受。如图4所示,88%的参与者倾向于边缘-云协作架构,其中58.33%支持本地部署,81.82%对现有的仅云端解决方案不满意。他们的主要担忧是:1)远程大型语言模型服务的高延迟,2)将个人数据传输到云端的风险,3)云端大型语言模型服务的成本。
Figure4:个人对不同LLM部署策略的投票分布
虽然云端模型功能强大,但存在潜在延迟和数据安全隐患。设备端推理延迟低、保护用户数据。此外,移动设备上定制硬件加速器的普及使得直接在设备上运行数十亿参数的大型语言模型成为可能。
设备端推理在减少延迟方面提供了令人信服的案例,因为它允许模型直接在用户设备上运行,无需将数据发送到云服务器。这种方法对需要实时响应的应用尤其有益。以基于云的GPT-4为例,每个token的生成速度约为200毫秒,而常见的终端模型已经能够比这更快地生成token。
离线运行模型的能力减少了对网络连接的依赖,使应用程序在网络覆盖不佳的地区或其他离线环境中更易获得。例如,Google基于Gemini Nano的TalkBack功能使用多模态能力识别图像内容,为残障人士提供语音播报,即使在完全离线状态下也能正常工作。设备端推理还通过模型量化等技术优化了有限计算资源的使用,使语言模型能够在内存有限的设备上高效运行。
用户友好的界面进一步促进了大型语言模型在移动设备上的部署,这些界面抽象了AI的复杂性,使没有专业知识的用户也能使用这项技术。此外,这些应用不仅限于文本生成,还可以通过创新的文本到行为功能扩展其功能,与设备功能交互,如拨打电话、进行网络搜索和管理日历事件。
2.5 端侧大语言模型的性能指标
在评估设备端大型语言模型的性能时,有几个关键指标需要考虑:
- 延迟:是指从用户输入请求到系统开始响应所需的时间。通常使用TTFT(首次生成token时间)来衡量。延迟越低,用户体验越流畅。
- 推理速度:指模型基于已生成的所有token来预测下一个token的速度。由于每个新token都依赖于先前生成的token,因此推理速度对于用户对话的流畅性至关重要。
- 内存使用:使用的RAM/VRAM大小也是语言模型运行的性能指标之一。由于语言模型的运行机制,它们在推理过程中会根据模型参数的大小消耗相应的RAM。例如,在个人办公笔记本电脑上部署70B参数的模型是不切实际的。对于内存有限的设备,工程师需采用模型压缩技术来减少内存占用。
- 存储和能耗:模型占用的存储空间和推理过程中能耗对边缘设备尤为重要。在大多数情况下,大型语言模型推理会使处理器处于满负荷工作状态。如果运行时间过长,将严重消耗移动设备的电池。推理过程中的高能耗可能影响设备的电池寿命。 例如,一个7B参数模型推理每个token将消耗约0.7J。对于电池容量约为50kJ的iPhone来说,这意味着与模型的对话最多只能持续两个小时。 此外,模型推理引起的设备发热也是需要解决的问题。
通过优化这些性能指标,设备端大型语言模型能够在更广泛的场景中高效运行,为用户提供更好的体验。
3.1 架构设计原则和创新
设计用于设备端部署的语言模型需要考虑多项架构原则和创新,以克服移动和边缘设备的资源限制。主要策略包括:
- 参数共享:在模型不同部分复用权重,减少总参数数量。
- 模块化架构:将大语言模型拆分成可独立或并行处理的较小组件。
- 紧凑表示:通过量化和权重剪枝等技术减少内存占用。
这些架构的性能、计算效率和内存需求比较总结于表1。
3.2 模型压缩和参数共享
在资源受限设备上高效部署大语言模型,通常需要在不显著牺牲性能的前提下减小模型大小。模型压缩和参数共享 技术在实现这种平衡中发挥关键作用。
AWQ即激活值感知的权重量化(Activation-aware Weight Quantization),是一种针对LLM的低比特权重量化的硬件友好方法。AWQ是一种仅权重量化方法,专注于大语言模型中权重的重要性。AWQ保护了一小部分关键权重(0.1%-1%),减少量化损失,保持模型泛化能力。与传统方法不同,AWQ不需要反向传播或重建,从而保持效率和性能。提出的TinyChat推理框架实现了AWQ,在服务器和移动GPU上相比传统FP16实现获得显著加速(高达3倍)。
MobileLLM通过深而窄架构,解决了移动设备上高效大语言模型的需求。关键技术包括嵌入共享、分组查询注意力和分块立即权重共享。MobileLLM相比之前最先进的模型实现了显著的准确度提升(例如,125M和350M模型分别提高2.7%和4.3%的准确度)。增强版MobileLLM-LS进一步提高了准确度,同时保持较小的模型大小,非常适合设备端应用。
AWQ和MobileLLM展示了模型压缩和参数共享技术在使大语言模型适用于移动和边缘设备方面的潜力。AWQ专注于权重量化以减小模型大小并提高推理速度,而MobileLLM强调架构优化和权重共享以创建高效的十亿参数以下模型。这些为提高资源受限环境中大语言模型的性能和可访问性做出了重要贡献。
3.3 协作和分层模型方法
在资源受限设备上部署语言模型面临重大挑战,如有限的内存和计算能力。协作和分层模型方法通过分配计算负载并利用具有不同能力的多个模型,为克服这些限制提供创新解决方案。
EdgeShard引入了EdgeShard框架,将大型大语言模型分割成更小的分片,并战略性地将它们分布在边缘设备和云服务器上。这种方法通过同时利用多个设备的计算能力来减少延迟并提高吞吐量。动态规划算法优化分片放置,平衡计算负载并最小化通信开销。实验结果显示,与传统基于云的方法相比,延迟减少(高达50%)和吞吐量提高(高达2倍)。
LLMCad提出了一种结合较小内存驻留模型 和更大更准确模型 的推理引擎。较小的模型生成候选token,而较大的模型验证和纠正这些token。这种"生成然后验证"方法利用了较小模型的效率,并保持了较大模型的准确性。LLMCad在不影响准确性的情况下token生成加速高达9.3倍。
WDMoE提出了在无线通信系统中部署大语言模型的新范式。通过执行MoE层分解,在基站部署门控网络,并将专家网络分布在移动设备上,以优化性能并减少延迟。此外,提出的专家选择策略基于无线信道条件动态调整专家选择,以确保最佳性能。
协作和分层模型方法,如EdgeShard和LLMCad提出的方法,为在资源受限设备上部署大语言模型的挑战提供了有效解决方案。通过在多个设备之间分配计算负载,并使用较小的模型进行初步任务,这些方法提高了大语言模型推理的可扩展性和效率。EdgeShard框架展示了协作边缘-云计算的优势,而LLMCad展示了分层模型协作在保持准确性和提高推理速度方面的潜力。这些方法对于在移动和边缘设备上实现先进的人工智能能力至关重要,提供实时性能和高效资源利用。
3.4 内存和计算效率
高效的内存和计算资源利用对于在移动和边缘设备上部署大型语言模型至关重要。
三星电子的研究人员提出了创新的内存解决方案,以解决大语言模型部署中的内存瓶颈,包括内存内处理(PIM)和近内存处理(PNM)技术:
- Aquabolt-XL和LPDDR-PIM: 这些PIM设备在内存核心中嵌入逻辑,提高内部内存带宽并支持高性能计算任务,包括大语言模型加速。
- AXDIMM和CXL-PNM: 这些PNM解决方案将计算逻辑放置在内存核心附近,增强内存带宽和容量。CXL-PNM将计算逻辑集成到CXL内存控制器中,显著提高内存容量和性能。
实验结果表明,与传统内存架构相比,这些内存解决方案实现了高达4.5倍的性能提升和71%的能耗降低。
MELTing Point引入了MELT基础设施,促进在移动设备上执行和评估大语言模型。MELT框架支持Android、iOS和Nvidia Jetson设备,并提供详细的性能、能耗指标和内存使用详情。MELT论文验证了模型量化对性能和准确性的影响,表明虽然量化减少了内存需求,但会牺牲一定的准确性。结果强调了在内存和计算效率与性能之间平衡的重要性。
内存和计算效率对于在移动和边缘设备上部署大语言模型至关重要。本小节回顾各种克服内存墙并优化资源使用的创新解决方案。三星的内存解决方案(如PIM和PNM)显著提高了内存带宽和容量,实现高效的大语言模型推理。MELT基础设施提供了全面的评估框架,提供了性能、能效和内存使用之间权衡的宝贵见解。这些进展对确保大语言模型能够在资源受限设备上有效运行至关重要,为移动和边缘环境中更实用、高效的人工智能应用铺平了道路。
3.5 混合专家(MoE)架构
混合专家(MoE)架构通过利用稀疏激活和动态路由来提高效率,为在边缘设备上部署大语言模型提供了一种有前景的方法。
EdgeMoE引入了一个在边缘设备上高效执行MoE模型的框架。通过专家级位宽自适应,使每通道线性量化以最小的准确性损失减小专家权重的大小。利用新颖的专家管理方法,将专家权重预加载到计算-I/O管道中,以减少I/O交换开销。实验结果表明,与基线解决方案相比,推理速度提高了高达2.78倍。
LocMoE引入了路由策略和通信优化方案,以提高基于MoE的大语言模型训练效率。采用正交门控权重方法来降低计算成本并促进明确的路由决策。此外,引入基于局部性的专家正则化,鼓励局部专家竞争,减少通信时间并避免训练不足。另外,还使用分组All-to-All和通信重叠,通过将计算与通信重叠来优化All-to-All操作,以掩盖延迟。
LLMaaS范式将大型语言模型作为系统服务 集成到移动设备上。在他们提出的设计中,有状态执行允许系统在多次调用中保持持久状态(KV缓存)以提高性能。统一接口通过将大语言模型及其基础设施作为系统功能暴露给移动应用,有助于减少内存使用。他们还引入了诸如分块KV缓存压缩和交换等技术,以最小化上下文切换开销。
JetMoE提出使用稀疏门控混合专家(SMoE)架构对大型语言模型进行高效训练。将稀疏激活应用于注意力和前馈层,显著降低计算成本同时保持高性能。JetMoE-8B使用1.25T个token和30,000个H100 GPU小时训练,成本不到10万美元,性能超过了Llama2-7B,且JetMoE-8B-Chat优于Llama2-13B-Chat。该模型总共80亿参数,每个输入token仅激活20亿参数,与Llama2-7B相比,减少了约70%的推理计算。
MoE架构为在边缘设备上部署大语言模型提供了创新解决方案。这些方法利用稀疏激活和动态路由来提高计算效率和资源利用率。
3.6 通用效率和性能改进
在边缘设备上高效部署大语言模型涉及一系列旨在提高整体性能同时管理计算和内存约束的策略。以下回顾引入提高设备端大语言模型效率和有效性的关键研究工作。
任意精度大语言模型(Any-Precision LLM) 提出了一种内存效率高的方法,部署具有不同精度的各种大语言模型。任意精度模型将任意精度深度神经网络扩展到大语言模型,允许单个n位量化模型支持多个低至3位的低位宽模型 。这在不显著损失性能的情况下减少了内存使用。训练后量化(PTQ)创建低位模型并将其逐步升级到更高位宽。这避免了每种精度的多次训练阶段,节省了时间和资源。针对任意精度支持优化的新软件引擎管理内存带宽并提高服务效率,确保大语言模型在边缘设备上的实际部署。实验结果表明,内存节省和服务效率显著提高。
LCDA框架探索了在软硬件协同 设计中使用大语言模型来优化内存计算(CiM)深度神经网络(DNN)加速器的开发。LCDA框架将大语言模型集成到硬件和软件的设计过程中,利用其在多样化数据集上的广泛训练来加速协同设计。通过结合预训练大语言模型的启发式知识,该框架绕过了冷启动问题,能更快地收敛到最优解。与最先进的方法相比,该框架在设计过程中显示出25倍的加速,同时在设计高效DNN模型和硬件架构方面保持了相当的性能水平。这种方法突显了大语言模型在增强协同设计 过程中的潜力,同时改善了先进人工智能应用的软件和硬件效率。
通用效率和性能改进对于大语言模型在边缘设备上的部署至关重要。本小节回顾提高内存效率、计算速度和整体性能d的研究工作。任意精度大语言模型方法为部署具有不同精度的多个大语言模型提供了灵活且内存高效的解决方案,而LCDA框架则展示了将大语言模型整合到协同设计过程中以优化软件和硬件的好处。这些进展有助于使大语言模型在资源受限环境中更易获得且更有效,使移动和边缘设备上的人工智能应用范围更广。