搬运自本人知乎(
论文标题:
AffineQuant: Affine Transformation Quantization for Large Language Models
研究动机:
现有的LLM-PTQ方法将优化范围限制在预量化权重和后量化权重之间的缩放变换上。这个约束会导致量化后出现显著的误差,尤其在低位配置中更为突出。本文提出了在PTQ中使用等效仿射变换直接进行优化的方法(AffineQuant)。这种方法扩展了优化范围,从而显著减少了量化误差。
背景知识:
Affine,顾名思义,仿射。那这个仿射变换和之前的方法具体在哪里不一样。文章里的这个图非常直观的展现了该方法的优势:
假设权重矩阵W具有两个输出通道和输入通道。缩放因子、平移因子和仿射变换矩阵分别表示为s、b和A。这个虚线箭头就是量化前的浮点数,相互交叉的虚线直线就是量化网格。常用的量化是把精细的数值近似到一个量化网格较粗糙的值上。
之前的一些工作,如图左的AWQ,在处理权重时,AWQ为了使浮点数值距离网格值更近,对权重做缩放处理,看图就是移到这个线上。但这里近似带来误差还是比较大。
AWQ中所使用公式
还有一些工作,以图中间的OmniQuant为例,对权重进行平移。但是就算移动到线上,也存在不小的误差。
OmniQuant中所使用的公式,举例时强调其所使用的平移
而这篇文章affinequant引入了仿射变换,通过使仿射变化矩阵与权重相乘,实现对权重的旋转、缩放等操作,使其能更好的贴近量化网格,降低误差。
主要方法:
1、AFFINEQUANT:
本文使用的公式如下:
公式
其中∆,zp和n分别代表量化步长,零点和比特数,⌊·⌉是round函数。AffineQuant是通过将仿射变换矩阵A与权重矩阵W左乘,从而更好地对齐权重分布和量化函数Q(·)。扩展优化空间可以在转换后的权重中减小量化误差,从而降低困惑度。同时,为保证数学上的等效性,还要将将矩阵A的逆与激活X进行右乘。
对于单个线性层,AffineQuant 提出了以下最小化目标公式:
低语言困惑度(PPL)与交叉熵损失(CE)之间存在指数关系,CE又与输出激活函数量化前后的均方误差呈正相关,于是通过减小误差可以实现对困惑度的优化。公式为:
在大型语言模型的量化中(多个线性层),AffineQuant的最小化目标如下:
其中,fi表示第i个transformer块,(X−δ)A-¹,Q(AW),b+δW分别表示等效变换之后的激活、权重和偏置。AffineQuant将仿射变换和平移变换结合起来,并将transformer块输出的均方误差作为优化目标。
2、REVERSIBILITY AND GRADUAL MASK
在上文中用到了仿射矩阵的逆,但是仿射矩阵一定是可逆的吗?首先对仿射矩阵的可逆性进行证明。
首先,想证明可逆性需要用到一个前提条件。即严格对角占优矩阵必可逆。严格对角占优矩阵指,矩阵所有对角线上的元素,都大于元素所在行的其他元素之和,对列也成立。应用这个性质,我们可以证明其可逆,下面是反证法:
为了确保在优化过程中确保仿射变换矩阵始终严格地保持这个对角线优势呢,affinequant引入了Gradual Mask方法。
在每个优化块的开始时,将除了主对角线上的元素之外的所有元素冻结。随着优化的进行,逐渐解冻靠近主对角线的元素。最终,所有矩阵元素都变得可学习进行优化。Gradual Mask定义如下:
其中GMij是掩码矩阵的第i行,第j列元素。t是目标时期。e∈[1,t]是当前时期。"隐藏大小"是仿射变换矩阵的行数或列数。α是稳定因子。优化过程如下:
其中,◦表示Hadamard乘,这个矩阵乘法长这样:
Ae和GMe是矩阵A和序号为e的渐进屏蔽(GM)矩阵。η是矩阵A的学习率。L是优化损失。当稳定因子α小于1时,渐进屏蔽(GM)矩阵在正向传播过程中有效地减小矩阵A中非主对角元素的幅度。这确保了在第e个时期的优化过程中,存在一个稳定的逆矩阵A∗(上面证过了)。在反向传播中,GM对学习率η产生影响,从而抑制了矩阵A中非主对角元素的更新速率。因此,GM对η的影响确保了阶A矩阵在e+1时期保持严格的对角优势。
论文原文发表在OpenReview上,其中有不少评审对论文的看法,个人比较欣赏这种公开评审的方式。
原文地址:AffineQuant: Affine Transformation Quantization for Large Language Models | OpenReview