Back to blog

OmniQuant: Omnidirectionally Calibrated Quantization for LLMs

OmniQuant 提出全方位校准的大语言模型量化方法。

OmniQuant: Omnidirectionally Calibrated Quantization for Large Language Models

论文图表

图表文件说明
Figure 1fig1.pngOmniQuant 概览:QAT 性能 + PTQ 效率
Figure 2fig2.pngLLaMA 家族上的 OmniQuant 特性
Figure 3fig3.pngTransformer Block 中的 OmniQuant 详解
Figure 4fig4.pngW3A16g128 量化在 Vicuna-Bench 上的比较
Figure A1fig5.png学习到的裁剪尺度可视化
Figure A2fig6.png激活可视化(原始/SmoothQuant/LET后)
Figure A3fig7.pngBlock-wise 量化误差比较
Figure A4fig8.png比特级别的困惑度缩放规律
Figure A5fig9.png权重范围变化可视化
Figure A6fig10.png性能概览权衡曲线

一、论文概述

项目内容
标题OmniQuant: Omnidirectionally Calibrated Quantization for Large Language Models
作者Wenqi Shao, Mengzhao Chen, Zhaoyang Zhang, Peng Xu, Lirui Zhao 等
机构Shanghai AI Laboratory, The University of Hong Kong, The Chinese University of Hong Kong
论文https://arxiv.org/abs/2308.13137v3
代码https://github.com/OpenGVLab/OmniQuant
发布2023年8月

二、核心思想

2.1 问题定义

现有 LLM 量化方法存在手工参数设计的局限:

问题表现后果
手工迁移强度SmoothQuant 使用预定义的迁移强度低比特量化性能差
网格搜索缩放因子AWQ 使用网格搜索的通道缩放参数非最优,耗时
QAT 成本过高LLM-QAT 需要 100K 样本和数百 GPU 小时不实用

核心问题:能否达到 QAT 的性能,同时保持 PTQ 的时间和数据效率?

2.2 解决方案:OmniQuant

OmniQuant 提出了一种全方位校准量化技术:

┌─────────────────────────────────────────────────────────┐
│                    OmniQuant 框架                         │
├─────────────────────────────────────────────────────────┤
│  1. 冻结原始全精度权重(不修改权重本身)                    │
│  2. 仅学习少量量化参数(Θ1, Θ2)                          │
│  3. Block-wise 误差最小化(逐层优化)                      │
├─────────────────────────────────────────────────────────┤
│  两大创新组件:                                          │
│  ├── LWC (Learnable Weight Clipping)                    │
│  │   └── 优化裁剪阈值 γ, β,使权重分布更紧凑              │
│  └── LET (Learnable Equivalent Transformation)          │
│      └── 学习缩放因子 s 和偏移量 δ,将量化难度从           │
│          激活转移到权重                                    │
└─────────────────────────────────────────────────────────┘

2.3 核心优势

方面QATPTQ (GPTQ/AWQ)OmniQuant
性能最优低比特下差接近 QAT
训练时间数百 GPU 小时1 小时1-16 小时
数据需求100K 样本128 样本128 样本
可微优化全模型无/有限仅量化参数
推理开销无无无(参数可融合)

三、技术架构

3.1 Block-wise 量化误差最小化(Figure 3)

优化目标:

min_{Θ1, Θ2} ||F(W, X) - F(Qw(W; Θ1, Θ2), Qa(X, Θ2))||

其中:

  • F:Transformer Block 的映射函数
  • W, X:全精度权重和激活
  • Qw, Qa:权重和激活量化器
  • Θ1 = {γ, β}:LWC 的裁剪强度参数
  • Θ2 = {δ, s, s_a}:LET 的缩放和偏移参数

优化策略:

  • 逐层优化(非全模型联合优化)
  • 使用 SGD 算法
  • 128 个样本,20 个 epoch(W2A16 用 40 epoch)
  • 单个 A100-40G GPU

3.2 Learnable Weight Clipping (LWC)

量化公式:

W_q = clamp(⌊W/h⌉ + z, 0, 2^N - 1)
h = (γ·max(W) - β·min(W)) / (2^N - 1)
z = -⌊β·min(W) / h⌉

关键设计:

  • γ ∈ [0,1]:上界裁剪强度(通过 Sigmoid 初始化)
  • β ∈ [0,1]:下界裁剪强度(通过 Sigmoid 初始化)
  • 当 γ=1, β=1 时退化为标准 MinMax 量化
  • 仅调整裁剪阈值,不改变权重分布形状

与 PACT/LSQ 的区别:

方法裁剪方式效果
PACT直接学习阈值 α性能不稳定
LSQ直接学习步长 s需要全模型训练
LWC学习裁剪强度 γ, β继承 MinMax 优势,仅微调

3.3 Learnable Equivalent Transformation (LET)

线性层等价变换

数学等价:

Y = XW + B = [(X-δ)⊘s] · [s⊙W] + [B+δW]
    = X̃ · W̃ + B̃

其中:

  • s ∈ R^{1×C_in}:通道缩放因子
  • δ ∈ R^{1×C_in}:通道偏移量
  • ⊘:逐元素除法
  • ⊙:逐元素乘法

参数融合:

  • s, δ 可融合到前一层的 LayerNorm 或线性层
  • 无额外推理开销

注意力等价变换

Q/K 缩放:

P = Softmax(QK^T) = Softmax((Q⊘s_a)(s_a⊙K^T))

其中 s_a ∈ R^{1×C_out} 是亲和矩阵的缩放因子。

设计选择:

  • V 矩阵不做显式变换(已被输出投影的逆变换改变)
  • Softmax 输出保持全精度(长尾分布不适合均匀量化)

3.4 LET 应用范围

层类型是否应用 LET原因
QKV 投影是激活存在异常值
注意力缩放是量化 Q/K 矩阵
FFN 第一层是线性层
FFN 第二层否非线性层后特征稀疏,梯度不稳定
输出投影是V 矩阵已隐式变换

四、实验结果

4.1 实验配置

项目配置
模型OPT (125M-66B), LLaMA-1 (7B-65B), LLaMA-2 (7B-70B), Falcon-180B, LLaMA-2-chat
硬件NVIDIA A100-40G GPU(训练), A100-80G(部署)
校准数据WikiText2 128 条 × 2048 tokens
评估WikiText2/C4/PTB 困惑度,PIQA/ARC/BoolQ/HellaSwag 准确率
基线RTN, GPTQ, AWQ, SmoothQuant, OS+, RPTQ, LLM-QAT

4.2 Weight-only 量化结果(Table 1)

WikiText2 困惑度(↓ 越低越好):

方法比特LLaMA-7BLLaMA-13BLLaMA-65BLLaMA-2-7BLLaMA-2-70B
FP16W16A165.685.093.535.473.31
RTNW2A161.1e56.8e42.2e43.8e42.0e4
GPTQW2A162.1e35.5e355.917.7e377.95
OmniQuantW2A1615.4713.217.5837.377.81
RTNW3A1625.7311.3910.68539.487.52
GPTQW3A168.066.765.068.374.82
AWQW3A1611.887.455.2124.00-
OmniQuantW3A166.495.684.046.583.92
RTNW4A166.435.553.876.113.67
GPTQW4A166.135.403.835.833.58
AWQW4A166.085.343.766.15-
OmniQuantW4A165.865.213.715.743.47

关键发现:

  • W2A16:OmniQuant 相比 GPTQ 困惑度降低 2-3 个数量级
  • W3A16:OmniQuant 一致优于 GPTQ 和 AWQ
  • W4A16:OmniQuant 略优于现有方法
  • 比特越低,OmniQuant 优势越明显

4.3 Weight-Activation 量化结果(Table 2)

零样本任务平均准确率(%):

模型方法W6A6W4A4
LLaMA-7BFP1664.0964.09
LLaMA-7BSmoothQuant62.8138.41
LLaMA-7BOS+61.1348.43
LLaMA-7BLLM-QAT-46.43
LLaMA-7BOmniQuant63.1752.65
LLaMA-13BFP1666.3366.33
LLaMA-13BSmoothQuant64.4349.36
LLaMA-13BOS+64.9249.86
LLaMA-13BOmniQuant64.9554.37
LLaMA-65BFP1671.0471.04
LLaMA-65BSmoothQuant69.8047.71
LLaMA-65BOS+68.7652.52
LLaMA-65BOmniQuant70.2859.22

关键发现:

  • W6A6:OmniQuant 接近全精度性能
  • W4A4:OmniQuant 显著优于所有 PTQ 方法(+4.99% ~ +11.80%)
  • 在 LLaMA-7B 上甚至超越 QAT 方法 LLM-QAT(+6.22%)

4.4 指令微调模型量化(Figure 4)

Vicuna-Bench 胜率(W3A16g128):

模型OmniQuant vs RTNOmniQuant vs AWQ
LLaMA-2-7B-chat80.3%50%
LLaMA-2-13B-chat显著优于优于

关键发现:OmniQuant 对指令微调模型同样有效。

4.5 实际部署加速(Table 3)

MLC-LLM 部署结果(A100-80G):

模型方法权重内存运行内存token/s
LLaMA-7BFP1612.6G14.4G69.2
LLaMA-7BW4A16g1283.8G5.7G134.2
LLaMA-7BW3A16g1283.2G5.1G83.4
LLaMA-7BW2A16g1282.2G4.1G83.9
LLaMA-13BFP1624.3G27.1G52.5
LLaMA-13BW4A16g1287.0G10.0G91.3
LLaMA-13BW2A16g1284.0G7.5G92.6
LLaMA-65BFP16OOM--
LLaMA-65BW4A16g12833.0G41.0G24.3
LLaMA-65BW2A16g12818.0G25.6G24.8

关键发现:

  • W4A16g128 几乎将推理速度翻倍
  • W2A16g128 内存减半,速度接近 W4A16
  • 无额外推理操作(参数可融合)

4.6 消融实验

LWC vs 其他裁剪方法

方法LLaMA-7B W2A16 PPL
MinMax (γ=1, β=1)极高
PACT (直接学 α)不稳定
LSQ (直接学 s)需要全模型训练
LWC (学 γ, β)15.47

LET 的作用

组件W4A16W4A4
仅 LWC好差
LWC + LET更好显著提升

关键发现:LET 对 W&A 量化至关重要,将量化难度从激活转移到权重。


五、核心技术详解

5.1 为什么 LWC 优于直接裁剪?

传统方法(PACT):

W_q = clamp(W, 0, α) / α * (2^N - 1)
  • 直接学习 α,可能陷入局部最优
  • 不继承 MinMax 量化的优势

OmniQuant LWC:

W_q = clamp(⌊W/h⌉ + z, 0, 2^N - 1)
h = (γ·max(W) - β·min(W)) / (2^N - 1)
  • 继承 MinMax 量化(γ=1, β=1 时)
  • 仅需微调裁剪强度
  • 优化空间小,更容易收敛

5.2 为什么 LET 有效?

激活异常值问题:

原始激活:[0.1, 0.2, 0.15, 100.0, 0.1, 0.2]
                                ↑ 异常值
量化后:  [0, 0, 0, 7, 0, 0]  ← 大量信息丢失

LET 解决方案:

应用缩放 s = [1, 1, 1, 50, 1, 1]
变换后激活:[0.1, 0.2, 0.15, 2.0, 0.1, 0.2]
                            ↑ 范围缩小
量化后:  [0, 0, 0, 3, 0, 0]  ← 信息保留更多

关键:缩放因子 s 被融合到权重中,无推理开销。

5.3 Block-wise 优化的优势

方面全模型优化Block-wise 优化
内存需要存储所有层的梯度仅需当前 Block
收敛容易陷入局部最优逐层保证最优
数据需求需要大量数据128 样本足够
时间数百 GPU 小时1-16 小时

六、相关工作对比

6.1 Weight-only 量化方法

方法优化方式W2A16W3A16W4A16
RTN无极差差一般
GPTQHessian 补偿差一般好
AWQ网格搜索差一般好
OmniQuant可微优化好好最好

6.2 Weight-Activation 量化方法

方法优化方式W8A8W6A6W4A4
SmoothQuant手工迁移强度好一般差
OS+手工缩放+偏移好一般差
RPTQ分组激活量化好好需要特殊格式
LLM-QAT全模型训练--好但成本高
OmniQuant可微优化好好最好

6.3 与其他方法的互补性

OmniQuant 可以与以下方法结合:

  • QLoRA:先 OmniQuant 量化,再 LoRA 微调
  • INT2.1:先 OmniQuant 量化,再参数高效微调
  • 知识蒸馏:用 OmniQuant 量化作为起点

七、总结

核心贡献

  1. OmniQuant 框架:

    • 冻结全精度权重,仅学习量化参数
    • 达到 QAT 性能,保持 PTQ 效率
    • 128 样本,1-16 小时,单 GPU
  2. LWC (Learnable Weight Clipping):

    • 学习裁剪强度 γ, β(而非直接学阈值)
    • 继承 MinMax 量化优势
    • 使权重分布更紧凑
  3. LET (Learnable Equivalent Transformation):

    • 学习缩放因子 s 和偏移量 δ
    • 将量化难度从激活转移到权重
    • 扩展到注意力机制(Q/K 缩放)
  4. 显著性能提升:

设置改善
W2A16困惑度降低 2-3 个数量级
W4A4准确率 +4.99% ~ +11.80%
vs LLM-QAT+6.22%(LLaMA-7B W4A4)
  1. 零推理开销:
    • LWC 裁剪阈值可融合到量化参数
    • LET 缩放因子可融合到前一层
    • 无额外计算或内存访问

关键数据

指标数值
训练时间1-16 小时(7B-70B)
训练数据128 样本
训练硬件单个 A100-40G GPU
W2A16 困惑度LLaMA-65B: 7.58(vs GPTQ 55.91)
W4A4 准确率LLaMA-7B: 52.65%(vs LLM-QAT 46.43%)
推理加速W4A16g128: ~2×(MLC-LLM)

技术影响

OmniQuant 证明了:

  • PTQ 可以达到接近 QAT 的性能
  • 可微优化是量化参数学习的有效途径
  • 低比特量化(W2A16, W4A4)在合理优化下是可行的
  • Block-wise 优化是大规模模型量化的高效策略

局限性

  1. W4A4 硬件支持:当前缺乏现成的硬件支持
  2. INT3/INT2 部署:MLC-LLM 对 INT3/INT2 支持尚不完善
  3. FFN 第二层:LET 不适用于非线性层后的线性层
  4. 极端低比特:W1A16 等更极端设置未探索

未来方向

  1. 硬件协同:与芯片厂商合作支持 W4A4
  2. 更多模型:多模态 LLM、MoE 模型
  3. 更低比特:W1A16、W2A4
  4. 端到端优化:与推理框架深度集成

八、参考资源