Quantization

用低精度数值表示权重 / activation / KV cache,以大幅降显存 + 提算力为目标。FP16→INT8 2× 省,INT4 4× 省;Hopper / Blackwell 的 tensor core 对 FP8 / MXFP4 有原生支持,算力直接翻倍。核心难点是怎么在精度损失可控的前提下量化——不同对象(权重 / activation / KV)、不同粒度(per-tensor / per-channel / per-group / per-token)、不同时机(PTQ / QAT)有完全不同的方法论。

基本分类

按对象

量化对象难度典型方案
Weight-only (W8, W4)容易,可离线GPTQ, AWQ, HQQ
Activation难,动态分布 outlierSmoothQuant, LLM.int8()
KV cache中等,影响长度/带宽KIVI, KVQuant
Gradient (训练时)难,反向误差累积FP8 训练(Hopper/Blackwell)

按粒度

  • per-tensor:整张权重共享一个 scale,最粗
  • per-channel:每输出通道独立 scale,标准做法
  • per-group:每 g 个元素(如 128)共享 scale,W4 下常用
  • per-token:activation 按 token 维度动态 scale

按时机

  • PTQ (Post-Training Quantization):训练完再量化,用小 calibration set 估 scale
  • QAT (Quantization-Aware Training):训练中就模拟量化误差,精度好但成本高
  • Mixed-precision training:FP8 权重 + FP16 master copy,Hopper 世代的主流训练方式

LLM 推理里的典型组合

配置含义收益
W4A16INT4 权重、FP16 activation显存 4×、算力仍 FP16(matmul 先 dequant)
W8A8 INT权重和 activation 都 INT8算力 2×(若 tensor core 支持 INT8)
FP8 (E4M3 / E5M2)Hopper / Blackwell 原生算力 2×、数值范围比 INT8 大
MXFP4 / NVFP4Blackwell 的 4-bit 浮点算力 4×、首个真正好用的 4-bit 训练精度

系统视角

  • Dequant kernel 融合:W4A16 需要在 matmul kernel 里先把 W4 上投到 FP16 再乘,融合得好算力开销可忽略
  • KV cache 量化:每 token 存更少 bits → 更长 context / 更大 batch,但 attention 要能接受量化 K/V
  • Outlier 处理:activation 里少数 channel 的数值远大于其他(Ferrari tail),需要 SmoothQuant 式重分配 scale 到权重
  • 量化感知调度:不同层对精度敏感度不同,Hawkeye-MLSys26 / MixLLM-MLSys26 这类工作做 per-layer 混合精度

引用本概念的论文

相关概念