量化实践:精度-速度-显存权衡与回退策略
一句话定义
量化落地是一套决策流程:先定精度底线与显存目标,再选格式与方法,量化后必须用任务级指标验收,掉点时按固定回退阶梯逐级加保,而不是凭感觉换方案。
为什么重要
"量化了"不等于"能上线"。同一模型同一方法,换业务分布、换上下文长度、换引擎实现,结果都可能不同。只有把权衡写成流程与数字,量化决策才可复现、可审计——这是从"会用工具"到"工程师"的分水岭。
前置知识
- 困惑度(perplexity)与任务指标(准确率/F1/人工评审)的区别。
核心概念
- 三个决策变量:量化档位(W8/W4/W3,决定显存与带宽收益)、量化方法(AWQ/GPTQ,决定误差水平)、验收口径(PPL + 任务指标 + 长文本,决定能否上线)。
- 一条铁律:一次只改一个变量。档位、方法、校准集、KV 精度同时改动时,结果不可归因也不可回退。
- 回退阶梯:收紧分组 → 换方法 → 敏感层保 FP16 → 升回 W8。逐级执行并复测,而不是推翻重来。
实践步骤(可执行操作)
- 定底线:与业务约定"任务指标跌幅 ≤ x%"(如准确率掉 2 分以内);同时记录 FP16 基线:PPL + 任务集 + 长文本样例(4k/16k)各跑一遍。
- 算目标:用 kp-004 账本确认选档——显存缺口 < 2 倍选 INT8/W8,≥ 2 倍选 W4,端侧资源极紧才考虑 W3/W2。
- 选方法:默认 W4A16-G128;求稳/快选 AWQ,调优空间大选 GPTQ(开 act-order);硬件支持 FP8 的 Hopper 以上且追求服务端极限可评估 W8A8-FP8。
- 备校准集:512 条目标域真实样本(含典型长输入),不要全部用通用语料。
- 量化并验收:重跑第 1 步的三件套;必测长文本——量化伤害在长生成与检索型长上下文上更明显。
- 记录并冻结:写清方法/分组/校准集哈希/引擎版本,量化产物与基线数字一起归档。
原理与机制
权衡的物理来源很清楚:W4 把权重字节 ÷4,decode 单步时间(≈权重字节÷带宽)的收益上限随之而定,实际再被 kernel 反量化开销与调度折损吃掉一部分;误差则来自网格粗化,靠分组与误差反馈压回。速度收益集中在 decode、显存收益全局有效、精度损失随上下文长度累积——三者不共线,所以必须分别测量、分别验收,不能用单一指标代言。
权衡参考表(经验值,需自行验证)
| 档位 | 典型 PPL 变化 | decode 速度 vs FP16 | 适用 |
|---|---|---|---|
| INT8/W8A16 | < 1% | 1.1–1.4× | 显存刚够、精度敏感 |
| W4A16-G128(AWQ/GPTQ) | 1–5% | 1.5–2.5× | 生产默认 |
| W4 + KV INT8 | 2–6% | 1.5–2.5×(并发更高) | 长上下文高并发 |
| W3/W2 | > 10%,易崩 | — | 仅端侧极限场景+重蒸馏 |
排错清单
- PPL 涨幅大:检查分组粒度(g128→g64)→ 换方法(AWQ↔GPTQ)→ 对首末层与 lm_head 保留 FP16(混合精度兜底)→ 仍不行则升 W8。
- 长文本输出变差/重复:常见于激进档位 + KV 也量化;先恢复 KV 为 FP16 再评估。
- 输出乱码/全是生僻词:多半是 scale/零点错位或引擎与权重量化格式不匹配(如 GGUF 档位与加载器版本),换引擎版本验证。
- 速度没涨:确认 bottleneck 在 decode(kp-003);W4A16 对 compute-bound 的 prefill 提升有限,属预期。
实例或案例
某团队把 14B 客服模型从 FP16 迁到 AWQ W4-G128:显存 28GB → 约 8GB,单卡并发 8 → 28,困惑度 +2.1%,常规客服任务指标持平;但 16k 长文档问答下降 1.5 分。按回退阶梯仅把 KV Cache 恢复 FP16 后,长文任务回到 0.5 分以内,吞吐保留约 90%——一个典型的"整体量化 + 局部回退"落地方案。
常见误区
- "INT4 速度是 4 倍":受 kernel 反量化开销限制,实测常见 1.5–2.5 倍。
- 只测 PPL 就拍板:PPL 与下游任务相关性并不总强,任务级验收不可省。
- 校准集用通用语料蒙混:业务分布偏移是量化掉点的第一大原因。
- 量化与 KV 压缩同时上:误差叠加,应一次只改一个变量(kp-027 方法论)。
自测题
- 业务要求准确率跌幅 ≤2 分,W4 掉了 4 分,按本页流程怎么走?
要点:换方法/收紧分组 → 敏感层保 FP16 → 仍超线则升 W8,全程只改一个变量并复测。
- 为什么验收必须包含长文本用例?
要点:量化误差随上下文累积,长生成/长检索是其暴露面。
- W4A16 为什么对 prefill 提速有限?
要点:prefill 是计算密集,FLOPs 不变;量化收益集中在访存密集的 decode。
与其他知识点的关系
kp-012 把量化嵌入压缩流水线的位置;kp-022 演示加载量化模型的引擎参数;kp-026 是端侧的对应实践(GGUF 档位选择)。
延伸阅读
《QLoRA》(Dettmers 等,2023)附录中的量化评测方法学(含 nf4 数据格式思想)值得借鉴。