CBQ: Cross-Block Quantization for Large Language Models

文章标题:CBQ:面向大型语言模型的跨块量化
作者/机构:Xin Ding (中国科学技术大学), Xiaoyu Liu (中国科学技术大学), Zhijun Tu (华为诺亚方舟实验室), Yun Zhang (香港科技大学(广州)), Wei Li (华为诺亚方舟实验室), Jie Hu (华为诺亚方舟实验室), Hanting Chen (华为诺亚方舟实验室), Yehui Tang (华为诺亚方舟实验室), Zhiwei Xiong (中国科学技术大学), Baoqun Yin (中国科学技术大学), Yunhe Wang (华为诺亚方舟实验室)

A1 主要贡献

核心问题:尽管现有的训练后量化(PTQ)方法通过处理离群值和采用层级或块级的损失优化技术取得了不错的效果,但在超低比特精度(如 W2A16, W4A4)下,它们仍然面临显著的性能下降。

研究目标与发现:为了剖析这一问题,本文对大型语言模型(LLMs)的量化误差进行了深入分析,并意外地发现,与传统的量化误差来源不同,模型参数数量的增长与量化比特数的减少共同加剧了层间和层内的依赖关系,这严重影响了量化精度。这一发现揭示了量化LLMs面临的关键挑战。

创新点与主要贡献
本文提出了一种名为 CBQ(Cross-Block Quantization)的、基于跨块重构的 LLM 训练后量化方法。
1. 量化误差来源分析:全面分析了LLMs在低比特量化场景下的误差来源,并从理论上证明了层内和层间依赖关系对模型量化效果的显著影响。
2. CBQ 框架:提出了一种统一的LLM PTQ方法——CBQ,其核心是跨块重构策略。该策略引入了跨块依赖(Cross-Block Dependency, CBD)机制,以在量化过程中保持模型的内部依赖性。同时,利用 LoRA-Rounding 技术处理层内依赖关系,优化自适应补偿矩阵。
3. 粗到细预处理策略(CFP):设计了一种新颖的粗到细预处理策略(Coarse-to-Fine Pre-processing, CFP),该策略能同时检测和处理权重和激活值中的离群值,有效防止对正常激活通道和权重的破坏。
4. 优越的实验性能:大量实验证明了该方法在超低比特量化设置(如 W4A4、W4A8 和 W2A16)下的有效性。在多种模型和基准数据集上,CBQ 的性能均优于当前最先进的方法。值得注意的是,对一个 4-bit LLAMA1-65B 模型进行仅权重量化仅需 4.3 小时,实现了性能与效率之间的良好权衡。

A3 背景知识与关键发现

为了分析在量化权重或激活值时大型模型中量化误差的来源,我们假设矩阵 $M$ 代表当前量化目标的一组权重或激活值,$L$ 表示模型在该矩阵下的量化损失。设 $\epsilon$ 为量化引入的微小扰动,$L(M)$ 代表我们旨在最小化的任务损失。然后,我们可以在泰勒展开式中推导出以下方程:

$$\mathbb{E}[\mathcal{L}(M+\varepsilon)-\mathcal{L}(M)] \approx \mathbb{E}[\varepsilon^{T} \cdot \frac{\partial \mathcal{L}}{\partial M}+\frac{1}{2} \varepsilon^{T} \frac{\partial^{2} \mathcal{L}}{\partial M^{2}} \varepsilon+O(\|\varepsilon\|^{3})] \approx \varepsilon^{T} \cdot g^{(M)}+\frac{1}{2} \varepsilon^{T} \cdot \mathbf{H}^{(M)}$$

正如先前工作【18, Gptq: Accurate post-training quantization for generative pre-trained transformers, 2022, arXiv】中所讨论的,量化引入的误差 $\epsilon$ 足够小,可以忽略泰勒展开中的高阶项。因此,我们分析一阶和二阶项 $g(M)$ 和 $H(M)$,它们可以定义如下。

$$g^{(M)}=\mathbb{E}[\nabla_M \mathcal{L}(M)]=\sum_{i}^K \frac{\partial \mathcal{L}}{\partial M_i}$$ $$\mathbf{H}^{(M)}=\mathbb{E}[\nabla_{M}^{2}\mathcal{L}(M)]=\sum_{i}^{K}\sum_{j}^{K}\frac{\partial^{2}\mathcal{L}}{\partial M_{i}\partial M_{j}}$$
图 1:(a) LLAMA-7B 单层内权重的 Hessian 矩阵绝对值可视化,(b) LLAMA-7B 32 层的损失相对于尺度的 Hessian 矩阵可视化,以及 (c) LLAMA-7B 中前两个 transformer 块的平均尺度与相应损失之间的关系。
图 1:(a) LLAMA-7B 单层内权重的 Hessian 矩阵绝对值可视化,(b) LLAMA-7B 32 层的损失相对于尺度的 Hessian 矩阵可视化,以及 (c) LLAMA-7B 中前两个 transformer 块的平均尺度与相应损失之间的关系。

令 $K$ 表示 LLM 中参与量化的元素数量。使用公式 2 和 3,可以计算任意两个元素 $i$ 和 $j$ 对最终量化损失的影响。从公式 1、2、3 可以观察到,当 quantization perturbation $\epsilon$ 很小时,$||\epsilon||^2$ 也很小,这使得我们可以忽略公式 3 的影响。在这种情况下,量化误差主要与当前的量化目标 $M$ 相关,类似于高比特量化。然而,在进行低比特量化时,$||\epsilon||^2$ 增加,因此必须考虑公式 3 所描述的影响。这表明当 $i \neq j$ 时,引入了不同 $M$ 之间的关系。这种关系体现在两个方面:在量化单个层时,它反映了参数间的层内依赖关系;在量化整个模型时,还必须考虑层间依赖关系。此外,鉴于 Hessian 矩阵 $H$ 的复杂度与 $O(n^2)$ 成正比,其中 $n$ 代表参数数量,模型规模的增长(无论是参数还是层数)都会导致层内和层间依赖关系的显著加剧。

为了更好地说明层内和层间依赖关系,我们使用 LLAMA-7B 对公式 3 在单个层和整个模型上进行了可视化。此外,我们还展示了相邻块之间依赖关系的可视化,如图 1 所示。

通过分析图 1,我们观察到在低比特量化期间,非对角线元素的值显著增加。这种增加表明层间和层内依赖关系都在加强,且距离较近的元素表现出更强的相关性。此外,相邻层之间尺度的比较让我们更清楚地理解了在低比特场景下,层间依赖关系对最终量化结果的巨大影响。

因此,同时考虑层内和层间依赖关系,我们提出了在低比特设置下 LLMs 的量化框架,可用以下方程表示:

$$\arg \min_{h \subseteq \mathbf{H}_{+}} \sum_{k \in h} \mathbb{E}(T_{k}(W^{k}, X^{k}), QT_{k}(Q(W^{k}) + \Delta_{W}^{k}, Q(X^{k}))),$$

其中 $T$ 和 $QT$ 分别代表浮点和量化的 transformer 块。$Q(\cdot)$ 表示量化过程。$E(\cdot)$ 表示评估量化块和全精度块输出之间重构误差的度量。我们联合优化所有具有层间依赖关系的 transformer 块,同时使用 $\Delta_W^k | k \subseteq H_+$ 来补偿层内关系。

A2 方法细节

本节介绍我们为 LLM 量身定制的跨块量化框架。如图 2 所示,CBQ 首先处理权重和激活值的离群值,然后以跨块的方式联合学习权重和激活值的步长以及权重补偿矩阵。CBQ 基于全精度模型对应部分的监督信息来重构每个滑动窗口中最后一个块的输出特征。

图 2:提出的 CBQ 工作流程。CBQ 首先利用粗到细的预处理来处理权重和激活值的离群值,然后在相应全精度模型的监督下,采用跨块优化策略来学习量化步长和权重自适应舍入矩阵。这种顺序的块级方法通过跨块依赖建模来最小化累积误差的传播。
图 2:提出的 CBQ 工作流程。CBQ 首先利用粗到细的预处理来处理权重和激活值的离群值,然后在相应全精度模型的监督下,采用跨块优化策略来学习量化步长和权重自适应舍入矩阵。这种顺序的块级方法通过跨块依赖建模来最小化累积误差的传播。

3.1 跨块重构

引入跨块依赖(CBD)方案。为了保持层间依赖性,有必要将具有显著依赖关系的层一起进行优化。如图 1 所示,最强的依赖关系通常出现在相邻层之间。因此,我们引入了一种使用滑动窗口方法的跨块依赖(CBD)方案。该方案能够同时优化窗口内的多个块。此外,两个相邻的滑动窗口有重叠的块,确保了窗口之间的块也是相互关联的。CBD方案增强了块之间的连接和协作,使它们能够共同为量化过程做出贡献。这种整体优化策略带来了更好的整体性能,并解决了块级重构在捕捉跨块依赖性方面的局限性。我们将使用CBD方案的优化表述为:

$$\underset{S_{X}^{i,k}, S_{W}^{i,k}, \Delta_{W}^{i,k}}{\arg \min} \mathbb{E}(T_{i,k}(W^{i,k}, X^{i,k}), T_{i,k}(Q(W^{i,k}), Q(X^{i,k}))),$$

其中 $1 \le i \le k \le K$,$T_{i,k}$ 表示一个滑动窗口内从块 $i$ 到块 $k$ 的所有块,符号 $S_{X}^{i,k}$、$S_{W}^{i,k}$ 和 $\Delta_{W}^{i,k}$ 也同样适用。优化目标 $L_{rec}$ 如下:

$$\mathcal{L}_{rec} = \mathbb{E}(T_{i,k}(W^{i,k}, X^{i,k}), T_{i,k}(Q(W^{i,k}), Q(X^{i,k})))$$

结合 L2 和 KLD 损失作为距离度量。对于距离度量,我们结合了 L2 损失和 Kullback-Leibler 散度(KLD)损失【27, On information and sufficiency, 1951, The annals of mathematical statistics】来衡量重构误差。KLD 计算经过 softmax 函数处理后的输出特征之间的似然分布。它倾向于抑制特征空间中的离群值,并增强优化过程的鲁棒性。通过结合这两个项,我们的方法既捕捉了空间距离又捕捉了分布差异,从而实现了一个更全面、更鲁棒的优化过程。距离度量公式如下:

$$\mathbb{E}(h_{1},h_{2})=\|h_{1}-h_{2}\|_{2}+D_{KL}(\sigma(h_{1}),\sigma(h_{2})),$$

其中 $h_1$ 和 $h_2$ 分别是全精度块和量化块输出的隐藏状态。$\sigma$ 是 softmax 函数。$||\cdot||_2$ 表示 L2 距离,$D_{KL}(\cdot)$ 表示 KLD 距离。我们在附录 B 的表 5 中提供了关于损失函数的消融研究。

3.2 用于权重量化的 LORA-ROUNDING

AdaRound 的思想和局限性。AdaRound 【42, Up or down? adaptive rounding for post-training quantization, 2020, International Conference on Machine Learning】引入了学习一个更好的权重舍入矩阵用于训练后量化的思想,该矩阵能适应数据和任务损失。如公式 8 所示,我们可以通过一个可学习矩阵 $V \in R^{d \times k}$ 和一个修正的 sigmoid 函数得到权重舍入矩阵 $\Delta W \in R^{d \times k}$:

$$\Delta_W = \text{Clip}(\text{Sigmoid}(V)(\zeta - \gamma) + \gamma, 0, 1),$$

其中 $\zeta$ 和 $\gamma$ 是拉伸参数,固定为 1.1 和 -0.1,而 Clip(·) 将输入限制在给定范围内。权重舍入矩阵 $\Delta W$ 的大小与原始权重相同。

舍入矩阵作为层内依赖的补偿。当 transformer 块位于 CBD 滑动窗口机制的重叠部分时,舍入矩阵可以作为层内依赖的有效表示。我们将其用作补偿矩阵,并与权重和激活值的量化步长联合优化,可表示如下:

$$\arg \min _{S_{X}^{i, k}, S_{W}^{i, k}, \Delta_{W}^{j, k}} \mathbb{E}\left(T_{i, k}\left(W^{i, k}, X^{i, k}\right), T_{i, k}\left(Q\left(W^{i, k}\right)+\Delta_{W}^{j, k}, Q\left(X^{i, k}\right)\right)\right)$$

$\text{s.t. } j = k + 1 - overlap$

引入 LoRA 进行低秩适应性学习。然而,如实验表 3b 所示,我们发现具有数十亿参数的 LLMs 会导致一个异常大的 $\Delta_{j,k}^W$,这可能导致巨大的计算开销并严重影响训练的收敛。Shao 等人【47, Omniquant: Omnidirectionally calibrated quantization for large language models, 2023, arXiv】也提到,由于巨大的解空间,AdaRound 无法应用于具有数十亿参数的模型,这与我们的实验发现一致。因此,我们对补偿矩阵采用低秩自适应学习,将 $V$ 分解为更小的低秩矩阵,并且只在训练后量化中优化它们,分解定义为:

$$\Delta_W = A_1 \times A_2, A_1 \in \mathbb{R}^{d \times r}, A_2 \in \mathbb{R}^{r \times k},$$

其中秩 $r \ll \min(d, k)$,我们对 $A_1$ 使用随机高斯初始化,对 $A_2$ 使用零初始化,因此 $\Delta W$ 在训练后量化开始时被设置为零。在训练期间,通过一个正则化损失鼓励 $\Delta W$ 的每个元素趋向于 0 或 1:

$$\mathcal{L}_{com}=\sum_{i,j}1-|2\Delta_{W}(i,j)-1|^{\beta},$$

其中 $\beta$ 是一个退火因子。遵循 Nagel 等人【42, Up or down? adaptive rounding for post-training quantization, 2020, International Conference on Machine Learning】的方法,$\beta$ 在优化初期设置得较高,后期设置得较低,以鼓励其收敛到 0 或 1。我们还在优化的后期阶段进行 $\Delta W = \lfloor \Delta W \rceil$ 操作,以强制每个元素精确地变为 {0, 1}。

LoRA-Rounding 的优势。与用于 LLMs 的原生 AdaRound 相比,所提出的 LoRA-Rounding 将可学习参数的数量从 $d \times k$ 减少到 $(d+k) \times r$,并改变了训练策略,显著加快了优化过程。我们将在下一节 5.3 中进行消融实验。

3.3 总体损失

总而言之,通过利用 CBD 和权重补偿矩阵的低秩分解,我们以一定间隔将窗口滑动到最后一个块,并更新窗口内所有的量化参数 $S_W$, $S_X$, $A_1$, $A_2$,确保了模型的层内和层间关系的保留,从而实现最佳性能。在一个滑动窗口内优化第 $i$ 个块到第 $k$ 个块的总损失公式为:

$$\mathcal{L}_{total} = \mathcal{L}_{rec} + \gamma\mathcal{L}_{com},$$

其中 $\gamma$ 是平衡重构误差和补偿误差的超参数。

3.4 粗到细预处理

离群值处理的重要性与现有方法的不足。离群值处理在量化 LLMs 中至关重要。附录 F 中的图 3 展示了权重和激活值中普遍存在的离群值,这对量化过程构成了重大挑战。尽管现有许多研究基于离群值问题,但这些研究通常只单独关注权重或激活值中的离群值,例如在【9, Quip: 2-bit quantization of large language models with guarantees, 2024, Advances in Neural Information Processing Systems】、【54, Outlier suppression: Pushing the limit of low-bit transformer language models, 2022, Advances in Neural Information Processing Systems】、【58, Smoothquant: Accurate and efficient post-training quantization for large language models, 2022】中。然而,没有一种精确的策略可以同时检测和处理权重和激活值中的离群值。这种单一模式的方法可能会因不正确的离群值检测而损害正常的激活通道和权重。

提出基于统计原理的 CFP 策略。为了解决这个问题,我们放弃了先前对权重和激活值呈正态分布的假设【57, Zeroquant-fp: A leap forward in llms post-training w4a8 quantization using floating-point formats, 2023, arXiv】,并基于统计学原理【39, Visual presentation of data by means of box plots, 2005】提出了一种粗到细的预处理策略,以解耦激活值和权重中的离群值处理。相关的理论细节可以在附录 F 中找到。

CFP 算法的两个阶段。离群值检测的完整算法在附录 K 的算法 1 中进行了说明,分为两个阶段:
1. 粗粒度检测:在第一阶段,我们通过计算数值分布(激活值或权重)中的下四分位数(Q1)和上四分位数(Q3)以及四分位距(IQR)【39, Visual presentation of data by means of box plots, 2005】来进行粗粒度检测。基于这些计算,我们得到一个粗略的离群值集合 $O = \{x | x > T, x \in X\}$,其中 $T = Q3 + \lambda_1 IQR$,$\lambda_1$ 设置为 1.5。这个阶段大大减少了离群值检测的搜索空间。
2. 细粒度检测:在第二阶段,我们通过搜索一个阈值来将粗略离群值集合分割成一个离群值子集 $O_{outlier}$ 和一个保留子集 $O_{reserved}$,从而进行细粒度检测。目标是最小化集合内方差 $M_{intra} = Var(O_{reserved})$,同时最大化两个子集之间的距离 $M_{inter} = (Min(O_{outlier}) - Max(O_{reserved}))^2$。为了平衡这些目标,我们定义了一个度量 $M = M_{inter} - \lambda_2 M_{intra}$,其中 $\lambda_2 = 1.0$。通过最小化这个度量,我们可以有效地识别离群值并将其与其余数据区分开来。

差异化的离群值处理策略。去除权重中的离群值对性能影响最小,而激活值中的离群值,特别是特定通道中的离群值,如果直接去除,会极大地影响性能。因此,我们的方法包括截断权重离群值,并根据检测到的权重和激活值中的离群值对激活值中的离群值进行缩放。附录 F 中的图 3 提供了权重离群值在离群值组内被截断的视觉证据。

第 $i$ 个通道中激活张量(表示为 $X_i$)的缩放因子 $s_i$ 由截断后的离群值集合 $O^*$ 的最大绝对值决定:

$$s_i=\sqrt{\text{Max}(|X_i|)/\text{Max}(O^*)}.$$

然后,这个缩放因子被用来更新权重和激活值,遵循先前工作【55, Outlier suppression+: Accurate quantization of large language models by equivalent and optimal shifting and scaling, 2023, arXiv】的方法,以抵消剩余离群值带来的不稳定波动。

A7 补充细节

4.1 训练后量化 (Post-training quantization)

PTQ 的定义与优势。训练后量化(PTQ)算法【43, A white paper on neural network quantization, 2021, arXiv】、【56, Easyquant: Post-training quantization via scale optimization, 2020, arXiv】、【57, Zeroquant-fp: A leap forward in llms post-training w4a8 quantization using floating-point formats, 2023, arXiv】、【62, Lq-nets: Learned quantization for highly accurate and compact deep neural networks, 2018, Proceedings of the European conference on computer vision (ECCV)】用少量的未标记校准数据和计算开销,将预训练的全精度网络转换为定点网络,从而能够在各种设备上快速部署。

PTQ 在视觉模型中的应用与局限性。近期的 PTQ 方法已在视觉模型中得到广泛探索【38, Post-training quantization for vision transformer, 2021, Advances in Neural Information Processing Systems】、【25, Accurate post training quantization with small calibration sets, 2021, International Conference on Machine Learning】、【16, Optimal brain compression: A framework for accurate post-training quantization and pruning, 2022】、【8, Zeroq: A novel zero shot quantization framework, 2020, 2020 IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)】、【29, Q-vit: Accurate and fully quantized low-bit vision transformer, 2022, Advances in neural information processing systems】。一些技术如 AdaQuant【24, Improving post training neural quantization: Layer-wise calibration and integer programming, 2020, arXiv】、AdaRound【42, Up or down? adaptive rounding for post-training quantization, 2020, International Conference on Machine Learning】和 BRECQ【31, Brecq: Pushing the limit of post-training quantization by block reconstruction, 2021, arXiv】通过最小化浮点和量化模型输出之间的距离来优化量化参数。虽然 BRECQ 结合了 Fisher 信息并联合优化每个残差块内的层,但由于未能捕捉相邻残差块之间的交互作用,其性能仍是次优的。所提出的 CBQ 通过考虑相邻块之间的依赖关系,提高了量化精度。

4.2 大型语言模型的量化 (Quantization for large language models)

LLM 的挑战与 PTQ 的必要性。现有的大型语言模型,如 BLOOM【28, The bigscience roots corpus: A 1.6tb composite multilingual dataset, 2022, Le Centre pour la Communication Scientifique Directe - HAL - Diderot】、OPT【64, Opt: Open pre-trained transformer language models, 2022, arXiv】和 LLAMA【48, Llama: Open and efficient foundation language models】、【49, Llama 2: Open foundation and fine-tuned chat models, 2023, arXiv】,包含数百亿参数,在推理过程中需要巨大的内存占用和计算需求【2, Towards end-to-end 4-bit inference on generative large language models, 2023, arXiv】、【52, Kernel fusion: An effective method for better power efficiency on multithreaded gpu, 2010, 2010 IEEE/ACM Int’l Conference on Green Computing and Communications & Int’l Conference on Cyber, Physical and Social Computing】、【5, Token merging for fast stable diffusion, 2023, Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition】、【6, Language models are few-shot learners, 2020, Advances in neural information processing systems】、【26, Quantization and training of neural networks for efficient integer-arithmetic-only inference, 2018, Proceedings of the IEEE conference on computer vision and pattern recognition】。近期有工作提出使用 PTQ 方法来压缩 LLMs,这些方法不需要完整的训练过程和对完整训练数据集的访问。

现有 LLM 量化方法的分类与不足
* 混合精度方法:LLM.int8()【14, Llm.int8(): 8-bit matrix multiplication for transformers at scale】、ZeroQuant【59, Zeroquant: Efficient and affordable post-training quantization for large-scale transformers, 2022, Advances in Neural Information Processing Systems】和 nuQmm【44, nuqmm: Quantized matmul for efficient inference of large-scale generative language models, 2022, arXiv】专注于使用混合精度分解方案量化参数,将离群值表示为 16 位,其他值表示为 8 位。这些方法难以在硬件上实现,因此无法真正加速 LLMs 的推理。
* W4A16 方法:其他方法如 GPTQ【18, Gptq: Accurate post-training quantization for generative pre-trained transformers, 2022, arXiv】和 AWQ【32, Awq: Activationaware weight quantization for llm compression and acceleration, 2023, arXiv】可以有效地量化 LLMs,但它们专注于 FP16 激活值和 INT4 权重,无法从现有 AI 加速器的整数矩阵乘法中受益。
* 离群值处理方法:此外,一些方法如 SmoothQuant【58, Smoothquant: Accurate and efficient post-training quantization for large language models, 2022】、Outlier Suppression【54, Outlier suppression: Pushing the limit of low-bit transformer language models, 2022, Advances in Neural Information Processing Systems】、Outlier Suppression+【55, Outlier suppression+: Accurate quantization of large language models by equivalent and optimal shifting and scaling, 2023, arXiv】和 QLLM【33, Qllm: Accurate and efficient low-bitwidth quantization for large language models, 2023, arXiv】旨在处理激活值离群值【65, Improving neural network quantization without retraining using outlier channel splitting, 2019, International conference on machine learning】,但缺乏对权重量化的优化。而且,这些方法依赖于手工设计的量化策略,这些策略是基于大量实验调整来优化的。
* 块重构方法:近期的基于块重构的 PTQ 方法 OmniQuant【47, Omniquant: Omnidirectionally calibrated quantization for large language models, 2023, arXiv】和 QLLM【33, Qllm: Accurate and efficient low-bitwidth quantization for large language models, 2023, arXiv】在低比特设置下经历了显著的精度下降。

CBQ 的优势:相比之下,CBQ 引入了更精确的离群值检测策略,并通过 CBD 和 LoRA-Rounding 机制,在保持层内和层间依赖性的同时优化了重构过程。

A4 实验环境与结果

实验环境

  • 模型:实验在不同规模的大型语言模型上进行,包括 OPT【64, Opt: Open pre-trained transformer language models, 2022, arXiv】和 LLAMA【48, Llama: Open and efficient foundation language models】家族。
  • 数据集

    • 语言生成任务 (Perplexity): C4【46, Exploring the limits of transfer learning with a unified text-to-text transformer, 2020, The Journal of Machine Learning Research】 和 WikiText2【40, Pointer sentinel mixture models, 2016, arXiv】。
    • 零样本语言任务 (Accuracy): PIQA【4, Piqa: Reasoning about physical commonsense in natural language, 2020, Proceedings of the AAAI Conference on Artificial Intelligence】、HellaSwag【12, Think you have solved question answering? try arc, the ai2 reasoning challenge, 2018, arXiv】、ARC【12, Think you have solved question answering? try arc, the ai2 reasoning challenge, 2018, arXiv】、Mutual【13, Mutual: A dataset for multi-turn dialogue reasoning, 2020, arXiv】 和 Ethics【22, Aligning ai with shared human values, 2020, arXiv】。
  • 量化设置

    • 测试了广泛的量化方案,包括仅权重量化至 W4A16 和 W2A16,以及权重和激活值联合量化至 W4A8 和 W4A4 等超低比特宽度。
    • 遵循先前研究【47, Omniquant: Omnidirectionally calibrated quantization for large language models, 2023, arXiv】、【33, Qllm: Accurate and efficient low-bitwidth quantization for large language models, 2023, arXiv】、【19, Optq: Accurate quantization for generative pre-trained transformers, 2022, The Eleventh International Conference on Learning Representations】,采用逐通道(per-channel)权重量化逐令牌(per-token)激活值量化
  • 硬件配置:所有模型均在单块 GPU上进行量化。

  • 软件与实现细节
    • 校准数据:使用从 C4 数据集中随机选取的 128 个 2048-token 片段。
    • 优化参数
      • 滑动窗口包含 2 个块,每个窗口训练 3 个 epoch。
      • LoRA-Rounding 技术的秩 $r$ 设置为 5。
      • 可学习的量化步长 ($S_X$ 和 $S_W$) 和权重舍入矩阵 ($\delta_W$) 的学习率分别为 1e-4、1e-3 和 1e-4。
      • 使用 CosineAnnealingLR 调度器管理学习率。
      • mini-batch 大小为 1。

实验结果

零样本数据集准确率评估

如表 1 所示,在包括 OPT (30B, 66B) 和 LLAMA (30B, 65B) 在内的多个零样本基准测试中,CBQ 的性能优越。

  • 性能提升:在 W4A16、W2A16 和 W4A8 量化设置下,CBQ 在几乎所有数据集上的性能都比现有量化方法高出 2% 以上,并将与全精度模型之间的准确率差距缩小到 1% 以内。
  • 超低比特能力:与当前技术不同,CBQ 能够实现 W4A4 的超低比特量化,同时保持比最先进方法更高的性能。
  • 泛化性:这些持续的性能提升验证了 CBQ 创新在不同模型和数据集上的泛化能力。

Table 1: 在多个零样本数据集上使用准确率 ↑ 指标进行评估,其中 Mutual 数据集使用 Mean Reciprocal Rank/Recall@1/Recall@2 指标进行评估。CBQ∗ 表示使用 2 位仅权重量化的实验并未完全量化模型,仅将第一个和最后一个 transformer 块的 FC2 层转换为 4 位精度。
表1

生成任务困惑度评估

如表 2 所示,在 C4 和 WikiText2 数据集上,对仅权重量化的 OPT 和 LLAMA 模型进行评估,结果展示了 CBQ 在生成任务上的性能。
* 性能提升:在 W4A16 设置下,与 GPTQ 相比,困惑度(PPL)降低了超过 1%(PPL 越低越好)。
* 低比特优势:在低比特宽度下持续的改进凸显了 CBQ 在激进压缩率下保持生成质量方面的优势。

Table 2: 在生成数据集上使用困惑度 (PPL) ↓ 指标进行量化评估,其中 ‘OmniQ’ 代表 OmniQuant。
表2

消融研究

在 LLAMA-7B 模型上,于 W4A4 设置下进行了消融实验,以分析 CBQ 各组件的贡献。

  • (a) CFP 的消融
    CFP消融表
  • 表 3:关于所提出的 CBD、CFP 和 LoRA-Rounding 的消融研究。 (b) LoRA-Rounding 的消融
    LoRA-Rounding和CBD消融表

  • 跨块依赖 (CBD): 如表 3c 所示,随着每个滑动窗口中联合处理的块数增加,性能得到提升,验证了 CBD 建模块间依赖关系的能力。此外,在相邻滑动窗口之间使用重叠块补充了跨窗口的关系表示,有助于捕捉细微的块间交互并带来额外的精度提升。

  • LoRA-Rounding: 如表 3b 所示,与传统的 ‘w/ Adarounding’ 方法相比,‘w/ Rounding’ 改变了补偿矩阵的训练策略,带来了显著的准确率提升。LoRA-Rounding 通过低秩分解减少了可学习参数的数量并调整了训练策略,不仅降低了 GPU 内存消耗,还提高了训练速度。
  • 粗到细预处理 (CFP): 如表 3a 和附录 F 的表 10 所示,CFP 在权重-激活联合量化和仅权重量化中都显示出优势。在预处理后的权重和激活值上进行的重构优化过程('CBQ-Recon.')进一步提升了性能,有效减少了现有预处理技术(如 OS, Smoothquant 等)未能充分处理的离群值。

A5 结论

本文详细分析了 LLM 在低比特量化下的误差来源,并确定了层内和层间依赖关系的关键作用。为应对这些挑战,本文提出了 CBQ,一种采用跨块重构策略和 LoRA-Rounding 补偿矩阵的新方法。该方法有效地建立了长程的层间依赖,同时捕捉了全面的层内依赖,超越了传统的逐层和逐块重构技术。此外,本文还引入了 CFP,一种旨在同时检测和管理权重与激活值中离群值的技术。实验结果表明,CBQ 在各种任务的超低比特精度上显著优于现有的 PTQ 方法,取得了实质性的改进,同时通过减少训练资源需求,提供了更高的计算效率。

A6 附录

A 概览

不同量化方法的比较。在表 4 中,我们将 CBQ 的设计组件与现有的 LLM 量化方法进行了比较。可以看出,CBQ 通过包含多个基本组件来应对与 LLM 量化相关的挑战而脱颖而出。首先,CBQ 确保权重和激活值都被量化,以提高计算效率和减少内存需求。其次,CBQ 采用基于梯度的优化方法,实现了量化过程中的高效优化。第三,CBQ 引入了跨块依赖(CBD)组件,能够建模相邻块之间的长程依赖关系。此外,CBQ 处理了权重和激活值离群值,这超出了 OS+、SmoothQuant、OmniQuant 和 QLLM 的能力。最后,CBQ 考虑了舍入误差,这是量化中的一个关键方面。总之,CBQ 通过整合一套全面的组件,协同工作以增强量化过程的精度、准确性和效率,优于现有的 LLM 量化方法。

表 4:不同 LLM 量化方法的比较。
表4

B 损失函数的消融研究

确定最优损失函数。为了确定最优的损失函数形式,我们在表 5 中评估了单独使用 L2、单独使用 KLD 以及两者结合的重构误差。消融结果表明,KLD 的性能优于 L2,而两者结合的损失函数取得了进一步的提升。这凸显了在 CBQ 优化过程中,KLD 在匹配全精度块分布方面的优势。融合两种损失函数可以同时最小化绝对误差和基于散度的误差,从而改善整体的块级重构。我们的分析验证了混合 L2 + KLD 损失函数在将块作为相互依赖的组件进行鲁棒优化方面的优势。

表 5:块级重构损失函数的消融研究。
表5

C CBQ 在 LLAMA2-7B 上的能力

验证 CBQ 的有效性。为了展示 CBQ 的有效性,我们在 LLAMA2-7B 模型上跨多个数据集对 CBQ 进行了评估,并观察到它取得了出色的结果。

表 6:在 LLAMA2-7B 上的多个零样本数据集和生成数据集上的评估。
表6

D CBD 的扩展潜力

探索 CBD 的扩展性。为了进一步研究跨块依赖(CBD)的扩展潜力,我们进行了额外的实验,以探究增加其规模是否能带来进一步的性能提升。

表 7:CBQ 在 LLAMA-7B 上于 W4A4 设置下的扩展能力。
表7

表 8:CBD 在 LLAMA2-7B 上的能力。
表8

CBD 的鲁棒性和通用性。如表 7、8 所示,我们在 W2A16 和 W4A4 实验设置中验证了所提出的跨块量化。我们在这些设置下的消融分析强调了 CBD 的鲁棒性和通用性,展示了其固有的简单性,以确保在各种量化设置中无缝部署。

E CBD 的效率

研究 CBD 的多方面性能。为了进一步研究 CBD 的各种性能,我们进行了以下实验。下表展示了在 LLAMA-7B 模型的 W2A16 量化中,训练时间、GPU 内存使用情况以及所采用的跨块依赖数量。

表 9:在 W2A16 下对跨块依赖 (CBD) 的消融研究。
表9

CBD 的设计优势。我们的 CBD 考虑了滑动窗口内两个块之间的依赖关系,这与现有仅关注单个块依赖关系的方法有所区别。这种独特的设计在产生显著性能提升的同时,会产生额外的 GPU 开销。此外,通过引入重叠窗口,CBD 增强了跨块依赖关系,而无需额外的 GPU 内存使用。

F CFP 的理论基础

CFP 的理论优势。现有的离群值检测方法通常假设数据服从正态分布,但这并不总是严格适用于现实世界的数据集。我们的方法避免了对特定数据分布的假设,为捕捉不同数据集中的离群值提供了灵活性。四分位数标准对离群值具有鲁棒性,因为它不受极端值的严重影响。

常用方法对比。我们给出两种常用的方法如下:
* 3σ (sigma) 法则:该方法假设数据服从正态分布。通常,距离均值超过两到三个标准差的数据点被认为是离群值。
* 基于百分位数的方法:该方法使用百分位数来检测离群值。

四分位数标准的客观性。我们的四分位数标准遵循现有的分析【39, Visual presentation of data by means of box plots, 2005】,包括最大值、最小值、中位数以及上、下四分位数来检测离群值。这种方法不需要对数据分布做任何假设,也不对数据施加任何限制性要求。它只是描绘了数据的真实形态,提供了一种客观识别离群值的方法。

图 3:权重和激活值的离群值预处理。红色虚线表示权重离群值的截断阈值,深蓝色线表示保留的子集。浅蓝色框描绘了经过逐通道缩放的激活值离群值。
图 3:权重和激活值的离群值预处理。红色虚线表示权重离群值的截断阈值,深蓝色线表示保留的子集。浅蓝色框描绘了经过逐通道缩放的激活值离群值。

表 10:CFP 在 LLAMA2-7B 上的能力。
表10

G 量化效率的比较

与 OmniQuant 的效率对比。我们评估了我们的仅权重量化 CBQ 方法的量化效率,并将其与代表性的基于重构的 PTQ 方法 OmniQuant 进行了比较。两种方法的 GPU 训练小时数如表 11 所示。结果表明,CBQ 的训练成本可以比 OmniQuant 更快,特别是在较大的模型上。这表明我们的 CBQ 方法在训练效率方面具有优势。

表 11:我们的 CBQ 与 OmniQuant 的训练时间(GPU 小时)比较。
表11

H LORA-ROUNDING 秩的消融研究

LoRA-Rounding 秩的影响。LoRA-Rounding 秩的消融研究结果见下表 12。可以观察到,在较低的秩(3、4 和 5)下,性能有轻微的提升。然而,当秩增加到 5 以上时,性能开始下降。考虑到 LLM 可用的训练资源有限,值得注意的是,LoRA-Rounding 中较大的秩会导致需要优化的参数数量增加。这种增加的参数复杂性构成了重大挑战,并最终导致较差的性能和结果。

表 12:LoRA-Rounding 秩的消融研究。
表12

I 对一系列 OPT 模型的量化评估

在 OPT 模型上的进一步验证。为了进一步展示所提出的 CBQ 的性能,我们对 OPT 模型进行了额外的评估,如表 13 所示。

表 13:在一系列 OPT 模型上,使用困惑度 ↓ 指标在生成数据集上的量化评估。
表13

J 在 W6A6 设置下对 LLAMA2 和 OPT 的量化评估

在 W6A6 设置下的验证。为了进一步展示所提出的 CBQ 的性能,我们在 W6A6 设置下对 Llama2 和 OPT 模型进行了额外的评估,如表 14 所示。

表 14:在 W6A6 设置下对 LLAMA2 和 OPT 的量化评估。
表14

K 粗到细预处理算法

CFP 在 W4A16 上的消融。下表展示了 CFP 在 LLAMA-7B 上于 W4A16 设置下的消融研究。

表 15:在 W4A16 上对 LLAMA-7B 的 CFP 消融研究。
表15

算法 1:粗到细预处理

输入:输入张量 X,
      平衡系数 λ1, λ2
输出:离群值 O
1  粗粒度检测;
2  Xsorted = Sort(X);
3  Q1 = X[n/4], Q3 = X[3n/4];
4  IQR = Q3 - Q1;
5  T = Q + λ1 * IQR;
6  O = {x|x > T, x ∈ Xsorted};
7  { 细粒度检测 }
8  N = Len(O), M* = INF;
9  foreach i = 0 to N do
10     Ooutlier = Oi:N;
11     Oreserved = O0:i;
12     Mintra = Var(Oreserved);
13     Minter = (Min(Ooutlier) - Max(Oreserved))^2;
14     M = Minter - λ2 * Mintra;
15     if M > M* then
16         O* = Ooutlier;
17         M* = M;
18     end
19 end