来源丨https://zhuanlan.zhihu.com/p/701393483
宣传一下我们的工作I-LLM,(据我们所知)这是第一个在LLM上实现了integer-only量化的方法,精度逼近浮点,超过Smooth/Omini/Affine Quant等SOTA方法。
Abstract
PTQ能够有效加速LLMs的推理。然而,现有针对LLM的PTQ方案在推理过程中仍然需要相当多的浮点操作,例如额外的量化和反量化操作,以及复杂的非线性算子(如RMSNorm和Softmax)。这些约束阻碍了LLMs在边缘和云端设备上的部署。我们认为LLMs integer-only量化的主要问题在于linear和non-linear计算时激活值中在跨channel和跨token维度上有巨大波动。
为了解决这个问题,我们提出了I-LLM,这是一种针对LLM量身定制的integer-only PTQ框架。具体来说,(1)我们开发了Fully-Smooth Block-Reconstruction (FSBR)来平滑所有激活和权重channel间的变化。(2)为了减轻token间变化的影响,我们提出了Dynamic Integer-only MatMul (DI-MatMul)方法。该方法仅通过整数运算实现了全整形GEMM的动态量化输入和输出。(3)我们设计了DI-ClippingSoftmax、DI-Exp和DI-Normalization,它们利用高效的bit shift来计算非线性算子,同时保持了精度。
实验结果表明,I-LLM实现了与FP baseline相当的准确度,并且优于非整数量化方法。例如,I-LLM 可以在W4A4上运行,精度损失几乎可以忽略不计。据我们所知,I-LLM是第一个在LLM上实现了integer-only量化的工作。
Introduction
来源:I-Bert
LLMs的计算量和带宽需求很大,往往需要通过量化进行部署加速。然而,现有的LLMs量化方法在推理过程中仍然需要大量的浮点运算,例如Matmul引入了额外的量化和反量化操作、以及Softmax等非线性算子。如下图所示,(a) W8A8量化方案,推理时需要对输入的
X
进行量化,并且对输出的
Y
值也需要进行反量化到FP16;(b) W4A16量化方案,推理时需要将
W
反量化到FP16,随后执行FP16的GEMM运算。
这阻碍了LLMs在边缘和云设备上的部署,这是因为浮点运算代价较高,甚至有些设备没有浮点算力。
来源:QServe
现有的Integer-only量化方案(如I-Vit、I-Bert)在LLMs上表现很差,因为这些方案是为CNN、Transformer等相对较小的模型设计的,无法处理LLMs激活值存在大量的离群点,包括线性算子(如FC)和非线性算子(如Softmax、SwiGlu)。
为了解决上述问题,我们发表了I-LLM这篇文章,(据我们所知)这是首个在LLMs上实现了Inter-only量化的工作,主要贡献包括:
提出了Fully-Smooth Block-Reconstruction (FSBR),用于平滑LLMs中所有激活和权重的通道间变化。
提出了Dynamic Integer-only MatMul (DI-MatMul),在INT GEMM的基础上利用整数操作实现激活的动态量化。
设计了DI-ClippedSoftmax、DI-Exp和DI-Norm等整形推理的非线性算子,采用了高效的位移操作同时保持了精度。
实验表明,I-LLM在W6A6的配置下取得了与浮点模型相当的精度,在W4A4的甚至远优于Weight-only的量化方法。
I-LLM在LLaMA上的效果
Method
Fully-Smooth Block-Reconstruction (FSBR)
问题识别
:在大型语言模型中,线性和非线性操作的激活值在不同通道和token之间会有较大的波动。这种波动导致量化后的模型性能下降。
为了缓解LLMs激活中的离群点,我们提出了FSBR。虽然相比Omniquant和Smoothquant的方法有一些相似之处,但他们主要集中于Serial norm-linear和Parallel linear-linear两种运算中的激活。我们认为有效缓解LLMs中所有的激活-激活和激活-权重对的差异能够显著提高准确性,在此基础上,我们的smooth方法增加了Serial Linear-Linear和Nonlinear Act-Smooth,如下图所示。
I-LLM的FSBR示意图
LLMs中非线性层的激活在通道和token维度上也存在较大差异,如下图所示。因此,我们考虑所有非线性层的激活,并在通道级别学习所有可能的等效平滑变换的平滑系数。一种直观的方法是为所有激活和权值训练一个平滑系数,以帮助恢复模型的量化精度。
然而,这对于Linear层比较容易实现,但是对Non-linear算子不能直接进行等价变换。
LLM异常值很多
这里以SwiGLU为例:
观察图2可以发现,SwiGLU函数的通道和token维度上的的分布不平衡经过FSBR得到了有效缓解。FSBR 的主要目的是平滑不同通道和token之间激活值的波动,从而提高量化模型的准确性。相比Smoothquan和Omniquant,FSBR提供了更多优化权重和激活分布的可能性,为优化权值和激活分布提供了更多可能性。通过跨通道的相互优化,网络对量化的鲁棒性有所提高,如论文中的表4所示。
I-LLM的消融实验
以下是FSBR的一些关键点:
平滑激活值
:FSBR 通过为所有激活值和权重学习平滑系数来解决这个问题。这些平滑系数有助于在量化过程中保持模型的精度。
等效平滑变换
:FSBR 考虑了所有可能的等效平滑变换,并在通道级别上学习平滑系数。这包括了Serial norm-linear、Parallel linear-linear、Serial Linear-Linear、Nonlinear Act-Smooth共四种范式。
非线性操作的平滑
:对于非线性操作,如SwiGLU(一种门控激活函数),FSBR 通过分解操作来应用平滑。
Dynamic Interger-only MatMul (DI-MatMul)
在LLMs中,即使应用了channel间平滑技术,token维度上仍然存在相当大的分布范围,而静态量化方法(即量化参数在运行时固定不变)在遇到超出校准集范围的输入时,往往准确性会严重下降。
因此,现有的量化方案为了保证精度,普遍采用per-token的量化方案,这种在线量化引入了大量的浮点操作
。而全整形GEMM量化的最大难点在于量化参数(scale和zero point)必须是浮点数。
我们提出了DI-MatMul,旨在解决LLMs中GEMM量化推理中(如W4A4)的动态量化问题。为了避免浮点运算,我们dyadic number近似浮点乘法。以下是DI-MatMul实现的关键步骤:
整个过程中,DI-MatMul只使用整数运算,仅引入了一些额外的整数标量计算,使其比之前的方法更高效。
此外,DI-MatMul 能够主动识别并适应输入数据的多样性,从而减少量化误差,提高整体模型性能。
DI-MatMul 是 I-LLM 框架中实现整数量化推理的重要组成部分,它通过动态量化输入和输出,使得模型能够在保持精度的同时,充分利用整数运算单元的效率,加速模型的推理过程。这对于在边缘设备上部署大型语言模型具有重要意义。