0. 一句话主线
模型量化是”用精度换显存/带宽/算力”的艺术——它和蒸馏(用容量换体积)是正交的两件事,可以叠加(先蒸馏小模型再量化部署)。本篇把之前散落在每日追踪里的 FP8/INT4/FP4/KV Cache 量化串成一条完整谱系,落到 vLLM/SGLang 与推测解码的真实部署。
1. 精度谱系与压缩比
| 精度 | 位宽 | 相对 FP16 压缩 | 典型损失 | 主战场 |
|---|---|---|---|---|
| FP16 / BF16 | 16 | 1× | 基准 | 训练、高保真推理 |
| FP8 (E4M3 / E5M2) | 8 | 2× | ~0.3% | 权重+激活、KV Cache |
| INT8 | 8 | 2× | 略高于 FP8 | 边缘、老硬件 |
| INT4 (混合) | 4 | 4× | ~0.5% | 端侧/板载部署 |
| FP4 | 4 | 4× | 需 QAT 补偿 | 下一代训练/推理 |
- BF16 vs FP16:BF16 指数位多、动态范围大,训练更稳;FP16 尾数更细但易溢出。
- FP8 两种格式:
E4M3(4 指数 3 尾数,适合权重/激活,代码数学友好)vsE5M2(5 指数 2 尾数,动态范围大,适合长文本/多语言)——选型直接决定掉点。
2. 训练后量化(PTQ):不发梯度的压缩
PTQ 在已训模型上直接量化,核心是”怎么分配缩放因子”:
- RTN(舍入最近):逐元素 round-to-nearest,最快但大激活通道易被压坏。
- GPTQ:逐层 OBS 风格二阶量化——量化某列时用 Hessian 补偿其余列,最小化 ‖WX − ŴX‖²。适合 GPU 上逐层离线压缩。
- AWQ(激活感知):先算激活显著性 s = mean(|X|)^α,给重要通道”放大权重”再量化,几乎零额外开销,对大激活通道保真极好。是当前 LLM 端侧部署主流。
- per-group 量化:
group_size=128是工业界默认粒度,在细粒度保真和查找表开销间取得平衡。
旋转量化(rotation-based outlier suppression)——PTQ 的前沿支线。 它的数学支点来自线性变换的「旋转不变性」:对任意正交矩阵 R(满足 R⁻¹=Rᵀ),有 XW = (XR⁻¹)(RW)。把权重 W 左乘 R、激活 X 右乘 Rᵀ,乘积不变,但数值分布被「搅匀」了——原本集中在少数通道的**激活异常值(outlier)**被摊平,4-bit 量化不再被 outlier 撑爆动态范围,这是把 W4A4 推到可用的关键。
- QuaRot(NeurIPS 2024):用随机化 Hadamard 变换生成正交旋转,在权重、激活、KV Cache 三条线同时施加 R1~R4 四级旋转,首次在 LLaMA-2/3 上做到 W4A4KV4(4-bit 权重 + 4-bit 激活 + 4-bit KV)近乎无损,且无需训练、即插即用。
- SpinQuant(arXiv:2405.16406):把旋转从「随机固定」升级为「可学习」——在 Stiefel 流形上用 Cayley SGD 优化旋转矩阵,让旋转同时适配权重与激活分布。在 LLaMA-3 上全面超越 QuaRot,最高多挽回 45.1% 的精度损失,并顺带把位置编码(RoPE)也纳入旋转优化。
- DuQuant:旋转之外再叠加「通道置换(channel permutation)」,进一步把 outlier 打散到相邻通道,W4A4 下比 SpinQuant 更稳。
落地提示:旋转量化与 AWQ/GPTQ 正交——AWQ 保 salient 通道、GPTQ 二阶补偿、旋转派抹平 outlier,三者可叠加(先旋转再 AWQ),是今天 4-bit 端侧推理可用的关键拼图。
VLA 实战:OpenVLA 做 INT4 量化后约 4GB,成功率近乎无损,可在 Jetson Orin 上跑,给感知/规划/控制栈留出余量——这是”大模型进物理世界”的必经之路。
3. 量化感知训练(QAT):把误差放进反向传播
PTQ 到 INT4/FP4 损失开始变大,需要 QAT:
- FP4 QAT(DeepSeek V4 / V4-Flash 路线):对 MoE 的 routed expert 权重和 CSA indexer 的 QK 路径做 FP4 伪量化——训练时伪量化到 FP4 再反量化回高精度计算,采样/rollout 用 native FP4。这样梯度看到的是量化后的真实分布,部署即所见。
- 前置基础:混合精度训练(BF16 AMP)+ FP8 KV Cache。QAT 往往和 Muon 优化器、SwiGLU Clamping 等工程化技巧配合,才能把 4-bit 的掉点压到可用区间。
4. KV Cache 量化与驱逐:长上下文的显存救命线
长上下文推理的主要瓶颈不是算力而是 KV Cache 显存。两条正交路径:
- 量化(压精度):FP16→FP8(E4M3/E5M2) 2× ~0.3% 损失;FP16→INT4 混合(K 对称 + V 非对称)4× ~0.5% 损失;per-group(group_size=128) 主流。
- 驱逐(减 token 数):H2O / ThinKV 等按重要性裁剪缓存,可再砍 3~244×。
- 叠加前沿:RDKV(2026)率失真统一量化+驱逐,2.48% 缓存→97.81% 准确率;ThinKV(ICLR 2026 Oral)思想自适应 KV 压缩,<5% KV 保留近乎无损、5.8× 吞吐。
- 坑:E4M3 vs E5M2 选型、INT2 实用下限、量化+驱逐叠加需调参、H2O 额外 5~10% 计算开销。
5. 落地到推理引擎与推测解码
- vLLM / SGLang:FP8 KV Cache + AWQ 部署是量化在推理引擎的落地点;HiSparse(见本博客 sys6)进一步把 HBM 当缓存、主机 DRAM 存权威全量 KV,是”量化+分层”思路在系统层的延伸。
- 推测解码:量化给投机解码腾出显存余量——KV Cache 压缩后 batch 更大、draft model 可更重,端到端加速更明显。
- 训练侧:Megatron-LM
--fp8-format hybrid+ BF16 AMP 是当前大模型训练的常态配置。
6. 部署选型清单
- 先定位瓶颈:显存墙 → KV Cache 量化/驱逐;带宽墙 → 权重 INT4/AWQ;算力墙 → FP8 前向。
- 精度优先 FP8(2×、~0.3% 损失),端侧/板载再下探 INT4(AWQ,4×)。
- FP4 必须配 QAT,否则只适合对掉点极不敏感的场景。
- 长文本选 E5M2、代码/数学选 E4M3。
- INT2 以下基本不可用,别为了噱头牺牲可用性。
串起来看:蒸馏缩容量、量化压精度、KV 驱逐砍长度、分层缓存(HiSparse)把三者放进同一显存预算——这就是今天把 70B+ 模型塞进单卡长上下文服务的完整工具箱。
注:本文整合自 2026-07-18(KV Cache 量化与驱逐)、2026-08-01(FP8/INT4 部署)、2026-08-04(FP4 QAT)的每日技术追踪,重写为系统化版本。
💬 留言
NaphJohn/LLM-blog尚未启用 Discussions:请在 GitHub 仓库 Settings → General → Features 勾选 Discussions 后刷新本页,评论区即自动显示。