推理与量化 / 量化方法 原理笔记进阶 6 分钟阅读 查看源文件 ↗

QuaRot 与 SpinQuant#

本页内容5 个部分

QuaRot 与 SpinQuant 可以沿着 AWQ 的 preconditioning 视角自然理解。AWQ 使用对角矩阵改变各坐标轴的尺度;QuaRot 进一步使用正交矩阵改变坐标轴方向;SpinQuant 再进一步,不满足于预先指定或随机的 rotation,而是直接学习一个更适合量化的正交变换。

一句话地图:

AWQ: scale coordinates\boxed{\text{AWQ: scale coordinates}}

QuaRot: rotate coordinates\boxed{\text{QuaRot: rotate coordinates}}

SpinQuant: learn which rotation is best\boxed{\text{SpinQuant: learn which rotation is best}}


1. 旋转的直觉与等价条件#

1.1 为什么 diagonal scaling 还不够#

AWQ 使用:

S=diag⁡(s1,…,sd)S=\operatorname{diag}(s_1,\dots,s_d)

并进行:

W→WS,X→S−1XW\to WS,\qquad X\to S^{-1}X

它可以独立 stretch / shrink 每个 channel,但 channel 方向本身不变。

例如 activation:

x=[0.1,0.2,20,0.1]Tx=[0.1,0.2,20,0.1]^T

对角 scaling 可以把第三个 channel 从 20 压到 2,同时在 weight 一侧做逆向补偿。但它不能把这个高度集中的 outlier 能量分散到其他坐标。

Rotation 可以改变 basis orientation,而 diagonal scaling 可以独立改变各轴尺度;正交变换保持 L2 范数,二者不是严格的强弱包含关系。


1.2 正交 rotation:不改变函数,只改变坐标系#

令:

RTR=IR^TR=I

则:

R−1=RTR^{-1}=R^T

所以线性层满足:

WX=(WR)(RTX)\boxed{WX=(WR)(R^TX)}

这和 AWQ 的等价缩放具有相同结构,但 RTXR^TX 不再是逐 channel scaling:

xi′=∑jRjixjx_i'=\sum_jR_{ji}x_j

每个新 channel 都是旧 channels 的线性组合。

因此 rotation 是真正的 basis change。

AWQ / diagonal S:

x₁ → scale x₁
x₂ → scale x₂
x₃ → scale x₃

QuaRot / orthogonal R:

[x₁,x₂,x₃,...]
       ↓ mix
[x₁',x₂',x₃',...]

1.3 Rotation 为什么能帮助量化:把 outlier 摊开#

考虑极端 activation:

x=[20,0,0,0]Tx=[20,0,0,0]^T

使用 normalized Hadamard matrix:

H=12[11111−11−111−1−11−1−11]H=\frac12 \begin{bmatrix} 1&1&1&1\\ 1&-1&1&-1\\ 1&1&-1&-1\\ 1&-1&-1&1 \end{bmatrix}

它满足:

HTH=IH^TH=I

旋转后:

x′=HTx=[10,10,10,10]Tx'=H^Tx=[10,10,10,10]^T

于是:

before:
20   0   0   0
↑ concentrated outlier

after Hadamard:
10  10  10  10

正交变换保持 L2 norm:

∥HTx∥2=∥x∥2\|H^Tx\|_2=\|x\|_2

能量没有消失,但最大坐标值从 20 降到 10:

∥HTx∥∞<∥x∥∞\|H^Tx\|_\infty<\|x\|_\infty

对于由最大绝对值决定动态范围的均匀低比特量化,这一点非常重要。

若粗略有:

Δ≈max⁡∣x∣7\Delta\approx\frac{\max|x|}{7}

则 rotation 前:

Δbefore≈207=2.86\Delta_{\text{before}}\approx\frac{20}{7}=2.86

rotation 后:

Δafter≈107=1.43\Delta_{\text{after}}\approx\frac{10}{7}=1.43

这个例子的网格步长更细,但两组数恰好都可被各自 absmax INT4 网格精确表示,因此并没有展示误差下降。更重要的是,旋转不保证对每个输入降低最大坐标:反过来把 [10,10,10,10]T[10,10,10,10]^T 乘同一个 HH 就得到 [20,0,0,0]T[20,0,0,0]^T。收益需要在校准/评估分布上测量。

核心链条:

outlier concentration
        ↓
orthogonal rotation
        ↓
energy spreading
        ↓
smaller coordinate-wise dynamic range
        ↓
finer effective quantization grid

2. QuaRot 的结构化旋转#

2.1 QuaRot 的核心视角#

QuaRot 可以理解为一种 rotation-based quantization preconditioning。

它利用 Transformer 中的计算不变性,在不改变 full-precision 模型函数的前提下,把 hidden representation 旋转到一个更适合低比特表示的 basis,再对 weight、activation 和 KV cache 做更激进的低比特量化。

与 AWQ 对比:

AWQ QuaRot
变换 diagonal scaling orthogonal rotation
数学对象 SS RR
作用 stretch / shrink axes rotate basis
能否混合 channels 否 是
outlier 处理直觉 缩小对应 channel 将集中能量 spread 到多个 channel
典型目标 weight-only 低比特 weight / activation / KV 更全面的低比特化

模型级等价不只依赖单个线性层的恒等式。非线性、RMSNorm 的可学习缩放、残差相加和 RoPE 都限制了可插入或吸收旋转的位置;例如通常 RTSiLU⁡(x)≠SiLU⁡(RTx)R^T\operatorname{SiLU}(x)\ne\operatorname{SiLU}(R^Tx)。QuaRot 需要按计算图安排离线吸收与在线变换。


2.2 为什么 Hadamard 特别适合做 rotation#

一般 dense orthogonal matrix:

R∈Rd×dR\in\mathbb{R}^{d\times d}

若直接存储并应用,需要约:

O(d2)O(d^2)

的存储和计算,这对 LLM hidden dimension 很昂贵。

Hadamard transform 的优势是:

  1. 它是正交 / 可归一化为正交变换;
  2. 具有高度结构化的 ±1\pm1 模式;
  3. 不需要显式存储完整 dense matrix;
  4. Fast Hadamard Transform 可以近似以

O(dlog⁡d)O(d\log d)

复杂度完成。标准快速 Walsh–Hadamard 变换要求维度为 22 的幂;其他维度需要实现支持的分解或填充,不能假定任意 dd 都直接可用。

所以它提供了一种非常实用的折中:

dense random orthogonal
        ↓
strong basis mixing
        ↓
      O(d²)

structured Hadamard
        ↓
orthogonal + strong mixing
        ↓
    O(d log d)

这正好回应了 AWQ 留下的问题:能否获得 rotation 的表达能力,而不支付一般 dense basis transform 的成本?


2.3 为什么 rotation 对 activation / KV quantization 尤其有价值#

Weight 是静态的,很多 weight-only 方法可以离线搜索 scale、group 或其他参数。但 activation 与 KV cache 随输入动态变化,而且常见的 outlier 会直接扩大 runtime quantization range。

Diagonal scaling 可以把 activation outlier 转移到 weight 一侧,但 rotation 提供另一种可能:

不只是移动 outlier 的尺度负担,而是改变 outlier 在 representation space 中的空间分布。

这使 rotation-based 方法特别适合思考 W/A/KV 同时低比特化的问题。

QuaRot 的重要意义也在这里:量化问题不再只是“如何压 weight”,而是整个 Transformer representation 如何选择一个更适合低比特 arithmetic 的 basis。


3. SpinQuant 的可学习旋转#

3.1 QuaRot 留下的问题:哪个 rotation 最好?#

假设任意正交 RR 都保持 full-precision 等价:

WX=(WR)(RTX)WX=(WR)(R^TX)

但经过 quantizer 后:

Q(WR) Q(RTX)Q(WR)\,Q(R^TX)

的误差会依赖于具体的 RR。

原因和 AWQ 一样:quantization 是非线性的。

因此虽然许多 rotation 都在浮点世界中等价,它们在低比特世界中并不等价。

这就产生一个自然问题:

既然 rotation 的选择影响量化误差,为什么不直接优化 R?\boxed{\text{既然 rotation 的选择影响量化误差,为什么不直接优化 }R?}

这就是 SpinQuant 的出发点。


3.2 SpinQuant:从“使用 rotation”到“学习 rotation”#

QuaRot 的核心是找到有效的 rotation-based reparameterization;SpinQuant 进一步把 rotation 本身视为优化变量。

概念流程:

initialize R
    ↓
calibration data
    ↓
quantization-aware forward / objective
    ↓
optimize R
    ↓
find a quantization-friendly basis
    ↓
quantize model

可以把目标抽象理解成:

R∗=arg⁡min⁡R:RTR=ILquant(R)\boxed{ R^*=\arg\min_{R:R^TR=I}\mathcal{L}_{\text{quant}}(R) }

这里最关键的是约束:

RTR=IR^TR=I

也就是说,优化不能把 RR 变成任意 dense matrix;它必须一直留在 orthogonal set 上。


3.3 为什么必须保持 orthogonal#

rotation preconditioning 的一个核心优势是可以插入:

RRT=IRR^T=I

而不改变 full-precision 模型。

例如:

WX=WRRTXWX=WRR^TX

如果优化过程中 RR 不再正交:

RRT≠IRR^T\neq I

那么:

WRRTX≠WXWRR^TX\neq WX

此时已经不是等价 reparameterization,而是在修改模型函数本身。

因此 SpinQuant 的优化问题具有明显的几何结构:RR 需要在 orthogonal group / manifold 上移动,而不是在整个 Rd×d\mathbb{R}^{d\times d} 空间中自由更新。


4. 算例、比较与边界#

4.1 一个二维几何直觉#

想象 activation distribution 沿某个斜方向高度拉长:

             y
             ↑
             │       •
             │      •
             │     •
             │    •
─────────────┼────────────→ x

而普通 uniform quantizer 的 grid 永远沿 coordinate axes:

+---+---+---+---+
|   |   |   |   |
+---+---+---+---+
|   |   |   |   |
+---+---+---+---+
|   |   |   |   |
+---+---+---+---+

如果 representation 的方向与 grid 很不匹配,有限的低比特 levels 会被浪费在不重要的空间区域。

Rotation 相当于问:

能否旋转 representation,使数据分布与 axis-aligned 的低比特 quantization grid 更匹配?

QuaRot 的思路是利用有效的结构化 / 随机 rotation 消除或 spread outliers;SpinQuant 则进一步说:既然 rotation angle / basis 很重要,那就直接从 calibration objective 中学习它。


4.2 AWQ、QuaRot、SpinQuant 的统一视角#

三者都可以看成:保持 quantizer 相对简单,而改变 quantizer 所看到的 representation geometry。

original model representation
           ↓
     reparameterization
           ↓
quantization-friendly geometry
           ↓
     simple low-bit Q

区别在于 reparameterization family:

方法 Transformation family Mental model
AWQ diagonal SS 学 / 搜索每个 axis 应该 stretch 多少
QuaRot orthogonal RR 旋转 basis,把 outlier energy spread 开
SpinQuant optimized orthogonal R∗R^* 学习最适合量化的 rotation

下面列出相关设计选项;具体成本取决于旋转是否可离线吸收,不是每个箭头都意味着运行时更贵:

low cost                                         high flexibility

scalar
  ↓
diagonal scaling (AWQ)
  ↓
structured orthogonal rotation (QuaRot-style)
  ↓
optimized rotation (SpinQuant)
  ↓
general dense transform

4.3 更深的一层:量化不只是设计 quantizer#

传统直觉容易把问题写成:

find a better Q\boxed{\text{find a better }Q}

AWQ / QuaRot / SpinQuant 提供了另一条路线:

W→TW~→QQ(W~)W\xrightarrow{T}\widetilde W\xrightarrow{Q}Q(\widetilde W)

以及 activation:

X→T−1X~→QQ(X~)X\xrightarrow{T^{-1}}\widetilde X\xrightarrow{Q}Q(\widetilde X)

其中 TT 可以是 diagonal scaling,也可以是 orthogonal rotation。

因此真正可以优化的是:

Quantizer+Representation Geometry\boxed{\text{Quantizer} + \text{Representation Geometry}}

而这三种方法的共同洞察可以浓缩为:

Don't only improve the quantizer; improve the geometry seen by the quantizer.


4.4 总结#

AWQ#

W→WS,X→S−1XW\to WS,\qquad X\to S^{-1}X

用 activation-aware diagonal scaling 改变各 channel 的有效量化分辨率。

QuaRot#

W→WR,X→RTXW\to WR,\qquad X\to R^TX

利用正交 rotation 改变 basis,把集中 outlier 的能量 spread 到多个维度,从而降低 coordinate-wise dynamic range,使 weight / activation / KV cache 更适合低比特表示。

SpinQuant#

R∗=arg⁡min⁡R:RTR=ILquant(R)\boxed{R^*=\arg\min_{R:R^TR=I}\mathcal{L}_{\text{quant}}(R)}

不再满足于给定的 rotation,而是直接学习一个 quantization-friendly orthogonal basis。

最终可以把三者放在同一条发展线上:

Diagonal Preconditioning→Rotation Preconditioning→Learned Rotation Preconditioning\boxed{ \text{Diagonal Preconditioning} \rightarrow \text{Rotation Preconditioning} \rightarrow \text{Learned Rotation Preconditioning} }

这条路线的核心不是让 full-precision 模型计算不同的函数,而是利用等价 reparameterization 改变低比特 quantizer 面对的数值几何。

参考资料#

QuaRot、SpinQuant。文中的等价关系均指量化前的精确算术;量化、舍入和 kernel 实现仍需单独验证。

相关阅读路线

理解低比特推理 ↗