AI大模型高效推理的技术综述!
1 介绍
大型语言模型在人工智能领域的潜力毋庸置疑,但推理时那惊人的内存占用和计算预算,实实在在地拖了后腿。于是,一系列专门针对LLM的压缩方法应运而生,包括
剪枝、知识蒸馏、量化、紧凑架构设计以及动态网络
2 预备基本知识
2.1 Transformer
Transformer最初是给机器翻译用的,它的基本结构如图1所示。

图1 Transformer 基本结构
注意力。

权重通过Q和K的点积来计算,√dk是一个常量缩放因子。
多头注意力。

其中Wo是线性投影矩阵。
编码器和解码器。
2.2 中/大型语言模型
Transformer火了之后,基于纯Transformer架构的NLP模型层出不穷,参数也越堆越多。一般认为,真正意义上的"大"语言模型得从BERT和GPT-1算起,它们的参数规模都到了数亿级别。之后又冒出来不少中等规模模型和大型模型,这些模型靠大规模自我监督预训练,拥有了许多小模型所不具备的能力。中等规模模型参数在一亿或以下,大型模型则超过一亿。
2.3 参数高效的微调(PEFT)
很多模型压缩算法(比如知识蒸馏和剪枝)压缩完后还得微调甚至重新训练才能恢复精度,但大型模型全参数微调成本太高了。于是参数高效的微调(PEFT)算法被提了出来,目标很明确:减少微调参数或迭代次数,降低微调成本。
3 量化
量化方法在降低内存成本和提高推理速度方面优势明显,尤其是在支持低比特数据类型的硬件上。相比其他压缩方法,量化有高压缩比、低成本和高灵活性等好处。下面我们先介绍标准量化方法和一些基本概念,再重点讲讲近年来LLM推理方面的量化方法,包括不需要重新训练的和需要重新训练的。最后聊几个高级主题,这些方向对未来研究挺有潜力的。
3.1 基础概念
1)均匀量化。
2)非均匀量化。
3)剪切范围和校准。
4)对称/非对称量化。
5)量化粒度。
6)训练后量化/量化感知训练。
7)静态/动态量化。
8)模拟/仅整数量化。
9)仅权重/权重+激活量化。
表1 LLMs几种强基线量化方法的详细分类。✓表示一种量化方法属于特定类别,×反之,◦表示一种量化方法可以在两种情况下使用。对于在不同位宽下工作的方法,我们报告最低的有效位宽。
3.2 中型语言模型的量化方法
中等规模的语言模型主要用QAT方法,而不是PTQ,因为QAT重新训练带来的评估指标改进很明显,特别是在极端低比特设置下。我们先讲QAT方法,再讲PTQ方法。QAT的成本相对可以接受,重新训练变得可行。
中等规模语言模型中的QAT
中等规模语言模型中的PTQ
量化生成的中型语言模型。
3.3 LLM的PTQ
针对LLM的PTQ工作大致分两类:仅权重量化和权重+激活量化。
仅权重量化方法
权重+激活量化的方法
3.4 对LLM的量化感知训练(QAT)
量化感知训练是一种恢复量化模型性能的方法,通常需要整个模型重新训练。对LLM来说,这种方法成本太高,于是一些尝试把量化与参数高效的训练方法结合起来。当前针对LLM的QAT方法分两类:全参数重新训练和参数高效再训练。
全参数重新训练
参数高效再训练
3.5 关于LLM量化的其他主题
量化相关工作还包括设计高效的内核、量化方法以及把量化方法集成到实际应用中。一种有效内核LUT-GEMM用在扩展版本的BCQ方法上,可以表示均匀和非均匀量化,把OPT-175B模型的延迟加速了2.1倍,实现了3位量化。有些工作还专门研究LLM中间出现异常值的原因,并寻找从源头抑制异常值的方法。可量化Transformer认为激活中的异常值源于注意力头部的行为,于是设计了截断softmax和门控注意力,让模型有能力产生最小幅度(甚至完全零)的激活。这些工作为LLM的量化提供了重要的理论和实践指导。
4 剪枝
神经网络剪枝是一种压缩和加速技术,通过消除不必要的权重或结构来保持网络性能。在LLM中,剪枝效果不太稳定,受限于微调过程。因为模型参数太多,微调成本高昂,很难实现剪枝的全部效果。为了增强和改进剪枝效果,需要进一步探索,在LLM中获得更好的结果。剪枝对模型压缩至关重要。
4.1 基本概念
1) 剪枝单元:
2) 剪枝度量:
3) 动态/静态剪枝:
4) 迭代/一次性剪枝:
5) 全局/局部剪枝:
6) 数据驱动和免数据裁剪:
7) 上/下游剪枝:
4.2 中型语言模型的剪枝方法
针对语言模型的专业剪枝方法专门针对其独特特性,不同于传统剪枝方法。其中包括专门针对基于Transformer的模型的方法,以及适用于多种不同架构模型的通用方法。剪枝方法分为无结构和结构化方法。
4.2.1 针对中型语言模型的非结构化剪枝
非结构剪枝方法在不考虑任何特定约束的情况下,把非必要的权重置为零。我们按修剪标准顺序介绍三种修剪方法:基于规模的剪枝、基于损失的剪枝和正则化。这些技术有助于减少模型参数数量,提高模型性能和效率。
基于规模的剪枝。
基于损失的剪枝。
正则化。
图4 使用蒙特卡洛模拟对硬混凝土分布的近似概率密度直方图。该硬混凝土分布的参数为对数α=0,β=0.5,γ=−0.1,和ζ=1.1。在该规格下,硬混凝土分布大致将其质量的一半分配到{0,1}中,其余分配到(0,1)中。
其他。
4.2.2 针对中型语言模型的结构化剪枝
结构化剪枝在应用于中型语言模型时,选择适当的剪枝单位与度量同样重要。通常考虑的剪枝单元包括注意力头、全连接层神经元、隐层维度等。使用与架构相关的结构作为剪枝单元能产生更理想的结果,因为这可以保留模型构造中固有的基本原则。接下来深入探讨结构化剪枝的领域,包括基于权重的剪枝、基于损失的剪枝和正则化技术。
基于权重的剪枝。
基于损失的剪枝。
正则化。
其他。
4.3 LLM的修剪方法
在这一部分,我们介绍针对LLM的剪枝方法,反映中等规模语言模型剪枝方法部分中建立的顺序。针对LLM的剪枝方法采用与中等规模语言模型所使用的并行方法相同的方法,某些方法中的一些区别主要在于省略微调过程。为了便于对这些方法进行更全面的比较,我们把各剪枝方法的特性整合在表3里。
表3 对LLM的各种修剪方法的总结
4.3.2 LLM的非结构化剪枝
非结构剪枝方法回避微调过程,采用回避微调过程的方法(如表3),可以在模型性能相对折衷的情况下达到50%的稀疏度比率。后续的非结构化剪枝方法在各种NLP任务中超越SparseGPT和Wanda,获得优越结果。这些非结构化的剪枝方法需要最少的校准数据,可分为基于规模的剪枝和基于损失的剪枝。
基于规模的剪枝。
基于损失的剪枝。
4.3.3 LLM的结构化剪枝
LLM的结构剪枝方法不受硬件限制,能够在剪枝过程后实现推理加速,但需要微调过程来恢复性能。这种方法的开创性方法有LLM-Pruner,作为后续方法的基准,促进了有意义的比较。微调在非结构剪枝中已被废弃,但在LLM中广泛采用。LLM的结构化剪枝包括基于规模的剪枝、基于损失的剪枝和正则化。
基于规模的剪枝。
基于损失的剪枝。
正则化。
4.4 关于LLM剪枝的其他主题
4.4.1 提高LLM的剪枝效率
为了增强LLM定制修剪方法的效果,已经开发出多种辅助技术,包括定制稀疏性比率、后修剪微调方法和硬件优化。这些技术可以与现有方法集成,增强整体修剪效果。其中,一种定制稀疏比率的方法是"离群加权分层稀疏"(OWL),它根据每一层观察到的离群比率定制非均匀分层稀疏比率。另一种后修剪微调方法是"动态稀疏无训练"(Dynamic Sparse No Training),它引入了无需训练的微调方法,可进行轻微更新并最小化重建误差。实验表明,这些技术能够显著提高现有剪枝方法(如Wanda和SparseGPT)的性能,说明剪枝性能的潜在提升可以通过与剪枝方法核心无关的手段实现。
4.4.2 LLM剪枝的未来工作
尽管LLM领域在修剪方面取得了一定成果,但仍面临两大挑战。首先,把修剪与其他方法(如量化和知识蒸馏)相结合,对于实现竞争力强的性能至关重要。当前LLM修剪的成果相对不太令人满意,因此增强修剪方法的内在有效性,确保其独立使用时的熟练程度是关键。其次,LLM修剪中的微调成本是一个重大挑战。许多方法采用一次性修剪而无需微调来最小化计算负担,但这会损害修剪模型的性能。科研人员和从业人员必须应对无法执行完整微调的挑战,特别是当处理旨在增强修剪性能的LLM时。解决这些挑战对于提高修剪技术的有效性和实用性至关重要。
5 知识蒸馏(KD)
知识蒸馏是一种把教师模型的知识转移给学生模型的技术,通过简化学生模型,使其能够以更简洁和更有效的方式表示教师模型的知识。
5.1 基本概念
知识蒸馏主要分为以下四类:基于逻辑的知识蒸馏(logit-based KD)、基于特征的知识蒸馏(feature-based KD)、基于关系的知识蒸馏(relation-based KD)和黑箱知识蒸馏(black-box KD)。前三种蒸馏方法属于白盒蒸馏,需要访问教师模型内部数据。而黑盒知识蒸馏则是通过教师模型的预测结果来传递知识,不需要访问模型内部数据。当代封闭源大型模型内部信息不可获取,只能得到预测结果。黑盒知识蒸馏是一种有效的知识传递方式。在图5中,我们简要概述了这些知识蒸馏方法及其之间的关系。
图5 知识蒸馏分类
5.2 中等规模语言模型的知识蒸馏方法
中等规模的语言模型通过预训练和微调两个阶段进行训练,其中预训练阶段使用大规模的无标签数据集学习语言的通用特征和结构,微调阶段使用带标签的数据使其适应特定任务。模型蒸馏可分为微调蒸馏和预训练蒸馏两类。微调蒸馏是在微调阶段使用知识蒸馏的方法,而预训练蒸馏是在预训练阶段使用知识蒸馏的方法。表4展示了各种中等规模模型蒸馏方法的训练阶段、知识来源和损失函数。这些方法有助于提高模型性能和泛化能力。
5.3 大语言模型的知识蒸馏方法
大型语言模型数量增长,但许多闭源,限制了学生模型的知识获取。知识蒸馏通过利用教师模型的响应——即知识剩余来源,将信息传递给学生模型。根据学生模型的知识来源,大型语言模型的知识蒸馏可分为黑盒蒸馏和白盒蒸馏。黑盒蒸馏适用于学生模型可以从教师模型响应之外的其他来源获取知识的场景,而白盒蒸馏适用于学生模型只能从教师模型响应中获取知识的场景。
6 紧凑架构设计
紧凑架构设计是一种提高效率和精简的理念,通过优化网络结构和算法,显著提高模型效率,同时减少计算资源和内存的使用。它可分为微观和宏观两个层次进行研究,重点优化注意力计算和Transformer架构设计。
6.1 高效注意力
Transformer中的标准自注意力机制时空复杂度为O(N²),阻碍了处理长序列问题的能力。为了解决这个问题,出现了高效注意力工作,包括稀疏注意力、线性近似注意力和闪存注意力等。
6.2 神经架构搜索(NAS)
神经架构搜索(NAS)是一种有前途的解决方案,用于自动设计神经网络模型的结构和参数。为了解决硬件设备部署和资源有限硬件设备上的低延迟推理问题,提出了HAT方法,通过离线训练延迟预测器来加速搜索速度。HAT还观察到关注多个编码层对解码层是有益的,不同的硬件对模型有不同的偏好,这为不同硬件条件和延迟要求下的Transformer模型提供了一种高效的NAS方案。同时,它可以很好地与其他压缩加速方法相结合。
7 动态网络(DyNN)
扩大语言模型的规模可以提升其在自然语言处理任务上的性能,但会带来巨大的计算成本和内存需求。动态神经网络(DyNN)仅使用网络的一部分来处理每个输入,使得整个模型在资源受限的环境下更灵活、更有效地满足计算需求。目前对DyNN的研究主要包括早期退出、级联推理和专家混合(MoE)。早期退出是为了在深度神经网络(DNN)的早期层中动态终止推理过程,从而降低计算成本并提高响应时间。级联推理利用一系列不同规模的语义模型来处理不同复杂程度的请求。MoE在多个子网络上横向扩展前馈网络(FFN),其中只有一个或少数几个子网络在单个前向传递过程中被激活。MoE被广泛纳入当今LLM的架构中,以提供高效而强大的服务。表5中总结了一些具有代表性的MoE方法。
表5 各种MoE方法总结
7.1 将MoE与其他高效技术结合使用
在稀疏MoE模型领域,研究人员探索了把传统模型压缩技术引入MoE模型的几种方法。其中,Switch Transformer把大型稀疏模型转化为小型密集模型,DeepSpeed-MoE把大型教师MoE模型转化为具有较浅专家网络的小型学生MoE模型,并采用阶段式KD训练策略。MoE模型的剪枝旨在去除冗余或影响较小的组件,而Z-code尝试了两种专家选择方法:随机选择和基于验证集利用率的选择。这些方法在保留MoE模型质量的同时,减少了内存消耗和资源消耗。实验结果表明这些方法的有效性。
8 加速框架
随着Transformer模型的发展,各种模型层出不穷,但由于应用场景不同,对延迟、吞吐量、内存等有额外要求,导致模型难以部署。本文介绍了一些针对LLM的推理加速框架,这些框架在不同场景下有效提高了模型的效率。我们将框架分为一般框架和专用框架,并根据泛化性进行了分类。
表6 各种加速框架的总结
-
- 关于宇宙的好的网名有哪些
- 角色扮演 | 1
- 网名