Conference: ICLR'25

Github: https://github.com/facebookresearch/SpinQuant

My Thoughts

这篇工作里的可学习、可融入权重的 Rotation ($R_1, R_2$) 以及 learned rotations ($R_1 R_2$),再加上 Hadamard rotations ($R_3, R_4$)(其中 $R_3$ 和 $R_4$ 可以通过快速哈达玛核计算)共同组成了整套旋转框架。 理解这些旋转的组合与吸收方式(merge into weights)是理解 SpinQuant 的关键所在。

就像论文中提到的:

“This opens up intriguing research avenues, such as determining if, given an activation distribution with known outlier axes and magnitudes, a closed-form solution for the optimal rotation matrix that evenly distributes magnitude across different axes can be derived…”

作者提出了未来方向:若能已知激活分布的异常方向及幅度,是否能推导出解析的最优旋转矩阵,使不同轴上的幅值均衡?并进一步验证该理论旋转是否能达到最优量化性能。这一点与本工作提出的“可学习旋转”思想一脉相承。


1. Motivation

Post-training quantization (PTQ) 技术通过对权重、激活和 KV cache 进行低比特量化,可显著降低 LLM 的内存占用、延迟和功耗,但当存在 outliers(离群值)时,量化误差往往会非常大。

SpinQuant 的核心动机是: 通过对激活或权重矩阵进行旋转(rotation),可以消除 outlier,使分布更高斯化,从而更易量化。

Figure 3 (a) 展示了在旋转前后激活的峰度(Kurtosis, $\kappa$)变化情况。 峰度 $\kappa$ 用来衡量分布的“尾部厚度”:

  • 较大的 $\kappa$ 表示存在更多离群值;
  • $\kappa \approx 3$ 表示近似高斯分布。

结果显示:在 Transformer 中,旋转前许多层的 $\kappa$ 高达 200+,说明激活中含有大量极值;而乘以随机旋转矩阵后,$\kappa$ 降至约 3,呈现更高斯的分布,有利于量化。

Figure 3 (b) 进一步验证:旋转后的激活张量量化误差显著降低。

然而,虽然随机旋转能改善量化,但并非所有随机旋转的效果相同。 Figure 4 显示:在 LLaMA-2 7B 进行 W4A4 量化的 100 次随机旋转实验中,最好和最差旋转的性能差达 13 个点;随机 Hadamard 矩阵整体优于随机旋转矩阵,但其结果仍存在最高 6 点差距。

因此,作者提出核心问题:

“Is it possible to optimize the rotation to maximize the benefit of quantization?”

SpinQuant 便是对此的正面回答——通过学习(优化)旋转矩阵以获得最优量化效果。


2. Challenge

量化中的主要挑战在于 outlier 拉伸量化范围,使有效比特减少,从而使大多数值被粗糙近似。

尽管随机旋转统计上可减轻 outlier,但不同旋转对最终性能影响巨大,差异可达十余点。因此我们需要一种可学习、可吸收、且保证数值等价的旋转策略,以稳定提升低比特量化性能。


3. Contribution

SpinQuant 的两个核心变体:

  • SpinQuant_no_had:只使用两种可吸收旋转($R_1$, $R_2$),并可直接并入权重矩阵,在推理时替换即可,无需修改网络结构。
  • SpinQuant_had:在此基础上额外引入在线 Hadamard 旋转矩阵($R_3$, $R_4$),用于进一步削减极端低比特激活和 KV-cache 的离群值。

主要贡献总结:

  • 提出首个通过 学习旋转(learned rotations) 缓解权重与激活分布离群问题的方法。
  • 在 Stiefel manifold 上直接优化旋转矩阵,使其最小化量化网络的最终损失。
  • 在 Mistral-7B W4A8KV8 设置中将量化性能差距从 12.1 降至 1.6;
  • 在极端 W4A4KV4 设置下,SpinQuant_had 将 LLaMA-2 7B 的性能差距从 22.0 点缩小至 2.9 点。

4. Method

SpinQuant 框架整体目标: 在保持全精度网络数值等价的前提下,通过插入旋转矩阵使激活与权重分布更均衡,从而降低量化误差。 核心包括四个旋转矩阵的定义与优化。

4.1 ROTATION PARAMETERIZATION

(1) Rotation 基础

Hadamard matrix $H$ 是一种特殊的旋转矩阵,其元素仅为 $\pm \sqrt{n}$。 通过对角矩阵 $S$(对角元素为 $\pm 1$)相乘,可生成 $2^n$ 种不同的随机 Hadamard 矩阵。

(2) Residual Path Rotation ($R_1$)

在 residual 路径上对激活进行旋转: $$ X’ = X R_1, \quad \text{then revert by } R_1^\top. $$ 这样可以在不改变数值的情况下均衡激活幅度,减少输入 FC 层的 outliers。 当量化关闭时,无论 $R_1$ 如何取值,网络输出保持不变。 $R_1$ 可直接合并进相应权重矩阵,不增加额外参数。

(3) Attention Block Rotation ($R_2$)

在注意力模块中:

  • 对 value 矩阵施加 $R_2$;
  • 对 out-projection 的输入施加 $R_2^\top$。

由于 $R_2$ 与 $R_2^\top$ 间无非线性算子,故在全精度下两者可互相抵消,保证数值等价。 这种 head-wise 旋转有助于改善 KV cache 与 out-projection 激活的量化表现。

包含 $R_1$ 与 $R_2$ 的方案即 SpinQuant_no_had

(4) Online Hadamard Rotations ($R_3$, $R_4$)

为了进一步减少 4-bit 激活的 outlier,作者引入在线 Hadamard 旋转:

  • $R_3$:应用于 KV cache;
  • $R_4$:应用于 MLP 的输入激活(尤其 down-projection 前)。

Hadamard 旋转可通过快速哈达玛变换(FHT)高效实现,几乎不增加推理时延。 包含所有四个旋转的完整版本即 SpinQuant_had


4.2 Cayley-OPTIMIZED ROTATION

(1) 目标函数

给定冻结的权重 $W$ 与输入 $X$,优化旋转矩阵以最小化量化后的损失: $$ \min_{R \in \mathcal{M}} L_Q(R_1, R_2 | W, X) $$ 其中 $\mathcal{M}$ 是 Stiefel manifold(所有正交矩阵的集合),$L_Q$ 表示量化网络的任务损失(如交叉熵)。

(2) 优化方法:Cayley SGD

采用 Cayley SGD(Li et al., 2020)在流形上更新旋转矩阵: $$ R’ = \Delta_R(Y) R = (I - \frac{\alpha}{2} Y)^{-1} (I + \frac{\alpha}{2} Y) R $$ 其中 $Y^\top = -Y$,$Y$ 由梯度 $G = \nabla_R L_Q$ 投影后得到: $$ \hat{G} = G R^\top - \frac{1}{2} R R^\top G R^\top, \quad Y = \hat{G} - \hat{G}^\top $$ 该更新规则保证若 $R$ 为正交矩阵,则 $R’$ 仍正交,即保持 $R’^\top R’ = I$。 相较普通 SGD,计算复杂度约为其两倍。

(3) 实际优化过程

  • 网络权重保持冻结,仅优化 ${R_1, R_2}$;
  • 旋转矩阵参数量仅占总权重的约 0.26%;
  • 优化使用 800 个 WikiText2 样本,100 次迭代即可收敛;
  • 初始化使用随机 Hadamard 矩阵;
  • Cayley 优化结果稳定且优于所有随机初始化的旋转。

5. Evaluation

5.1 Experimental Settings

优化参数:

  • 优化器:Cayley SGD;
  • 学习率从 1.5 线性衰减至 0;
  • 迭代次数:100;
  • 数据:WikiText-2 的 800 个样本;
  • 优化后再用 GPTQ 对旋转后的权重进行量化(128 个样本,seq len=2048)。

训练耗时: LLaMA-3 1B/3B/8B:13/18/30 分钟; LLaMA-2 7B/13B:25/30 分钟; LLaMA-2 70B:约 3.5 小时; Mistral-7B:16 分钟。

5.2 Main Results

  • SpinQuant_no_had:仅通过 $R_1$、$R_2$ 学得的旋转即可在 W4A8 设置下显著提升性能(如 Mistral 7B 提升 10.5 点)。 对 LLaMA3-8B(W4A8)提升 4.1 点,距 FP 仅 1.0 点。
  • SpinQuant_had:在激活极低比特 (A4/KV4) 情况下进一步改善,例如 LLaMA-2 7B/13B/70B W4A4KV4 分别仅落后 FP 2.9/1.4/1.7 点,领先旧方法 15~20 点。

SpinQuant_no_had 的实现简单,仅需替换旋转权重即可推理,无需改 forward。 SpinQuant_had 则需在推理时增加 Hadamard kernel(约 8% 延迟开销),但可在极端量化场景显著提升精度。


5.3 Ablation Studies

Ablation 分析表明:

  • 使用 Cayley 优化学习到的旋转优于任何随机初始化;
  • Hadamard 初始化最稳定;
  • 旋转学习在不同随机种子下方差极小;
  • 对比 RTN(round-to-nearest)量化方式,SpinQuant 仍显著领先。

5.4 Illustrative Analysis of the Rotation Efficacy

论文通过二维示例直观解释旋转的意义: 若激活向量 $x = [x_1, x_2]$,其中 $x_1$ 较大,则量化范围由 $x_1$ 决定,$x_2$ 的精度受限。 旋转 45° 后可使两个分量幅值均衡,提高整体量化精度。

在三维场景中,如 $x_1$ 的幅值为 $x_2, x_3$ 的四倍,通过合理旋转可将极值分布从 $[2, 0.5, 0.5]$ 调整为近似均衡的 $[1, 1, 1.414]$,从信息熵角度提升量化效率。 这说明学习旋转能自动发现最优的能量分布方向。


5.5 SPEED MEASUREMENT

在 MacBook M1 Pro CPU 上测得:

  • W4A8 模型相比 W16A16 提速约 3 倍;
  • 加入在线 Hadamard 旋转仅增加约 8% 延迟。

因此,SpinQuant_no_had 适用于一般量化任务(高效无额外延迟),而 SpinQuant_had 适合极端低比特场景(略慢但精度更高)。


6. Conclusion

SpinQuant 提出了一个新的量化框架,通过学习旋转矩阵在不改变全精度网络输出的情况下有效减少 outliers,使得权重、激活和 KV cache 的 4-bit 量化在保持高精度的同时获得显著加速。

核心特性:

  • 旋转不改变全精度输出(rotation invariance)
  • Cayley 优化保持正交性
  • 兼容现有 GPTQ、AWQ 等量化框架
  • 在多个模型与设置下达到 SOTA 表现

SpinQuant 展示了一个全新的研究方向——基于旋转的量化优化,并为未来探索“解析最优旋转矩阵”的闭式解提供了启发。