宣传一下我们的工作I-LLM,(据我们所知)这是第一个在LLM上实现了integer-only量化的方法,精度逼近浮点,超过Smooth/Omini/Affine Quant等SOTA方法。
- https://arxiv.org/abs/2405.17849
- 单位:后摩智能、南京大学、东南大学
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 框架中实现整数量化推理的重要组成部分,它通过动态量化输入和输出,使得模型能够在保持精度的同时,充分利用整数运算单元的效率,加速模型的推理过程。这对于在边缘设备上部署大型语言模型具有重要意义。
Dynamic Non-Linear Integer-only Operations
由于DI-MatMul支持了动态量化,导致激活值的scale在运行时是变化的,因此我们也提出了DI-ClippedSoftmax、DI-Exp、DI-Normalization等非线性算子的全整形动态量化方案。详情可以参考论文。
Experiments
实验结果表明,I-LLM在LLaMA和OPT系列的7B、13B、30B模型上都取得了惊人的效果,甚至超过了weight-only的量化方案,远超其他的Integer-only量化方案。例如其W6A6的精度逼近浮点,其W4A4也是超过了SmoothQuant、OnmiQuant、AffineQuant等SOTA方法。
I-LLM在zero-shot的任务上同样表现出色。
这项工作首次在LLMs上实现了全整形量化,为LLMs的高效部署和推理开辟了新的途径,尤其是边缘设备上。
The End
作者:Austin
来源:GiantPandaCV
推荐阅读
- 原理&图解vLLM Automatic Prefix Cache首Token时延优化
- 高效轻量级LLM | Imp模型,通过低比特量化分辨率实现高通骁龙8Gen3 芯片高性能部署 !
- 上交大、上海 AI 实验室、ViVO 推出 TerDiT ,极低比特量化感知训练和和高效部署方案 !
- 让量化大模型无损,IntactKV:保持关键词元无损,轻松提升量化精度!
欢迎大家点赞留言,更多Arm技术文章动态请关注极术社区嵌入式客栈专栏欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。