系列:算子讲解手记

算子讲解手记(二):模型量化部署——从 FP16 到 FP4 的精度压缩谱系

0. 一句话主线

模型量化是”用精度换显存/带宽/算力”的艺术——它和蒸馏(用容量换体积)是正交的两件事,可以叠加(先蒸馏小模型再量化部署)。本篇把之前散落在每日追踪里的 FP8/INT4/FP4/KV Cache 量化串成一条完整谱系,落到 vLLM/SGLang 与推测解码的真实部署。

1. 精度谱系与压缩比

精度位宽相对 FP16 压缩典型损失主战场
FP16 / BF16161×基准训练、高保真推理
FP8 (E4M3 / E5M2)82×~0.3%权重+激活、KV Cache
INT882×略高于 FP8边缘、老硬件
INT4 (混合)44×~0.5%端侧/板载部署
FP444×需 QAT 补偿下一代训练/推理

2. 训练后量化(PTQ):不发梯度的压缩

PTQ 在已训模型上直接量化,核心是”怎么分配缩放因子”:

旋转量化(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:

4. KV Cache 量化与驱逐:长上下文的显存救命线

长上下文推理的主要瓶颈不是算力而是 KV Cache 显存。两条正交路径:

5. 落地到推理引擎与推测解码

6. 部署选型清单

  1. 先定位瓶颈:显存墙 → KV Cache 量化/驱逐;带宽墙 → 权重 INT4/AWQ;算力墙 → FP8 前向。
  2. 精度优先 FP8(2×、~0.3% 损失),端侧/板载再下探 INT4(AWQ,4×)。
  3. FP4 必须配 QAT,否则只适合对掉点极不敏感的场景。
  4. 长文本选 E5M2、代码/数学选 E4M3。
  5. INT2 以下基本不可用,别为了噱头牺牲可用性。

串起来看:蒸馏缩容量、量化压精度、KV 驱逐砍长度、分层缓存(HiSparse)把三者放进同一显存预算——这就是今天把 70B+ 模型塞进单卡长上下文服务的完整工具箱。

注:本文整合自 2026-07-18(KV Cache 量化与驱逐)、2026-08-01(FP8/INT4 部署)、2026-08-04(FP4 QAT)的每日技术追踪,重写为系统化版本。

觉得有用?欢迎点赞、收藏,或请作者喝咖啡 ☕️

支付宝收款码

支付宝

微信收款码

微信

💬 留言

评论由 Giscus 驱动(基于 GitHub Discussions)。 当前仓库 NaphJohn/LLM-blog 尚未启用 Discussions:请在 GitHub 仓库 Settings → General → Features 勾选 Discussions 后刷新本页,评论区即自动显示。