量化:权重、激活与 KV cache
推理的两大瓶颈都是"字节":带宽(每 token 读一遍权重,见 Roofline)与显存(权重 + KV cache)。量化把字节砍半再砍半——FP16→INT8:带宽显存减半、算力翻倍;INT8→INT4:再减半。但每砍一刀都在重新定价精度风险。本章讲清楚量化的几条路线、各自的取舍、以及选型方法。
量化买什么:三笔账
Section titled “量化买什么:三笔账”以 70B 模型、H100 为例,不同精度的三笔账:
| 精度 | 权重 | 单请求解码上限(3.35 TB/s) | 显存(权重+KV 20GB) |
|---|---|---|---|
| FP16 | 140 GB | 24 tokens/s | 160 GB |
| FP8/INT8 | 70 GB | 48 tokens/s | 90 GB |
| INT4 | 35 GB | 96 tokens/s | 55 GB |
每一刀同时改善三样:带宽省一半(解码快一倍)、显存省一半(并发上限翻倍)、算力翻倍(FP8 Tensor Core)。这就是量化在推理侧如此重要的原因。
一、训练后量化(PTQ):量化已有的模型
Section titled “一、训练后量化(PTQ):量化已有的模型”不重新训练,直接对训练好的模型量化。按粒度与校准方式分:
| 方法 | 代表 | 精度损失 | 适用 |
|---|---|---|---|
| 简单 PTQ(per-tensor/per-channel) | 直接 int8 | 小到中 | 对延迟敏感、可接受小幅损失 |
| 校准 PTQ | GPTQ、AWQ、SmoothQuant | 小 | 主流选择:AWQ/GPTQ 的 4bit |
| 极限 PTQ | AWQ/GPTQ 的 3bit、2bit | 明显 | 显存极限场景 |
- GPTQ:基于 Hessian 的逐层量化误差最小化,GPU 推理友好
- AWQ:保护"重要权重"(按激活分布加权),4bit 精度损失小,当前 4bit 的默认选择
- SmoothQuant:把激活的离群值"平滑"到权重上,解决激活量化的离群值难题(W8A8)
二、量化感知训练(QAT):训练时就量
Section titled “二、量化感知训练(QAT):训练时就量”训练过程中模拟量化(前向量化、反向用直通估计器),精度损失最小,但要重新训练——成本高,适合对精度极致要求的场景(端侧、多模态)。工程上 PTQ(AWQ/GPTQ)已覆盖 90% 的需求。
三、FP8:硬件原生路线
Section titled “三、FP8:硬件原生路线”INT8 是"纯整数"路线(反量化后算 FP16);FP8 是硬件原生路线(Tensor Core 直接算 FP8,见混合精度与 FP8):
- 优点:不用反量化(Tensor Core 原生 FP8 矩阵乘)、动态范围像浮点(对离群值友好)、H100/B200 算力翻倍
- 缺点:需要较新的硬件(Hopper 起);权重量化仍需缩放
- FP8 是"新的 INT8",硬件支持决定路线——Hopper 之前 INT8/INT4,Hopper 之后 FP8/FP4
量化什么:权重、激活、KV
Section titled “量化什么:权重、激活、KV”| 对象 | 收益 | 方法 | 风险 |
|---|---|---|---|
| 权重 | 带宽显存双省(最大头) | AWQ/GPTQ 4bit | 小(已被充分研究) |
| 激活 | 算力(FP8 原生) | SmoothQuant、FP8 动态缩放 | 离群值是坑(W8A8 难) |
| KV cache | 并发上限翻倍(见 KV) | FP8/INT8 KV | 长程注意力退化,要抽测 |
权重量化是最安全的第一步(收益最大、风险最小);激活与 KV 量化收益真实但风险更高,按需上。
| 场景 | 推荐 |
|---|---|
| A100 级硬件,延迟敏感 | INT8(SmoothQuant)或 FP16 |
| H100+,延迟敏感 | FP8 权重+激活(原生算力翻倍) |
| 显存极限(塞大模型) | AWQ/GPTQ 4bit |
| 高并发服务 | 权重 4bit/8bit + KV FP8(并发上限翻倍) |
| 精度极致 | FP16/BF16 不量化 |
验证永远是必经之路:量化后用真实下游任务(不是 perplexity 一个数)评测——perplexity 涨 1% 的量化,在代码生成/数学任务上可能跌 10%。多任务评测是量化的验收标准。
- 校准数据:PTQ 的校准集要贴近真实分布(用你自己的数据,几百条就够)——通用校准集在你领域外的分布上误差更大
- 工具链:vLLM/SGLang 直接支持 AWQ/GPTQ/FP8 checkpoint(见服务框架);TensorRT-LLM 的量化路径与 NVIDIA 硬件绑定更深
- 在线 vs 离线:权重量化离线做(一次性);KV/激活量化在线做(每步动态缩放,开销小但要监控)
- 混合精度兜底:敏感层(第一层/最后一层、LM head)保持 FP16 的混合量化是常见工程技巧
- 量化同时改善带宽、显存、算力三笔账:FP16→INT8 解码快一倍,INT4 再快一倍。
- 三路线:PTQ(AWQ/GPTQ,主流)、QAT(精度极致)、FP8(硬件原生,Hopper+)。
- 权重量化最安全收益最大;激活的离群值与 KV 的长程退化是两个真实风险点。
- 选型看硬件与瓶颈:H100+ 延迟敏感用 FP8,显存极限用 4bit,高并发加 KV 量化。
- 验收用真实下游任务多维度评测,perplexity 一个数不够。
- KV Cache 与 PagedAttention — KV 量化的对象
- 混合精度与 FP8 — 上一卷:FP8 的训练侧
- 算术强度与 Roofline — 量化收益的数学根据
- 服务框架对比 — 量化模型的部署载体