Ch20 推理部署

SmoothQuant: 平滑量化消除激活异常值

一句话理解

SmoothQuant 解决 LLM 量化的核心难题:激活值(activation)中存在少数异常大的值(outlier),这些异常值让 INT8 量化几乎不可用。SmoothQuant 通过数学上等价的”平滑”变换,将量化的难度从激活迁移到权重,使 INT8 量化在几乎不损失精度的情况下可行。

问题背景:为什么激活量化这么难

权重量化 vs 激活量化

LLM 推理的瓶颈在 GPU 显存带宽。量化可以减少模型大小,但传统的量化方法只对权重做 INT8,对激活值仍然保持 FP16——因为激活值太难量化。

维度权重量化 (W8)激活量化 (A8)
值分布均匀、平滑存在极端异常值
量化难度低高
常见方案GPTQ, AWQ, per-channel此前无有效方案
无损量化2023 年已成熟2023 年 SmoothQuant 突破

激活异常值的特征

在 LLM 的激活值中,约 0.1% 的值是异常值——它们的绝对值比 99.9% 的其他值大 100 倍以上。这些异常值出现在固定的通道(channel)上,且位置跨 token 保持一致。

Token 1:  [0.1, 0.2, 0.05, 0.3,  ..., 150.0, 0.4, 0.15]
Token 2:  [0.12, 0.18, 0.06, 0.28, ..., 145.0, 0.42, 0.13]
Token 3:  [0.09, 0.22, 0.04, 0.32, ..., 152.0, 0.38, 0.16]
                                        ↑
                                    异常值出现在同一通道

如果直接对激活值做 INT8 量化,量化因子(scale)会被异常值撑得很大,导致 99.9% 的正常值在量化后全部变成 0 或很小的值,信息完全丢失。

SmoothQuant 的核心思想

数学等价变换

SmoothQuant 利用了矩阵乘法的线性性质:

其中 是激活矩阵(量化困难), 是权重矩阵(量化容易)。

SmoothQuant 引入一个平滑因子(smoothing factor),其中 是通道数:

即:

其中:

  • :激活值被”平滑”了,异常值被缩小
  • :权重被相应放大,但权重原本分布就很均匀,放大了也不影响量化

关键洞察:将量化的难度从激活迁移到权重。权重本身就容易量化,所以放大后仍然可以 INT8 量化。

平滑因子 的计算

平滑因子 对第 个通道的计算方式:

其中 是迁移强度(migration strength),控制将多少量化难度从激活迁移到权重:

  • :激进迁移,激活和权重各承担一半
  • :保守迁移,更多保留在激活侧
  • 论文推荐 作为默认值

SmoothQuant vs ZeroQuant vs LLM.int8()

三种量化方案对比

维度SmoothQuantZeroQuantLLM.int8()
发布时间2023 (ICML)2022 (NeurIPS)2022 (ICML)
核心方法平滑迁移 + INT8per-token + per-channel INT8混合精度分解
激活量化W8A8 (INT8)W8A8 (INT8)异常值 FP16 + 其余 INT8
权重量化INT8 per-channelINT8 per-channelINT8
精度损失几乎无损 (<0.5%)轻微损失 (<1%)完全无损
推理加速1.5-2x1.3-1.7x几乎无加速
硬件兼容通用 GPU需要 custom kernel需要 custom kernel
实现难度低中高

各方案详解

LLM.int8():不改变激活值分布,而是识别出异常值所在的 token 和 feature,对这些异常值使用 FP16 矩阵乘法,其余 99.9% 使用 INT8。优点是数学上完全等价(无精度损失),但缺点是混合精度导致计算效率低——FP16 部分拖慢了整体速度,实际部署中几乎没有加速效果。

ZeroQuant:使用 per-token 量化(每个 token 独立计算 scale)和 per-channel 量化(每个通道独立计算 scale),通过 group-wise 量化进一步细粒度控制。但问题在于,per-token 量化需要一个特殊的 kernel 来实现高效的 INT8 矩阵乘法,部署成本高。

SmoothQuant:不需要特殊的 kernel,不需要混合精度,直接使用标准的 INT8 GEMM。通过数学上等价的平滑变换,在保持精度的同时实现真正的 W8A8 推理加速。这是它最大的实用优势。

2023-2024 量化技术演进全景

技术年份位数核心思路精度保留部署难度代表框架
GPTQ2023W4/W8基于 OBQ 的逐层量化高 (W4 98%+)中AutoGPTQ
AWQ2023W4权重重要性感知量化高 (W4 98%+)低vLLM, TGI
SmoothQuant2023W8A8平滑迁移激活到权重高 (W8A8 99%+)低vLLM, TensorRT-LLM
ZeroQuant2022W8A8per-token + per-channel中 (W8A8 98%+)高DeepSpeed
LLM.int8()2022W8A8混合异常值 FP16 分解完美 (100%)高HuggingFace
QLoRA2023NF44-bit NormalFloat + 双重量化高 (NF4 97%+)低PEFT, bitsandbytes
AQLM20242-bit加法量化 + 码本中 (2-bit 95%+)高学术
QuIP#20242-bit非相干处理 + 矢量量化中 (2-bit 96%+)高学术
HQQ20241-8 bit无数据校准快速量化中低HuggingFace
FP8 (NVIDIA)2024FP8原生 FP8 硬件支持高 (FP8 99%+)极低TensorRT-LLM, vLLM

2026 年:量化的现状

2026 年,量化格局已经清晰分层:

  • W4A16 (AWQ/GPTQ):消费级 GPU 部署的主流方案,4-bit 权重 + 16-bit 激活
  • W8A8 (SmoothQuant/FP8):服务端部署的主流方案,H100/B200 原生 FP8 支持让 SmoothQuant 的软件平滑不再是必须,但 SmoothQuant 的数学洞察仍然影响 FP8 量化方案的设计
  • W2A16 (AQLM/QuIP#):学术前沿,2-bit 量化在特定场景下可用,但尚未成为工业标准
  • FP4:NVIDIA B200 引入原生 FP4 支持,2026 年 QLoRA 的 NF4 和原生 FP4 开始融合

SmoothQuant 的核心贡献不是具体算法,而是**“将量化难度从激活迁移到权重”的数学洞察**——这个洞察影响了后续所有 W8A8 方案的设计思路。

相关笔记

来源

关联8

知识图谱

局部图谱 · 点节点跳转