QuIP: 大语言模型的两位量化方法及其保障

引言

大语言模型(LLMs)的出现推动了文本生成、少样本学习、推理和蛋白质序列建模等领域的进步。这些模型的规模通常达到数千亿个参数,使得高效的推理算法变得至关重要。本文研究了LLM参数的训练后量化,提出了一种新的量化方法——不合处理量化(QuIP),并展示了其在大语言模型中的应用。

研究背景

训练后量化

训练后量化(Post-Training Quantization,PTQ)是一种通过在训练完成后对模型参数进行量化,从而提高模型运行效率的方法。现有的PTQ方法主要通过减少权重或激活值的范围来简化量化过程,但这些方法在处理大规模语言模型时往往需要进一步的再训练,成本较高。

现有方法

一些现有的方法如SmoothQuant、ZeroQuant和LLM.int8()等,通过不同的技术手段来减小量化的难度。例如,SmoothQuant通过在激活值和权重之间进行重新缩放来去除激活值中的异常值,从而简化量化过程。OPTQ(即GPTQ)提出了一种新的舍入方法,能够在最大的OPT和BLOOM模型上工作。

QuIP方法

不合处理量化

QuIP是一种基于不合性(incoherence)处理的量化方法,主要包括两个步骤:

  1. 自适应舍入:通过最小化一个二次代理目标来进行舍入。
  2. 高效的预处理和后处理:通过乘以随机正交矩阵的Kronecker积来确保权重和Hessian矩阵的不合性。

自适应舍入

自适应舍入步骤通过最小化以下代理目标来进行:

ℓ ( W ^ ) = tr ⁡ ( ( W ^ − W ) H ( W ^ − W ) T ) \ell(\hat{W}) = \operatorname{tr}\left((\hat{W} - W)H(\hat{W} - W)^T\right) (W^)=tr((W^W)H(W^W)T)

其中, W W W是原始权重矩阵, W ^ \hat{W} W^是量化后的权重矩阵, H H H是这些向量的二阶矩阵,作为Hessian的代理。这个公式使得量化可以在神经元之间并行运行,对于大规模语言模型是可行的。

LDLQ方法

LDLQ方法是一种优化的自适应舍入方法,通过以下方式定义:

W ^ k = Q ( W k + ( W 1 : ( k − 1 ) − W ^ 1 : ( k − 1 ) ) a k ) \hat{W}_k = Q(W_k + (W_{1:(k-1)} - \hat{W}_{1:(k-1)})a_k) W^k=Q(Wk+(W1:(k1)W^1:(k1))ak)

其中, W k W_k Wk表示第 k k k列, Q Q Q表示最近舍入或标准无偏舍入, a k a_k ak是一些向量序列。最终的 W ^ \hat{W} W^满足以下矩阵方程:

W ^ = Q ( W + ( W − W ^ ) U ) \hat{W} = Q(W + (W - \hat{W})U) W^=Q(W+(WW^)U)

其中, U U U是一个严格的上三角矩阵,其列是向量 a k a_k ak。通过选择合适的 U U U,可以使得代理目标达到最小值。

理论分析

最优性证明

通过理论分析,LDLQ在最差和平均情况下都是最优的。对于所有正半定的 H H H,以及Q作为最近舍入或随机舍入,LDLQ的最差和平均代理损失都小于其他舍入方法:

tr ⁡ ( D ) = L worst ( LDLQ , H ) ≤ L worst ( A , H ) \operatorname{tr}(D) = L_{\text{worst}}(\text{LDLQ}, H) \leq L_{\text{worst}}(A, H) tr(D)=Lworst(LDLQ,H)Lworst(A,H)

m tr ⁡ ( D ) = L avg ( LDLQ , H ) ≤ L avg ( A , H ) m \operatorname{tr}(D) = L_{\text{avg}}(\text{LDLQ}, H) \leq L_{\text{avg}}(A, H) mtr(D)=Lavg(LDLQ,H)Lavg(A,H)

其中, D D D H H H的LDL分解中的对角矩阵。

不合处理的作用

不合处理的作用在于通过乘以随机正交矩阵的Kronecker积来确保权重和Hessian矩阵的不合性,从而减少舍入误差。这种处理可以看作是一种形式的异常值抑制,跨越权重和激活空间。

实验结果

通过实验证明,不合处理显著提高了大模型的量化效果,特别是在较高压缩率下。对于大规模LLM(>2B参数),我们观察到2位和4位压缩之间的差距很小,并且随着模型规模的增加而进一步减少,提示了2位推理在LLM中的可行性。

结论

本文提出了一种基于不合处理的量化方法QuIP,通过自适应舍入和高效的预处理与后处理步骤,实现了大语言模型的两位量化。理论分析表明,QuIP在最差和平均情况下都是最优的。实验结果显示,QuIP能够在高压缩率下显著提高量化效果,首次实现了仅使用每权重两位的LLM量化方法。

参考文献

  1. Chee, J., Cai, Y., Kuleshov, V., & De Sa, C. (2023). QuIP: 2-Bit Quantization of Large Language Models With Guarantees. Retrieved from https://arxiv.org/pdf/2307.13304

  2. Nagel, M., et al. (2020). Adaptive Rounding for Post-Training Quantization.

  3. Zhang, H., et al. (2021). SmoothQuant: Removing Outliers by Rescaling Activations and Weights.

  4. Lin, Y., et al. (2021). ZeroQuant: Efficient Post-Training Quantization for Large-Scale Transformers.

  5. Dettmers, T., et al. (2021). LLM.int8(): 8-bit Matrix Multiplications for Large Language Models.

  6. Frantar, E., et al. (2021). OPTQ: Quantization for Optimal Performance of Large Language Models.


二阶矩阵,也称为Hessian矩阵,是在优化问题和多元微积分中非常重要的一个概念。它描述了一个多变量函数在某一点的二阶导数信息,用于分析该点的曲率特性。具体来说,给定一个实值函数 f ( x 1 , x 2 , . . . , x n ) f(x_1, x_2, ..., x_n) f(x1,x2,...,xn),其Hessian矩阵是由该函数的所有二阶偏导数组成的方阵,定义如下:

H ( f ) = [ ∂ 2 f ∂ x 1 2 ∂ 2 f ∂ x 1 ∂ x 2 ⋯ ∂ 2 f ∂ x 1 ∂ x n ∂ 2 f ∂ x 2 ∂ x 1 ∂ 2 f ∂ x 2 2 ⋯ ∂ 2 f ∂ x 2 ∂ x n ⋮ ⋮ ⋱ ⋮ ∂ 2 f ∂ x n ∂ x 1 ∂ 2 f ∂ x n ∂ x 2 ⋯ ∂ 2 f ∂ x n 2 ] H(f) = \begin{bmatrix} \frac{\partial^2 f}{\partial x_1^2} & \frac{\partial^2 f}{\partial x_1 \partial x_2} & \cdots & \frac{\partial^2 f}{\partial x_1 \partial x_n} \\ \frac{\partial^2 f}{\partial x_2 \partial x_1} & \frac{\partial^2 f}{\partial x_2^2} & \cdots & \frac{\partial^2 f}{\partial x_2 \partial x_n} \\ \vdots & \vdots & \ddots & \vdots \\ \frac{\partial^2 f}{\partial x_n \partial x_1} & \frac{\partial^2 f}{\partial x_n \partial x_2} & \cdots & \frac{\partial^2 f}{\partial x_n^2} \end{bmatrix} H(f)= x122fx2x12fxnx12fx1x22fx222fxnx22fx1xn2fx2xn2fxn22f

Hessian矩阵的作用

Hessian矩阵在优化中有几个重要作用:

  1. 局部曲率分析:Hessian矩阵提供了函数在某一点的局部曲率信息。通过分析Hessian矩阵的特征值,可以判断该点是局部最小值、局部最大值还是鞍点。
  2. 二次近似:在优化算法中,Hessian矩阵用于构建目标函数的二次近似,从而帮助找到优化方向。例如,Newton法通过使用Hessian矩阵来迭代更新参数,以加速收敛。
  3. 稳定性分析:Hessian矩阵的正定性与否可以用于判断优化过程的稳定性。在训练神经网络时,Hessian矩阵的特征值用于评估网络的学习动态。

在QuIP方法中的应用

在QuIP方法中,Hessian矩阵作为代理目标的一部分,用于指导自适应舍入过程。具体来说,QuIP方法通过最小化以下代理目标来进行舍入:

ℓ ( W ^ ) = tr ⁡ ( ( W ^ − W ) H ( W ^ − W ) T ) \ell(\hat{W}) = \operatorname{tr}\left((\hat{W} - W)H(\hat{W} - W)^T\right) (W^)=tr((W^W)H(W^W)T)

其中, W W W是原始权重矩阵, W ^ \hat{W} W^是量化后的权重矩阵, H H H是这些向量的Hessian矩阵。这个公式的直观理解是,通过权重矩阵 W W W和量化后的权重矩阵 W ^ \hat{W} W^之间的差异,以及Hessian矩阵 H H H,来构建一个二次代理目标,以引导量化过程中的舍入决策。

从公式的角度解析

从公式的角度来看,Hessian矩阵 H H H在代理目标中的作用如下:

  1. 权重差异的加权 ( W ^ − W ) (\hat{W} - W) (W^W)表示量化后的权重和原始权重之间的差异。 H H H对这些差异进行加权,使得某些方向上的误差更重要。这样一来,量化过程中可以优先考虑这些方向,减少关键方向上的误差。
  2. 二次形式 tr ⁡ ( ( W ^ − W ) H ( W ^ − W ) T ) \operatorname{tr}\left((\hat{W} - W)H(\hat{W} - W)^T\right) tr((W^W)H(W^W)T)表示了一种二次形式,通过对权重差异进行平方和加权,构建了一个二次代理目标。这种二次形式在数学上具有良好的性质,有助于优化算法的收敛性和稳定性。

总结

Hessian矩阵在QuIP方法中起到了关键的作用,通过提供函数的二阶导数信息,帮助构建了一个有效的代理目标,从而指导自适应舍入过程,最终实现高效的量化。理解Hessian矩阵的定义和作用,对于深入理解QuIP方法和其他优化算法都有重要意义。


不合处理的作用解析

背景介绍

在机器学习和深度学习中,量化是一种通过将模型参数从高精度(如32位浮点数)减少到低精度(如8位或更低)以便减少模型大小和提高计算效率的技术。然而,直接进行量化可能会引入舍入误差,尤其是在模型参数分布不均匀时,这种误差可能会严重影响模型性能。

不合性(Incoherence)

不合性旨在使得矩阵的行或列之间在统计意义上独立或弱相关。具体来说,在量化过程中,如果权重矩阵和Hessian矩阵是不合的(incoherent),则这些矩阵的行或列的大小和方向是均匀分布的,这样可以减少舍入误差。

随机正交矩阵和Kronecker积

为了实现不合性处理,QuIP方法中采用了随机正交矩阵的Kronecker积。正交矩阵是指一个方阵,其行向量和列向量都是正交的,且模长为1。随机正交矩阵是通过随机生成的方式得到的正交矩阵。

Kronecker积是两个矩阵之间的操作,定义如下:

A ⊗ B = [ a 11 B a 12 B ⋯ a 1 n B a 21 B a 22 B ⋯ a 2 n B ⋮ ⋮ ⋱ ⋮ a m 1 B a m 2 B ⋯ a m n B ] A \otimes B = \begin{bmatrix} a_{11}B & a_{12}B & \cdots & a_{1n}B \\ a_{21}B & a_{22}B & \cdots & a_{2n}B \\ \vdots & \vdots & \ddots & \vdots \\ a_{m1}B & a_{m2}B & \cdots & a_{mn}B \\ \end{bmatrix} AB= a11Ba21Bam1Ba12Ba22Bam2Ba1nBa2nBamnB

其中, A A A是一个 m × n m \times n m×n的矩阵, B B B是一个 p × q p \times q p×q的矩阵, A ⊗ B A \otimes B AB则是一个 m p × n q mp \times nq mp×nq的矩阵。

不合处理的具体步骤

不合处理通过以下步骤来实现权重和Hessian矩阵的不合性:

  1. 生成随机正交矩阵:生成一个随机正交矩阵 Q Q Q,这个矩阵可以通过对一个随机矩阵进行QR分解得到。
  2. Kronecker积:计算随机正交矩阵 Q Q Q的Kronecker积 Q ⊗ Q Q \otimes Q QQ,得到一个新的矩阵 K K K
  3. 矩阵乘法:将权重矩阵和Hessian矩阵分别与 K K K相乘,得到新的不合矩阵 W ′ W' W H ′ H' H

W ′ = K ⋅ W ⋅ K T W' = K \cdot W \cdot K^T W=KWKT

H ′ = K ⋅ H ⋅ K T H' = K \cdot H \cdot K^T H=KHKT

不合处理的作用

通过上述步骤,不合处理在以下几个方面发挥作用:

  1. 减少舍入误差:由于随机正交矩阵的作用,权重和Hessian矩阵的各个方向上的信息被均匀分布,从而减少某些方向上的突出值(异常值)。这使得在量化过程中,舍入误差能够更均匀地分布,减少了总体误差。
  2. 抑制异常值:异常值是指在数据中显著偏离其他值的点。在权重和激活空间中,异常值可能会导致量化过程中误差的累积。通过不合处理,这些异常值被有效抑制,使得量化后的模型具有更好的鲁棒性。
  3. 提高量化效果:经过不合处理后的矩阵在统计意义上更加独立,减少了量化过程中相邻元素之间的相关性,从而提高了量化效果,使得模型在更低的位宽下仍能保持较高的性能。

实验验证

实验结果表明,通过不合处理,QuIP方法在高压缩率下显著提高了量化效果。例如,在大规模LLMs(>2B参数)上,2位和4位压缩之间的差距显著减小,提示了2位推理在LLMs中的可行性。

总结

不合处理通过乘以随机正交矩阵的Kronecker积来确保权重和Hessian矩阵的不合性,从而减少舍入误差。这种处理不仅抑制了异常值,还提高了量化效果,使得在低位宽下的模型性能得以保持。理解不合处理的具体步骤和作用,对于深入掌握QuIP方法以及其他量化技术具有重要意义。

  • 19
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

步子哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值