1 介绍
大型语言模型在人工智能领域中具有巨大的潜力 ,但推理过程中的禁止记忆和计算预算阻碍了其部署。 为了应对这些挑战,提出了许多针对LLMs的专业压缩方法,包括剪枝、知识传递、量化、紧凑的架构设计以及动态网络等。这些方法有助于减少模型推理过程中的内存和计算成本,以便模型可以在各种资源受限的设备上运行。
2 预备基本知识
2.1 Transformer
Transformer最初被应用在机器翻译中,其基本结构如图1所示。
图1 Transformer 基本结构
注意力。 注意力机制是将输入序列中的每个令牌映射到查询和/或键值对向量,然后将查询与一组键值对映射到输出,输出是值的加权和计算得出的,权重通过查询与相应键的兼容性函数计算。最常见的注意力模块是归一化点积函数:
其中,权重通过Q和K的点积计算得出,√dk是一个常量的缩放因子。
多头注意力。 此外,Transformer采用多头注意力机制,如图1所示,而不是仅用一个键值对注意力函数。它通过不同的线性层将输入标记映射到h个不同的查询(Qi)、键(Ki)和值(Vi | i ∈ [1, h])上。最后,输出变为:
其中 Wo 是线性投影矩阵。
编码器和解码器。 Transformer模型是一种编码器-解码器结构,用于神经机器翻译。编码器首先独立处理输入序列,解码器将编码器的输出作为输入并预测最终输出。编码器和解码器之间的两个核心区别是:编码器采用全注意力,解码器采用单向注意力;编码器采用自注意力模块,解码器采用跨注意力。随着技术的发展,除了编码器-解码器模型,还有许多后续的语言模型采用纯编码器结构和纯解码器结构。
2.2 中/大型语言模型
随着Transformer架构的流行,出现了许多基于纯Transformer架构的自然语言处理模型,这些模型参数越来越多。一般认为真正意义上的“大”语言模型应该从BERT和GPT-1算起,它们的参数规模都达到了数亿级别。之后出现了许多中等规模模型和大型模型,这些模型利用大规模的自我监督预训练来使模型具有许多小型模型所不具备的能力。中等规模模型参数数量在一亿或以下,而大型模型参数数量超过一亿。
2.3 参数高效的微调(PEFT)
许多模型压缩算法(如知识传递和剪枝)在压缩后需要进行微调甚至训练来恢复精度,但对于大型模型,全参数微调和训练成本高昂。因此,参数有效的微调(PEFT)算法被提出,旨在减少微调参数或迭代次数,降低微调成本。
3 量化
量化方法在降低内存成本和提高推理速度方面具有优势,特别是在支持低比特数据类型的硬件上。量化方法相对于其他压缩方法具有高压缩比、低成本和高灵活性等优势。我们将介绍标准量化方法和一些基本概念,并重点介绍近年来在LLM推理方面的量化方法,包括无需重新训练的方法和需要重新训练的方法。最后,我们将讨论一些高级主题,这些主题对未来的研究具有潜力。
3.1 基础概念
1)均匀量化。 均匀量化是一种基本的量化方法,它将实数值范围划分为均匀的有限区间,例如,对于b位整数的2b个区间。然后,同一区间内的实数值被映射到相同的整数。
2)非均匀量化。 非均匀量化可以提供更高的精度和更低的量化误差,但可能会因为涉及耗时的查找操作而效率低下。神经网络的权重通常不是均匀分布的,因此非均匀量化是可行的。
3)剪切范围和校准。 剪切范围和校准是均匀量化中的一个重要因素,选择合适的剪切范围可以减少异常值的数量,但也会导致更大的尺度系数和量化误差。常见的校准选择包括使用最小/最大值、绝对最大值或最小化信息损失。
4)对称/非对称量化。 对称/非对称量化是处理截断范围[α,β]的方法,当范围在0处对称时,称为对称量化;否则为非对称量化。非对称量化的剪枝范围更紧凑,对激活可能严重失衡的神经网络中的激活尤为重要。然而,在解量化步骤中,对称量化的计算效率更高。
5)量化粒度。 神经网络量化的分类标准是量化粒度,它对应于哪些权重/激活一起量化并共享量化参数。常见的量化粒度包括层级量化、通道量化、行/列量化、标记量化、组量化等。一般来说,更细的粒度可以减少量化误差,但需要存储更多的量化参数并引入更高的计算开销。
6)训练后的量化/量化感知训练。 训练后的量化/量化感知训练可以有效减少量化误差。其中,PTQ无需重新训练,而QAT需要重新训练。QAT通过模拟量化过程或微调量化模型来学习一个更好的性能点,但重新训练对于大多数研究人员来说成本高昂。
7)静态/动态量化。 静态量化是在推理前预先计算量化参数,通过校准输入找到典型的激活统计信息。动态量化是在运行时动态计算量化参数,通常更准确但需要较高的开销来计算所需的统计信息。
8)模拟/仅整数量化 。 模拟量化可以减少神经网络的内存成本和数据移动时间,对于一些工作表明LLM推断是内存密集型的来说有帮助。而仅整数量化可以利用特定硬件支持的高效低位操作加速。
9)仅权重/权重+激活量化。 量化目标是否仅是权重还是包括权重和激活。先前的工作[21]发现,激活量化通常更容易受到权重量化的影响,因此仅权重量化可以达到更低的位宽。然而,量化后的权重在乘以激活之前必须进行反量化,因此仅权重量化不能仅整数量化,在推理时将引入额外的计算开销。
根据这些基本概念将LLM的主要量化方法分类在表1中。
表1 LLMs几种强基线量化方法的详细分类。✓表示一种量化方法属于特定类别,×反之,◦表示一种量化方法可以在两种情况下使用。对于在不同位宽下工作的方法,我们报告最低的有效位宽。
3.2 中型语言模型的量化方法