Back to blog

OmniQuant: Omnidirectionally Calibrated Quantization for Large Language Models

全方向校准的LLM量化技术,通过LWC和LET实现PTQ效率与QAT性能的统一

OmniQuant: Omnidirectionally Calibrated Quantization for Large Language Models

一、论文概述

项目内容
标题OmniQuant: Omnidirectionally Calibrated Quantization for Large Language Models
作者Wenqi Shao*, Mengzhao Chen*, Zhaoyang Zhang, Peng Xu, Lirui Zhao, Zhiqian Li, Kaipeng Zhang, Peng Gao, Yu Qiao, Ping Luo
机构上海AI实验室 (OpenGVLab)、香港大学、香港中文大学
论文arXiv:2308.13137
代码GitHub: OpenGVLab/OmniQuant
硬件单卡 A100-40G
领域LLM量化、模型压缩

二、核心思想

问题定义

性能概述

Figure 1: (a) LLaMA-7B W4A4量化性能对比,(b)(c) LLaMA-13B不同位宽下的困惑度

LLM部署面临两大挑战:

挑战现有方案局限
内存开销PTQ(GPTQ, AWQ)手工设计量化参数,极低位性能差
计算效率QAT(LLM-QAT)需要100k样本和数百GPU小时

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

解决方案概述

OmniQuant通过高效优化各种量化参数,在多种量化设置下实现优异性能,同时保持PTQ的计算效率。

两大核心组件:

组件功能机制
LWC (Learnable Weight Clipping)调制权重极值优化裁剪阈值
LET (Learnable Equivalent Transformation)处理激活异常值通道级缩放和偏移

特性概览

Figure 2: OmniQuant在LLaMA系列上的资源特性

资源需求:

  • 训练时间:1-16小时(单卡A100-40G)
  • 训练样本:仅128个
  • 支持设置:W4A16、W3A16、W2A16、W6A6、W4A4

三、技术架构

整体框架

架构详情

Figure 3: OmniQuant在Transformer块中的详细应用位置

OmniQuant在Transformer块中的应用位置:

位置组件作用
线性层权重LWC优化裁剪阈值,调制权重极值
LayerNorm之后LET通道级缩放+偏移
Q/K/V投影前LET通道级变换
V投影后、Out投影前LET通道级变换
Q/K注意力中LET注意力缩放
FFN前LET通道级变换

关键特性:所有可学习参数在量化后可被消除/融合,推理时零额外开销。

核心公式

公式1:块级量化误差最小化(总体目标)

arg⁡min⁡Θ1,Θ2∥F(W,X)−F(Qw(W;Θ1,Θ2),Qa(X;Θ1))∥F2\arg\min_{\Theta_1, \Theta_2} \| F(W, X) - F(Q_w(W; \Theta_1, \Theta_2), Q_a(X; \Theta_1)) \|^2_F

其中:

  • F(W,X)F(W, X):全精度权重的Transformer块函数
  • QwQ_w:权重量化函数,参数化为 Θ1\Theta_1(LWC参数)和 Θ2\Theta_2(LET参数)
  • QaQ_a:激活量化函数,参数化为 Θ1\Theta_1
  • 逐层优化(块级),保持解空间可控

公式2:LWC权重量化

标准min-max量化: Qw(W)=Round(Clamp(W/s+z))Q_w(W) = \text{Round}(\text{Clamp}(W / s + z)) 其中 s=(max⁡(W)−min⁡(W))/(2b−1)s = (\max(W) - \min(W)) / (2^b - 1)

LWC引入可学习裁剪阈值 α\alpha 和 β\beta: Qw(W;α,β)=Round(Clamp(W/s′+z′))Q_w(W; \alpha, \beta) = \text{Round}(\text{Clamp}(W / s' + z')) 其中 s′=(β−α)/(2b−1)s' = (\beta - \alpha) / (2^b - 1),z′=−α/s′z' = -\alpha / s',裁剪范围为 [α,β][\alpha, \beta]

公式3:LWC可微分舍入

为使舍入操作可微分,使用软舍入机制: W^=α+(β−α)⋅11+exp⁡(−h⋅(W~−⌊W~⌋−0.5))\hat{W} = \alpha + (\beta - \alpha) \cdot \frac{1}{1 + \exp(-h \cdot (\tilde{W} - \lfloor\tilde{W}\rfloor - 0.5))}

其中 hh 是温度参数,W~=(W−α)/(β−α)\tilde{W} = (W - \alpha) / (\beta - \alpha)

公式4:LWC损失函数

LLWC=∥F(W,X)−F(W^q,X)∥F2\mathcal{L}_{LWC} = \| F(W, X) - F(\hat{W}_q, X) \|^2_F

优化 α\alpha(下界)、β\beta(上界)和软舍入参数 hh

公式5:LET线性层变换

对于线性层 Y=XWY = XW,LET应用通道级缩放 SS 和偏移 TT: Y=(X⋅diag(S)+T)⋅W=X⋅(diag(S)⋅W)+T⋅W=X⋅W′+T⋅WY = (X \cdot \text{diag}(S) + T) \cdot W = X \cdot (\text{diag}(S) \cdot W) + T \cdot W = X \cdot W' + T \cdot W

其中 SS 和 TT 是逐通道可学习向量。变换是数学等价的——改变输入分布使其更适合量化。

公式6:LET注意力操作变换

对于注意力机制,LET在计算注意力前对Q和K应用缩放: Attention(Q,K,V)=softmax(Q⋅diag(Sq)⋅diag(Sk)T⋅KTd)⋅V\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{Q \cdot \text{diag}(S_q) \cdot \text{diag}(S_k)^T \cdot K^T}{\sqrt{d}}\right) \cdot V

这等价于将注意力logits缩放 Sq⋅SkS_q \cdot S_k

公式7:LET联合损失

LLET=∥F(W,X)−F(Qw(W′),Qa(X′))∥F2\mathcal{L}_{LET} = \| F(W, X) - F(Q_w(W'), Q_a(X')) \|^2_F

其中 W′W' 和 X′X' 是应用等价变换后的权重和激活

激活量化公式(逐token)

Qa(X)=Round(Clamp(X/sa+za))Q_a(X) = \text{Round}(\text{Clamp}(X / s_a + z_a)) 其中 sa=(max⁡(X)−min⁡(X))/(2b−1)s_a = (\max(X) - \min(X)) / (2^b - 1) 逐token计算

算法流程

Algorithm 1: OmniQuant整体算法

输入: 预训练模型, 校准数据 (128样本)
输出: 量化模型

1. 初始化可学习参数 (LWC的α,β,h; LET的S,T)
2. 逐块优化:
   for 每个Transformer块:
       for epoch = 1 to 20:
           使用SGD/AdamW优化可学习参数
           最小化块级量化误差
3. 变换模型:
   应用学到的S,T变换权重
   使用学到的α,β执行量化

四、核心创新

创新点说明效果
LWC可学习权重裁剪,梯度优化阈值极低位权重量化可用
LET可学习等价变换,缩放+偏移解决激活异常值问题
块级优化逐层顺序优化高效训练,128样本即可
参数融合所有可学习参数可融合推理零额外开销
统一框架同时支持weight-only和weight-activation覆盖所有量化设置

与现有方法的关键区别:

方法操作目标优化方式
SmoothQuant仅缩放Weight-Activation预定义迁移强度
AWQ仅缩放Weight-only网格搜索
OS+缩放+偏移Weight-Activation网格搜索
OmniQuant缩放+偏移两者皆可端到端梯度下降

五、实验结果

实验设置

配置详情
模型LLaMA-1 (7B-65B), LLaMA-2 (7B-70B), OPT (125M-66B), Falcon-180B
量化设置W4A16, W3A16, W2A16, W6A6, W4A4
评估WikiText2困惑度, 6个零样本任务
基线RTN, GPTQ, AWQ, SmoothQuant, OS+, RPTQ, LLM-QAT
训练单卡A100-40G, 128样本, 20 epochs

权重量化结果(Weight-only)

WikiText2困惑度(越低越好):

W4A16配置:

方法7B13B30B65B2-7B2-13B2-70B
FP165.685.094.103.535.474.883.31
RTN6.435.554.573.876.115.203.67
GPTQ6.135.404.483.835.835.133.58
AWQ6.085.344.393.766.155.12-
OmniQuant5.865.214.253.715.745.023.47

W3A16配置:

方法7B13B30B65B2-7B2-13B2-70B
RTN25.7311.3914.9510.68539.4810.687.52
GPTQ8.066.765.845.068.376.444.82
AWQ11.887.4510.075.2124.0010.45-
OmniQuant6.495.684.744.046.585.583.92

W2A16配置(极端低位):

方法7B13B30B65B2-7B2-13B2-70B
RTN1.1e56.8e42.4e42.2e43.8e45.6e42.0e4
GPTQ2.1e35.5e3499.7555.917.7e32.1e377.95
OmniQuant15.4713.218.717.5837.3717.217.81

关键发现:

  • W2A16下GPTQ困惑度>5000,OmniQuant仅~15
  • W4A16下OmniQuant接近FP16性能(5.86 vs 5.68)

权重-激活量化结果

LLaMA-7B零样本任务准确率:

配置方法PIQAARC-eARC-cBoolQHellaSwagWinogrande平均
FP16-77.4752.4841.4673.0873.0066.9364.07
W6A6SmoothQuant77.0450.0039.0872.4472.3167.1763.01
W6A6OS+77.2050.6339.5970.5872.4366.6162.84
W6A6OmniQuant77.2051.5640.7073.0872.8067.0963.74
W4A4SmoothQuant52.9625.9221.7637.8227.6049.7235.96
W4A4OS+57.6725.5824.2338.4629.3649.8837.53
W4A4RPTQ63.8932.9625.6855.8143.5052.2545.68
W4A4LLM-QAT65.5236.9526.7160.3749.5252.8048.65
W4A4OmniQuant71.8148.0235.9273.2766.8159.5159.22

关键结果:

  • W4A4下OmniQuant超越LLM-QAT +10.57%
  • W6A6下OmniQuant接近FP16(63.74% vs 64.07%)

指令微调模型量化

Vicuna-Bench对比

Figure 4: W3A16g128量化在Vicuna-Bench上的胜率对比

LLaMA-2-chat模型W3A16g128量化:

  • RTN vs OmniQuant:7b-chat胜率80.3%,13b-chat胜率69.4%
  • AWQ vs OmniQuant:一致或更优

实际设备部署加速

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

配置7B权重7B运行内存7B tok/s13B权重13B tok/s30B权重30B tok/s65B权重65B tok/s
FP1612.6G14.4G69.224.3G52.560.6G23.9OOM-
W4A16g1283.8G5.7G134.27.0G91.316.7G43.633.0G24.3
W3A16g1283.2G5.1G83.45.8G57.613.7G29.027.0G15.2
W2A16g1282.2G4.1G83.94.0G92.69.2G36.718.0G24.8

关键发现:

  • W4A16g128:1.94倍加速(7B),内存减少3.3倍
  • LLaMA-65B FP16在单卡OOM,量化后轻松运行
  • W2A16g128在13B上甚至比W3A16更快(92.6 vs 57.6 tok/s)

训练效率

模式7B13B30B65B
Weight-only1.1h2.2h4.5h8.9h
Weight-activation1.6h3.3h7.3h14.4h

对比:

  • GPTQ:~5倍更快
  • LLM-QAT:数百GPU小时 vs OmniQuant的1-16小时
  • 仅需128个校准样本,16个即可收敛

消融实验

组件效果(LLaMA-7B W4A4):

方法平均困惑度平均准确率
SmoothQuant28.7838.41
LET16.9748.83
LET + 网格搜索WC15.8249.59
SmoothQuant + LWC15.8050.15
LET + LWC12.8752.65

组件必要性(LLaMA-13B困惑度):

配置W4A4W3A16
LWC+LET10.875.65
-LWC20.757.65
-LET5.4e35.68
-LWC-LET1.8e310.68

关键洞察:

  • LET对weight-activation量化(尤其W4A4)至关重要——解决激活异常值
  • LWC对极低位权重量化至关重要——调制权重极值
  • 两者互补,组合效果最佳

激活分布可视化

激活可视化

Figure 6: OPT-13B线性层激活可视化:(a)原始 (b)SmoothQuant后 (c)LET后

LET比SmoothQuant更有效地处理激活异常值。

裁剪尺度可视化

裁剪尺度

Figure 5: LLaMA-7B不同量化设置下学到的裁剪尺度可视化

位宽缩放定律

缩放定律

Figure 8: 困惑度的位宽缩放定律

六、相关工作对比

方法类型优化方式位宽支持训练开销
GPTQPTQ块级重建W4A16+低
AWQPTQ网格搜索W4A16+低
SmoothQuantPTQ预定义W6A6/W4A4无
LLM-QATQAT端到端W4A4极高
OmniQuantPTQ+梯度优化全部低

OmniQuant的独特优势:

  • 首个在PTQ效率下实现QAT性能的方法
  • 同时支持weight-only和weight-activation量化
  • 覆盖从W2A16到W4A4的所有设置
  • 128样本、1-16小时、单卡A100

七、总结

核心贡献

  1. LWC:可学习权重裁剪,通过梯度下降优化裁剪阈值
  2. LET:可学习等价变换,通道级缩放+偏移迁移量化难度
  3. 统一框架:同时支持weight-only和weight-activation量化
  4. 高效训练:128样本、1-16小时、单卡A100-40G
  5. 零推理开销:所有可学习参数可融合到量化权重中

性能指标

指标数值
W4A16困惑度接近FP16(5.86 vs 5.68)
W4A4准确率超越LLM-QAT +10.57%
W2A16困惑度15.47(GPTQ: 2100+)
推理加速最高1.94倍
内存减少最高3.3倍
训练时间1-16小时
训练样本128个

技术影响

  • 首次证明PTQ可以达到QAT性能
  • 极低位量化(W2A16)成为可能
  • 为LLM在边缘设备部署提供实用方案
  • 代码开源,易于复现和扩展

八、关键图片索引

图片说明文件名
Figure 1性能概述对比figure1-performance-overview.png
Figure 2资源特性概览figure2-characteristics.png
Figure 3架构详情figure3-architecture-detail.png
Figure 4Vicuna-Bench对比figure4-vicuna-bench-comparison.png
Figure 5裁剪尺度可视化figure5-clipping-scale-visualization.png
Figure 6激活分布可视化figure6-activation-visualization.png
Figure 8缩放定律figure8-scaling-laws.png

九、参考资源