OAC: Output-adaptive Calibration for Accurate Post-training Quantization
文章目录
- 摘要
- 1 引言
- 2 相关工作
- 3 输出无关校准背景
- 4 提出的输出自适应校准
- 4.1 跨层独立性
- 4.2 跨行独立性
- 4.3 行-wise Hessian 聚合
- 4.4 输出自适应 Hessian 的近似
- 5 OAC 流程
- HOAC 的计算
- 基于 HOAC 的校准
- 6 实验与结果
- 6.1 实验设置
- 6.2 实验结果
- 7 结论
摘要
大型语言模型(LLMs)的部署带来了巨大的计算开销,这是由于其规模快速增长所致。对大型语言模型进行压缩可以减少内存占用、降低延迟以及节省推理所需的能量。后训练量化(Post-training Quantization, PTQ)技术被提出用于压缩大型语言模型,同时避免昂贵的重新训练。大多数PTQ方法基于层级欧几里得损失来构建量化误差,忽略了模型的最终输出。随后,每一层都会使用该层的Hessian矩阵进行校准,以调整权重,最小化量化误差。Hessian矩阵同样用于检测那些对量化最敏感的重要权重。然而,这类PTQ方法在低精度量化时容易导致准确率下降。
针对这一问题,我们提出了输出自适应校准(Output-adaptive Calibration, OAC)方法,将模型输出纳入校准过程。我们基于输出交叉熵损失的扭曲来构建量化误差。OAC在合理假设下近似了每一层的输出自适应Hessian矩阵,从而降低计算复杂度。这些输出自适应Hessian矩阵被用来更新权重矩阵,并检测对保持模型输出至关重要的权重。
我们的提出的方法在极低精度量化(如2位和二值量化)下,明显优于当前的先进基线方法,如SpQR和BiLLM。
1 引言
大型语言模型(LLMs)的发展引发了自然语言处理领域的革命,推动了包括但不限于推理、问答、文本生成和少样本学习等多项任务的显著进步 [Radford et al., 2019;Brown et al., 2020;Zhang et al., 2022;Touvron et al., 2023a,b;Achiam et al., 2023]。大型语言模型包含了数十亿甚至上千亿的参数,这被认为是其成功的关键因素之一 [Brown et al., 2020]。然而,模型规模庞大也带来了巨大的计算复杂度和部署难题,尤其是在资源有限的设备上。
后训练量化(Post-training Quantization, PTQ)方法被引入,用以通过降低模型权重或激活值的精度,在无需额外训练的情况下,解决大型语言模型部署时面临的挑战 [Xiao et al., 2023;Yao et al., 2022;Frantar et al., 2023;Lin et al., 2024;Kim et al., 2024;Dettmers et al., 2024;Huang et al., 2024]。PTQ技术避免了量化感知训练(Quantization-aware Training, QAT)方法所需的高昂计算成本 [Kim et al., 2023;Liu et al., 2024;Shao et al., 2024;Du et al., 2024]。PTQ方法是实现大型语言模型高效部署的主要技术之一,能够实现接近无损的4位精度压缩 [Dettmers et al., 2024]。然而,极低精度(如2位或二值量化)的PTQ仍然是一个未解决的挑战,也是我们提出方法的主要关注点。
为了恢复量化模型的性能,大多数最新的PTQ方法 [Frantar et al., 2023;Chee et al., 2023;Dettmers et al., 2024;Huang et al., 2024] 都采用逐层校准来降低量化误差。这些方法通过一个小型校准集,计算原始层输出与量化层输出之间的ℓ2损失作为量化误差,如图1a所示。我们称这类方法为“输出无关校准”(output-agnostic calibration),因为它们仅关注单个线性层的输出,忽略了整个模型的最终输出。输出无关方法通过计算每层权重对应ℓ2损失的二阶导数,形成层级Hessian矩阵。Hessian用于衡量权重的重要性,以检测最显著的异常权重 [Dettmers et al., 2024;Kim et al., 2024;Huang et al., 2024]。同时,根据Hessian,权重会被调整以最小化ℓ2误差 [Frantar et al., 2023;Chee et al., 2023;Dettmers et al., 2024;Huang et al., 2024]。由于这些方法忽略了模型输出,它们被认为难以在极低精度量化下恢复原始模型的性能。
我们提出了输出自适应校准(Output-adaptive Calibration, OAC),直接最小化量化后模型输出的失真,如图1b所示。OAC减少了模型输出的量化误差,并在极低精度量化(如2位和二值量化)中显著优于当前最先进的PTQ方法。
OAC依然采用逐层的策略对大型语言模型的线性层进行量化和校准。但与现有PTQ方法使用层级ℓ2损失的Hessian不同,我们利用输出交叉熵损失的二阶导数计算输出自适应Hessian。我们利用输出自适应Hessian来更新权重并衡量权重的重要性,从而实现更精准的校准。由于直接计算大型模型的精确输出自适应Hessian计算量巨大,我们采用了多种技术降低近似该Hessian的计算复杂度。
我们的OAC方法继承了PTQ文献中的常见假设 [Frantar and Alistarh, 2022;Frantar et al., 2023;Dettmers et al., 2024],例如:(i) 线性层之间相互独立;(ii) 权重矩阵的各行相互独立。假设(i)用于计算每层的输出自适应Hessian矩阵,而假设(ii)结合费舍尔信息矩阵(Fisher Information Identity),用于近似行级Hessian矩阵。此外,我们通过聚合行级Hessian矩阵定义二次优化问题,大幅降低了内存占用。
我们将OAC应用于多个大型语言模型的极低精度PTQ,并在多项任务上评估性能。结果显示,OAC在2位和二值量化下显著优于所有当前最先进的PTQ方法。
总结来说,我们的主要贡献包括:
- 提出OAC,一种新颖的输出自适应校准方法,针对大型语言模型的后训练量化,尤其在极低精度量化场景(2位和二值量化)下优于现有技术。据我们所知,这是首个面向大型语言模型的输出自适应校准方法。
- 提出一种量化技术,最小化层级量化对输出交叉熵损失的影响。为此,我们开发了一种高效的Hessian近似技术作为方法核心。将我们的输出自适应Hessian整合到其他基于Hessian的PTQ方法中也能提升精度。
- 提供了关于Hessian近似的理论见解,并通过多项任务的综合实验验证了方法的有效性。
2 相关工作
量化技术主要分为两大类,即量化感知训练(Quantization-aware Training,QAT)和后训练量化(Post-training Quantization,PTQ)。QAT方法在训练过程中同时进行量化和模型训练 [Liu et al., 2024;Jacob et al., 2018;Li et al., 2017;Shao et al., 2024]。鉴于重新训练大型模型的计算成本极高,QAT方法往往代价昂贵。另一种可行的替代方案是采用PTQ技术,它利用高效的求解器在无需进一步训练的情况下尽量减小量化误差。许多PTQ方法通过校准策略,在一个小规模的校准集上稍微调整模型权重以降低量化误差 [Gholami et al., 2022]。
现有的PTQ方法中,AdaRound [Nagel et al., 2020]、OBQ [Frantar and Alistarh, 2022]、AdaQuant [Hubara et al., 2021] 和 BRECQ [Li et al., 2021] 主要针对参数规模约1亿的小型计算机视觉模型设计和应用。然而,将这些方法应用于拥有数十亿参数的大型语言模型时,计算开销非常巨大。
ZeroQuant [Yao et al., 2022]、LLM.int8() [Dettmers et al., 2022] 和 SmoothQuant [Xiao et al., 2023] 是最早研究大型语言模型PTQ的技术之一。ZeroQuant除了采用层级知识蒸馏外,还探讨了量化粒度。LLM.int8()通过阈值分离异常激活,再将模型量化为INT8格式。SmoothQuant 通过缩放层的输入,减少了激活量化的复杂度。尽管这些方法在8位量化上取得成功,但在极低精度量化(如2位)方面表现较差。
受 [Hassibi and Stork, 1992;LeCun et al., 1989] 启发,OPTQ [Frantar et al., 2023] 对权重执行列级校准,使得在合理的时间和计算资源预算下,能够实现更加精准的3位和4位PTQ。AWQ [Lin et al., 2024] 通过检测并缩放重要权重减少PTQ误差。QuIP [Chee et al., 2023] 在OPTQ更新公式的基础上,引入权重和Hessian的非相干预处理,降低亚4位PTQ的精度下降。QuIP# [Tseng et al., 2024] 进一步增强QuIP,采用随机Hadamard变换 [Halko et al., 2011]、矢量量化以及微调。SpQR [Dettmers et al., 2024] 对OPTQ校准策略进行了两项重要改进,实现了最高4位的近无损压缩:(i)利用Hessian检测和隔离异常值;(ii)对量化参数(如刻度和零点)执行第二轮量化,减少平均比特宽度,同时将异常值保持为FP32格式并采用小组量化。
SqueezeLLM [Kim et al., 2024] 研究了基于敏感度的K均值聚类进行非均匀PTQ,且不进行校准。为了检测重要权重,SqueezeLLM利用费舍尔信息矩阵近似每个线性层的输出损失Hessian。然而,非均匀量化通常在推理时面临部署挑战 [Gholami et al., 2022]。OmniQuant [Shao et al., 2024] 提出了一种高效的QAT方法,在冻结模型权重的同时学习量化参数,实现了与QAT方法相当的精度,且训练负担较轻。与我们工作方向不同,AQLM [Egiazarian et al., 2024] 使用加法量化(Additive Quantization)和微调来克服低精度量化问题。PB-LLM [Yuan et al., 2024] 通过两阶段量化流程研究了大型语言模型的部分二值化:首先对非重要权重采用基于OPTQ的PTQ;然后对量化模型进行QAT微调,同时冻结重要权重。BiLLM [Huang et al., 2024] 开发了一种更精准的PTQ方法,针对大型语言模型的二值化,通过识别并结构化选择重要权重来实现。此外,BiLLM 采用二值残差近似策略最小化量化误差,并通过分组搜索基于钟形分布量化非异常权重。
与现有最先进的PTQ方法相比,我们提出的方法具有以下优势:
- 我们的方法计算输出自适应Hessian,以模型输出的交叉熵损失为校准依据,而OPTQ、QuIP、QuIP#、SpQR和BiLLM则使用与响应无关的层级Hessian。
- 与SqueezeLLM和BRECQ不同,我们的方法不依赖输出自适应Hessian为对角矩阵的假设,从而实现更精确的近似。此外,BRECQ由于计算复杂度高,无法扩展到大型语言模型。SqueezeLLM的非均匀量化在推理时存在部署难题,也无法支持极低精度量化。
当然,以下是你提供的第3节“输出无关校准背景”的中文翻译,包括公式的LaTeX格式表示:
3 输出无关校准背景
本节中,我们将介绍符号表示以及当前主流PTQ方法所采用的响应无关校准设置 [Frantar and Alistarh, 2022;Frantar et al., 2023;Chee et al., 2023;Dettmers et al., 2024;Huang et al., 2024]。
考虑一个使用交叉熵损失(cross-entropy, CE)训练的大型语言模型。设 θ ∈ R D \theta \in \mathbb{R}^D θ∈RD 表示模型权重的 D D D维向量,这些权重由各层的权重矩阵 W ( l ) ∈ R d row × d col W^{(l)} \in \mathbb{R}^{d_{\text{row}} \times d_{\text{col}}} W(l)∈Rdrow×dcol 构成, l = 1 , … , L l=1,\dots,L l=1,…,L,其中 L L L 是层数,即
θ = vec [ W ( l ) ] l = 1 L , \theta = \operatorname{vec}[W^{(l)}]_{l=1}^L, θ=vec[W(l)]l=1L,
这里 vec [ ⋅ ] \operatorname{vec}[\cdot] vec[⋅] 表示将矩阵展开为向量。令 y ∈ R d vocab y \in \mathbb{R}^{d_{\text{vocab}}} y∈Rdvocab 表示模型在给定输入 x ∈ R d col x \in \mathbb{R}^{d_{\text{col}}} x∈Rdcol 下的输出。为简化表示,若无混淆风险,我们省略层级指标 l l l 在 W W W 上的标注。 x ( l ) ∈ R d col x^{(l)} \in \mathbb{R}^{d_{\text{col}}} x(l)∈Rdcol 表示第 l l l 层的输入。以下符号约定中, A : , q A_{:,q} A:,q 表示矩阵 A A A 的第 q q q 列, A q , : A_{q,:} Aq,: 表示第 q q q 行, A j , k A_{j,k} Aj,k 表示第 j j j 行第 k k k 列元素。
大多数PTQ方法遵循逐层量化和校准LLMs中线性层的范式。
令 W W W 表示第 l l l 层的权重矩阵。量化和校准过程被建模为给 W W W 添加一个小的更新项 δ W \delta W δW,即
W = W + δ W . W = W + \delta W. W=W+δW.
为了在训练结束后准确地量化权重,需要定义一个损失函数来衡量量化误差。
在响应无关(response-agnostic)的设置下 [Frantar and Alistarh, 2022;Frantar et al., 2023;Chee et al., 2023;Dettmers et al., 2024],量化误差 ε ℓ 2 \varepsilon_{\ell_2} εℓ2 通过量化层和原始层输出之间的 ℓ 2 \ell_2 ℓ2 损失来衡量:
ε ℓ 2 = E x ( l ) ∥ W x ( l ) − W ^ x ( l ) ∥ 2 2 = E x ( l ) tr ( δ W x ( l ) x ( l ) ⊤ δ W ⊤ ) = tr ( δ W H ˉ δ W ⊤ ) , \varepsilon_{\ell_2} = \mathbb{E}_{x^{(l)}} \| W x^{(l)} - \hat{W} x^{(l)} \|_2^2 = \mathbb{E}_{x^{(l)}} \operatorname{tr} \left( \delta W x^{(l)} x^{(l) \top} \delta W^\top \right) = \operatorname{tr} \left( \delta W \bar{H} \delta W^\top \right), εℓ2=Ex(l)∥Wx(l)−W^x(l)∥22=Ex(l)tr(δWx(l)x(l)⊤δW⊤)=tr(δWHˉδW⊤),
其中
H ˉ = E x ( l ) [ x ( l ) x ( l ) ⊤ ] \bar{H} = \mathbb{E}_{x^{(l)}} \left[ x^{(l)} x^{(l) \top} \right] Hˉ=Ex(l)[x(l)x(l)⊤]
是响应无关的Hessian矩阵,且假设权重矩阵的各行独立地对 ε ℓ 2 \varepsilon_{\ell_2} εℓ2 贡献 [Frantar and Alistarh, 2022]。
接下来,对 W W W 的各列执行迭代校准操作以最小化量化误差 [Frantar and Alistarh, 2022;Frantar et al., 2023;Dettmers et al., 2024]。在第 q q q 次迭代中,将 W : , q W_{:,q} W:,q 量化为 W ^ : , q \hat{W}_{:,q} W^:,q,并更新其余列以最小化 ε ℓ 2 \varepsilon_{\ell_2} εℓ2。则优化问题表述为
min δ W tr ( δ W H ˉ δ W ⊤ ) , \min_{\delta W} \operatorname{tr} \left( \delta W \bar{H} \delta W^\top \right), δWmintr(δWHˉδW⊤),
约束条件为
δ W : , q = W ^ : , q − W : , q . \delta W_{:,q} = \hat{W}_{:,q} - W_{:,q}. δW:,q=W^:,q−W:,q.
根据 [Frantar and Alistarh, 2022;Frantar et al., 2023],第 q q q 次迭代的最优更新为
δ W q ∗ = − ( W ^ : , q − W : , q ) [ H ˉ − 1 ] q , : [ H ˉ − 1 ] q , q . \delta W_q^* = -\left( \hat{W}_{:,q} - W_{:,q} \right) \frac{\left[ \bar{H}^{-1} \right]_{q,:}}{\left[ \bar{H}^{-1} \right]_{q,q}}. δWq∗=−(W^:,q−W:,q)[Hˉ−1]q,q[Hˉ−1]q,:.
最显著的权重被标记为异常值(outliers),针对异常值,各种缓解技术已被提出 [Dettmers et al., 2024;Kim et al., 2024;Huang et al., 2024;Gholami et al., 2022]。
以下公式用于衡量每个权重的重要性(显著性):
s j , k = ( W j , k − W ^ j , k ) 2 [ H ˉ − 1 ] k , k . s_{j,k} = \frac{(W_{j,k} - \hat{W}_{j,k})^2}{\left[ \bar{H}^{-1} \right]_{k,k}}. sj,k=[Hˉ−1]k,k(Wj,k−W^j,k)2.
好的,以下是你提供的第4节内容的中文翻译,所有公式均使用了双美元符号 $$ 包裹,变量使用单美元 $ 包裹:
4 提出的输出自适应校准
与第3节中介绍的设置不同,我们提出了将权重校准为最小化量化前后模型输出损失差异的方法,因此称为输出自适应校准(Output-adaptive Calibration,简称 OAC)。换句话说,我们基于权重量化后交叉熵损失 L C E ( x , y , θ ) L_{\mathrm{CE}}(x,y,\theta) LCE(x,y,θ) 的失真来衡量量化误差,其中权重展开为 θ = vec [ W ( l ) ] l = 1 L \theta = \operatorname{vec}[W^{(l)}]_{l=1}^L θ=vec[W(l)]l=1L。量化过程表示为 θ = θ + δ θ \theta = \theta + \delta \theta θ=θ+δθ,其中 δ θ \delta \theta δθ 是更新项。
因此,输出自适应误差定义为:
ε O A C = E ( x , y ) [ L C E ( x , y , θ ) − L C E ( x , y , θ ^ ) ] = δ θ ⊤ g ˉ + 1 2 δ θ ⊤ H ˉ O A C ( θ ) δ θ + O ( ∥ δ θ ∥ 3 ) , \varepsilon_{\mathrm{OAC}} = \mathbb{E}_{(x,y)} \left[ L_{\mathrm{CE}}(x,y, \theta) - L_{\mathrm{CE}}(x,y, \hat{\theta}) \right] = \delta\theta^\top \bar{g} + \frac{1}{2} \delta\theta^\top \bar{H}_{\mathrm{OAC}}(\theta) \delta\theta + O(\|\delta\theta\|^3), εOAC=E(x,y)[LCE(x,y,θ)−LCE(x,y,θ^)]=δθ⊤gˉ+21δθ⊤HˉOAC(θ)δθ+O(∥δθ∥3),
其中
H ˉ O A C ( θ ) = E ( x , y ) [ ∂ 2 L C E ∂ θ ∂ θ ⊤ ] ∈ R D × D \bar{H}_{\mathrm{OAC}}(\theta) = \mathbb{E}_{(x,y)} \left[ \frac{\partial^2 L_{\mathrm{CE}}}{\partial \theta \partial \theta^\top} \right] \in \mathbb{R}^{D \times D} HˉOAC(θ)=E(x,y)[∂θ∂θ⊤∂2LCE]∈RD×D
是整个权重的输出自适应 Hessian 矩阵,
g ˉ = E ( x , y ) [ ∂ L C E ∂ θ ] ≈ 0 \bar{g} = \mathbb{E}_{(x,y)}\left[\frac{\partial L_{\mathrm{CE}}}{\partial \theta}\right] \approx 0 gˉ=E(x,y)[∂θ∂LCE]≈0
因为模型已经训练完成 [Nagel et al., 2020]。对于大型语言模型,计算 H ˉ O A C ( θ ) \bar{H}_{\mathrm{OAC}}(\theta) HˉOAC(θ) 不可行,因其规模高达 O ( D 2 ) O(D^2) O(D2)。在第4.1、4.2和4.3节中,我们将说明如何规避精确计算 H ˉ O A C ( θ ) \bar{H}_{\mathrm{OAC}}(\theta) HˉOAC(θ)。
4.1 跨层独立性
遵循我们提出的逐层量化和校准流程,我们假设线性层之间相互独立,其输出自适应 Hessian 可独立计算。因此, H ˉ O A C \bar{H}_{\mathrm{OAC}} HˉOAC 被近似为块对角矩阵,其中第 l l l 个非零对角块记为 H ˉ O A C ( l ) \bar{H}_{\mathrm{OAC}}^{(l)} HˉOAC(l),对应第 l l l 个线性层的输出自适应 Hessian,如图2(1)所示。为简化符号,当无歧义时省略 l l l。
假设跨层独立后,每个线性层校准时的量化误差为:
ε O A C = E ( x , y ) [ L C E ( x , y , θ ) − L C E ( x , y , θ ^ ) ] ≈ δ w ⊤ H ˉ O A C δ w , \varepsilon_{\mathrm{OAC}} = \mathbb{E}_{(x,y)} \left[ L_{\mathrm{CE}}(x,y,\theta) - L_{\mathrm{CE}}(x,y,\hat{\theta}) \right] \approx \delta w^\top \bar{H}_{\mathrm{OAC}} \delta w, εOAC=E(x,y)[LCE(x,y,θ)−LCE(x,y,θ^)]≈δw⊤HˉOACδw,
其中 w = vec ( W ) w = \operatorname{vec}(W) w=vec(W), H ˉ O A C = E ( x , y ) [ ∂ 2 L C E ∂ w ∂ w ⊤ ] ∈ R d row d col × d row d col \bar{H}_{\mathrm{OAC}} = \mathbb{E}_{(x,y)} \left[ \frac{\partial^2 L_{\mathrm{CE}}}{\partial w \partial w^\top} \right] \in \mathbb{R}^{d_{\text{row}} d_{\text{col}} \times d_{\text{row}} d_{\text{col}}} HˉOAC=E(x,y)[∂w∂w⊤∂2LCE]∈Rdrowdcol×drowdcol 是该层的输出自适应 Hessian 矩阵, δ w = vec ( W ^ − W ) \delta w = \operatorname{vec}(\hat{W} - W) δw=vec(W^−W) 是更新项。
考虑到 LLM 中线性层的维度, H ˉ O A C \bar{H}_{\mathrm{OAC}} HˉOAC 是个超大矩阵,规模约为 O ( d row 2 d col 2 ) O(d_{\text{row}}^2 d_{\text{col}}^2) O(drow2dcol2),计算内存消耗极大。一些现有方法如 [Kim et al., 2024; Li et al., 2021] 忽略元素间相关性,假设所有权重独立,用 Fisher 信息矩阵的对角元素构成对角矩阵来近似 Hessian,但这种过于严格的假设会导致精度下降 [Hassibi and Stork, 1992]。为获得更准确的 Hessian 近似,我们在第4.2节放宽此假设。
4.2 跨行独立性
在线性层中,输出元素由权重矩阵的行与输入列的内积独立生成。我们假设只有权重矩阵的行之间相互独立。因此,每一行具有自己的行-wise输出自适应 Hessian,独立计算。于是, H ˉ O A C \bar{H}_{\mathrm{OAC}} HˉOAC 被近似为块对角矩阵,其中第 j j j 个块 H ˉ O A C j \bar{H}_{\mathrm{OAC}j} HˉOACj 对应 W j , : W_{j,:} Wj,: 的 Hessian,如图2(2)所示。
权重矩阵的行被假设独立,列则通过迭代校准 [Hassibi and Stork, 1992; Frantar and Alistarh, 2022; Frantar et al., 2023; Dettmers et al., 2024],因此最优更新通过解决下式获得:
min δ W ε O A C ≈ min δ W δ W ⊤ H ˉ O A C δ W = min δ W ∑ j = 1 d row δ W j , : H ˉ O A C j δ W j , : ⊤ , \min_{\delta W} \varepsilon_{\mathrm{OAC}} \approx \min_{\delta W} \delta W^\top \bar{H}_{\mathrm{OAC}} \delta W = \min_{\delta W} \sum_{j=1}^{d_{\text{row}}} \delta W_{j,:} \bar{H}_{\mathrm{OAC} j} \delta W_{j,:}^\top, δWminεOAC≈δWminδW⊤HˉOACδW=δWminj=1∑drowδWj,:HˉOACjδWj,:⊤,
约束条件为:
δ W : , q = W ^ : , q − W : , q , \delta W_{:, q} = \hat{W}_{:, q} - W_{:, q}, δW:,q=W^:,q−W:,q,
此处仅需行-wise Hessian H ˉ O A C j \bar{H}_{\mathrm{OAC} j} HˉOACj,内存需求从 O ( d row 2 d col 2 ) O(d_{\text{row}}^2 d_{\text{col}}^2) O(drow2dcol2) 降至 O ( d row d col 2 ) O(d_{\text{row}} d_{\text{col}}^2) O(drowdcol2)。尽管如此, O ( d row d col 2 ) O(d_{\text{row}} d_{\text{col}}^2) O(drowdcol2) 相较于 PTQ 基线中使用的输出无关 ℓ 2 \ell_2 ℓ2 Hessian O ( d col 2 ) O(d_{\text{col}}^2) O(dcol2) 仍然较大 [Frantar et al., 2023]。因此,我们在第4.3节通过聚合行-wise Hessian 进一步降低内存需求。
4.3 行-wise Hessian 聚合
计算式 (7) 中的行-wise Hessian H ˉ O A C j \bar{H}_{\mathrm{OAC} j} HˉOACj 内存占用大。我们提议用整体 Hessian
H O A C = ∑ j = 1 d row H ˉ O A C j H_{\mathrm{OAC}} = \sum_{j=1}^{d_{\text{row}}} \bar{H}_{\mathrm{OAC} j} HOAC=j=1∑drowHˉOACj
替代,缓解内存复杂度。简化后的优化问题转为:
min δ W ε O A C = E ( x , y ) [ L C E ( x , y , θ ) − L C E ( x , y , θ ^ ) ] ≈ tr ( δ W H O A C δ W ⊤ ) , \min_{\delta W} \varepsilon_{\mathrm{OAC}} = \mathbb{E}_{(x,y)} \left[ L_{\mathrm{CE}}(x,y,\theta) - L_{\mathrm{CE}}(x,y,\hat{\theta}) \right] \approx \operatorname{tr}(\delta W H_{\mathrm{OAC}} \delta W^\top), δWminεOAC=E(x,y)[LCE(x,y,θ)−LCE(x,y,θ^)]≈tr(δWHOACδW⊤),
约束条件为:
δ W : , q = W ^ : , q − W : , q . \delta W_{:, q} = \hat{W}_{:, q} - W_{:, q}. δW:,q=W^:,q−W:,q.
注意,由于所有 H ˉ O A C j \bar{H}_{\mathrm{OAC} j} HˉOACj 都是正定矩阵, tr ( δ W H O A C δ W ⊤ ) \operatorname{tr}(\delta W H_{\mathrm{OAC}} \delta W^\top) tr(δWHOACδW⊤) 是
∑ j = 1 d row δ W j , : H ˉ O A C j δ W j , : ⊤ \sum_{j=1}^{d_{\text{row}}} \delta W_{j,:} \bar{H}_{\mathrm{OAC} j} \delta W_{j,:}^\top j=1∑drowδWj,:HˉOACjδWj,:⊤
的上界,因此式 (8) 是式 (7) 的良好近似,实验证明该近似有效。
4.4 输出自适应 Hessian 的近似
为进一步说明我们提出的输出自适应方法,本节先计算二项逻辑回归分类器的输出自适应 Hessian,随后推广至 LLM 的线性层。
4.4.1 二项逻辑回归分类器的 H ˉ O A C \bar{H}_{\mathrm{OAC}} HˉOAC
设权重 w ∈ R d w \in \mathbb{R}^d w∈Rd,输入 x i ∈ R d x_i \in \mathbb{R}^d xi∈Rd,标签 y i ∈ { 0 , 1 } y_i \in \{0,1\} yi∈{0,1}。模型概率为:
P w ( y i = 1 ∣ x i ) = π w ( x i ) = e w ⊤ x i 1 + e w ⊤ x i . P_w(y_i=1 | x_i) = \pi_w(x_i) = \frac{e^{w^\top x_i}}{1 + e^{w^\top x_i}}. Pw(yi=1∣xi)=πw(xi)=1+ew⊤xiew⊤xi.
单样本的梯度和 Hessian 分别为:
g [ i ] : = ∂ L C E ( w ; x i , y i ) ∂ w = x i ( π w ( x i ) − y i ) , g^{[i]} := \frac{\partial L_{\mathrm{CE}}(w; x_i, y_i)}{\partial w} = x_i \left( \pi_w(x_i) - y_i \right), g[i]:=∂w∂LCE(w;xi,yi)=xi(πw(xi)−yi),
∂ 2 L C E ( w ; x i ) ∂ w ∂ w ⊤ = x i π w ( x i ) ( 1 − π w ( x i ) ) x i ⊤ . \frac{\partial^2 L_{\mathrm{CE}}(w; x_i)}{\partial w \partial w^\top} = x_i \pi_w(x_i) \left(1 - \pi_w(x_i) \right) x_i^\top. ∂w∂w⊤∂2LCE(w;xi)=xiπw(xi)(1−πw(xi))xi⊤.
根据 Fisher 信息恒等式, N N N 个样本的期望 Hessian 近似为:
H ˉ O A C = E ( x i , y i ) [ ∂ 2 L C E ( w ; x i ) ∂ w ∂ w ⊤ ] = E ( x i , y i ) [ ∂ L C E ( w ; x i , y i ) ∂ w ∂ L C E ( w ; x i , y i ) ⊤ ∂ w ] = E x i [ x i E y i ∣ x i [ ( π w ( x i ) − y i ) 2 ] x i ⊤ ] = E x i [ x i π w ( x i ) ( 1 − π w ( x i ) ) x i ⊤ ] ≈ 1 N ∑ i = 1 N g [ i ] g [ i ] ⊤ . \bar{H}_{\mathrm{OAC}} = \mathbb{E}_{(x_i,y_i)} \left[ \frac{\partial^2 L_{\mathrm{CE}}(w; x_i)}{\partial w \partial w^\top} \right] = \mathbb{E}_{(x_i,y_i)} \left[ \frac{\partial L_{\mathrm{CE}}(w; x_i, y_i)}{\partial w} \frac{\partial L_{\mathrm{CE}}(w; x_i, y_i)^\top}{\partial w} \right] = \mathbb{E}_{x_i} \left[ x_i \mathbb{E}_{y_i|x_i} \left[ (\pi_w(x_i) - y_i)^2 \right] x_i^\top \right] = \mathbb{E}_{x_i} \left[ x_i \pi_w(x_i) (1 - \pi_w(x_i)) x_i^\top \right] \approx \frac{1}{N} \sum_{i=1}^N g^{[i]} g^{[i]\top}. HˉOAC=E(xi,yi)[∂w∂w⊤∂2LCE(w;xi)]=E(xi,yi)[∂w∂LCE(w;xi,yi)∂w∂LCE(w;xi,yi)⊤]=Exi[xiEyi∣xi[(πw(xi)−yi)2]xi⊤]=Exi[xiπw(xi)(1−πw(xi))xi⊤]≈N1i=1∑Ng[i]g[i]⊤.
如上式所示,近似二阶导数时引入了标签 y i y_i yi,因此称本方法为输出自适应。
4.4.2 LLM 线性层的 H ˉ O A C \bar{H}_{\mathrm{OAC}} HˉOAC 泛化
基于二项逻辑回归的计算,我们推广至 LLM 中第 l l l 层的线性层权重矩阵 W ∈ R d row × d col W \in \mathbb{R}^{d_{\text{row}} \times d_{\text{col}}} W∈Rdrow×dcol,由 d row d_{\text{row}} drow 行组成。根据跨层和跨行独立假设, W W W 的 Hessian 与其他层独立,且不同行之间独立。用下式近似第 j j j 行的输出自适应 Hessian,其中 G [ i ] ∈ R d row × d col G[i] \in \mathbb{R}^{d_{\text{row}} \times d_{\text{col}}} G[i]∈Rdrow×dcol 是第 i i i 个校准样本的梯度矩阵, G j , : [ i ] G_{j,:}[i] Gj,:[i] 是第 j j j 行:
H ˉ O A C j ≈ 1 N ∑ i = 1 N G j , : [ i ] ⊤ G j , : [ i ] . \bar{H}_{\mathrm{OAC} j} \approx \frac{1}{N} \sum_{i=1}^N G_{j,:}[i]^\top G_{j,:}[i]. HˉOACj≈N1i=1∑NGj,:[i]⊤Gj,:[i].
所有行的 Hessian 聚合为:
H O A C = ∑ j = 1 d row H ˉ O A C j ≈ 1 N ∑ i = 1 N ∑ j = 1 d row G j , : [ i ] ⊤ G j , : [ i ] = 1 N ∑ i = 1 N G [ i ] ⊤ G [ i ] . H_{\mathrm{OAC}} = \sum_{j=1}^{d_{\text{row}}} \bar{H}_{\mathrm{OAC} j} \approx \frac{1}{N} \sum_{i=1}^N \sum_{j=1}^{d_{\text{row}}} G_{j,:}[i]^\top G_{j,:}[i] = \frac{1}{N} \sum_{i=1}^N G[i]^\top G[i]. HOAC=j=1∑drowHˉOACj≈N1i=1∑Nj=1∑drowGj,:[i]⊤Gj,:[i]=N1i=1∑NG[i]⊤G[i].
5 OAC 流程
根据式 (14),我们将所有行的输出自适应 Hessian 聚合表示为:
∑ j = 1 d row H ˉ O A C j ≈ 1 N ∑ i = 1 N ∑ j = 1 d row G j , : [ i ] ⊤ G j , : [ i ] = 1 N ∑ i = 1 N G [ i ] ⊤ G [ i ] . \sum_{j=1}^{d_{\text{row}}} \bar{H}_{\mathrm{OAC} j} \approx \frac{1}{N} \sum_{i=1}^N \sum_{j=1}^{d_{\text{row}}} G_{j,:}[i]^\top G_{j,:}[i] = \frac{1}{N} \sum_{i=1}^N G[i]^\top G[i]. j=1∑drowHˉOACj≈N1i=1∑Nj=1∑drowGj,:[i]⊤Gj,:[i]=N1i=1∑NG[i]⊤G[i].
我们提出的方法 OAC 包含两个主要阶段,用于对大型语言模型权重进行后训练量化(PTQ):
- 计算每个权重矩阵的输出自适应 Hessian。
- 使用对应的输出自适应 Hessian 对每个权重矩阵进行校准。
为建立完整的 PTQ 流程,我们将基于 Hessian 的校准技术与所提方法相结合。OAC 流程详见算法1。
HOAC 的计算
OAC 利用式 (14) 来近似每个权重矩阵的 Hessian,因此需要计算所有校准样本对应的权重矩阵梯度。我们提出在冻结其他 Transformer 块的情况下,同时计算每个 Transformer 块内线性层的梯度。这样避免了为所有线性层重复执行代价高昂的输出生成和反向传播。
具体步骤如算法1所示:迭代选择 Transformer 块,针对每个块,使用校准样本生成模型输出并计算交叉熵损失,随后通过反向传播计算该块内线性层权重的梯度。然后,基于式 (14) 独立近似这些线性层的输出自适应 Hessian,用于后续 PTQ 阶段。
基于 HOAC 的校准
为实现对 LLM 精准的2位量化,我们将 SpQR 方法 [Dettmers et al., 2024] 中的以下步骤集成到本方法中:
- 利用式 (4)(其中 H ˉ \bar{H} Hˉ 替换为我们提出的输出自适应 Hessian H O A C H_{\mathrm{OAC}} HOAC)检测并隔离显著权重。
- 进行列级更新以减少交叉熵损失的失真。
- 通过在式 (3) 中替换为 H O A C H_{\mathrm{OAC}} HOAC 计算更新项。
- 量化缩放因子和零点以降低平均比特数,从而支持更小的分组量化,并保留更多异常值以浮点32(FP32)格式存储。
图3展示了针对 LLM 2位 PTQ 实现的完整 OAC 步骤。
此外,为验证我们提出的输出自适应 Hessian 计算在二值量化(binary PTQ)中的有效性,我们将 H O A C H_{\mathrm{OAC}} HOAC 集成进 BiLLM 校准过程 [Huang et al., 2024,算法1]。第6节的实验结果表明,我们的方法在 LLM PTQ 任务中优于 BiLLM 和 SpQR。
好的,以下是你提供的第6节“实验与结果”及第7节“结论”的中文翻译,公式和变量均已适当处理:
6 实验与结果
本节介绍了主要的实验结果,并简要总结了实验设置。更多关于实验发现、超参数和设置的细节请参见附录。
6.1 实验设置
我们考察了多种不同规模的语言模型,包括 OPT [Zhang et al., 2022]、LLaMa [Touvron et al., 2023a] 以及 LLaMa 2 [Touvron et al., 2023b] 系列。校准集由128条序列组成,每条序列2048个token。为评估量化模型在语言建模任务上的表现,我们报告了它们在 C4 [Raffel et al., 2020] 和 WikiText2 [Merity et al., 2017] 语料上的困惑度(perplexity)。此外,我们还使用语言模型评估套件(Language Model Evaluation Harness,LMEH)[Gao et al., 2023] 来评测量化模型的推理能力。具体指标包括零样本(zero-shot)准确率,涵盖 WinoGrande [Sakaguchi et al., 2021]、PiQA [Tata and Patel, 2003]、HellaSwag [Zellers et al., 2019]、ARC-easy 及 ARC-challenge [Clark et al., 2018],以及五样本(five-shot)准确率在 GSM8K [Cobbe et al., 2021] 数据集上。更多数据集详情见附录F。
在实验结果中,我们将所提方法与现有最新的针对大型语言模型设计的后训练量化(PTQ)方法进行对比,包括 Round to Nearest (RTN) [Dettmers et al., 2022]、OPTQ [Frantar et al., 2023]、QuIP [Chee et al., 2023] 和 SpQR [Dettmers et al., 2024],均在2位和3位量化下进行比较。此外,我们还包括作为高效量化感知训练(QAT)方法的 OmniQuant [Shao et al., 2024]。3位量化实验中也加入了 SqueezeLLM [Kim et al., 2024]。另外,BiLLM [Huang et al., 2024] 被选为最新的二值(binary)PTQ基线。关于量化配置等详细实验设置,请参见附录G。
6.2 实验结果
LLM 的量化难度随着以下两个因素增加而提升,且精度下降更加明显:
- 模型规模减小;
- 平均位宽降低以适应更低精度权重、减少异常值缓解和分组量化粒度加大。
针对参数规模从 1.3 亿到 300 亿的小至大型 LLM,我们进行了2位 PTQ 实验。表1比较了2位量化的 LLaMa 和 OPT 模型在语言建模及推理任务上的表现。实验结果显示,OAC 方法显著优于现有最先进基线。
为了进一步测试 OAC 在极限低精度量化中的表现,我们将其应用于 LLaMa 系列的二值化。表2展示了 OAC 与 BiLLM 的性能对比,结果表明 OAC 显著优于 BiLLM。
实验结果强调了输出自适应校准在低精度量化场景中的重要性。我们提出的 OAC 方法在多个复杂场景下,相较于其他方法,尤其是在平均位宽较低或模型规模较小时,取得了更优的准确率。
7 结论
我们提出了一种新颖的输出自适应校准(OAC)方法,将模型输出引入大型语言模型的后训练量化(PTQ)过程中。该方法通过最小化输出交叉熵损失的量化失真,显著提升了量化模型的准确性。为降低 OAC 的计算复杂度,我们基于 Fisher 信息恒等式引入了输出自适应 Hessian 的近似计算。同时,我们详细探讨了如何利用近似 Hessian 更新权重矩阵并在 PTQ 流程中识别关键权重。
我们在多种大型语言模型及多个语言建模和推理任务上,将 OAC 与多种 PTQ 方法对比,结果表明 OAC 在低精度量化(如2位及二值量化)场景下大幅优于现有最先进方法。