9. 最佳实践
按「动手前—管线中—部署前—上线后」四个阶段组织的清单,每条附一句为什么。
动手前
- 先查社区官方量化版,再决定自研。Red Hat AI / vLLM 项目、模型厂商官方账号持续发布生产级 checkpoint(带完整评估报告);自研 recipe 的隐性成本(校准、评估、维护)常被低估。
- 验收标准先行。写下「ppl 劣化阈值 + 业务指标降幅阈值 + 吞吐提升目标」三件套再动手;没有标准的量化项目会在「精度好像还行」里无限纠结。
- 校准集按线上分布构造。域匹配 > 规模;包含真实 prompt 模板、多轮历史、长上下文样例;128~1024 条 × 2048~4096 token 是经验甜点。为什么:Mini Demo 场景 3 已展示,离群通道决定 scale,而离群通道由数据分布决定。
管线中
- INT4 一律 group-wise(g=128 起步),禁用 per-tensor。INT4 per-tensor 误差近 20%(Mini Demo 场景 1),任何任务都过不了门禁。
- 对称 vs 非对称按数据符号性选。近似零均值的数据(权重、部分激活)用对称(省 zero-point 存储);明显偏置的数据(ReLU 后激活)非对称更准。
- scale 用 FP16 存储,FP32 计算。计算精度决定量化质量,存储精度决定显存——两头都要。
- 敏感层默认豁免:embedding、lm_head( tied 权重注意一致性)、首层与末层线性保持 FP16/FP8。成本占比小、精度影响大,是性价比最高的回炉旋钮。
- 同一校准集上批量对比 AWQ / GPTQ / AutoRound,用评估门禁挑赢家而不是凭论文印象——校准分布不同,赢家会变。
- MoE 模型按层类型混合精度:专家层 INT4(专门化+稀疏,鲁棒)、共享专家与注意力层 FP8——比全模型统一位宽精度高、显存差别不大。
- 压缩后立即做权重级 sanity check(秒级):逐层 rel L2、scale 分布、豁免层是否生效——80% 的配置错误在这一步暴露,不要等 ppl 跑完。
部署前
- 核对引擎支持矩阵再封装:格式合法 ≠ kernel 存在 ≠ 你的 GPU 代际可用(Turing 无 Marlin MXFP4、Hopper 无 FP4)。以引擎官方文档/release note 为准。
- 部署端抽样复测精度:压缩端 → 封装端 → 引擎加载的每一步都有舍入,端到端抽样跑一次业务 eval 确认无损。
- 压测报告要分阶段:prefill(算力瓶颈,W4A16 收益小)与 decode(带宽瓶颈,收益大)分开报,避免平均值掩盖 TTFT 回退。
- 量化配置写进模型卡片:bits、粒度、对称性、校准集版本、recipe、评估报告——复现与回滚的生命线。
上线后
- 监控精度代理指标:线上抽样比对量化版与 FP 版的输出分布(KL/embedding 距离),设置漂移告警——上游数据分布变化会先体现在这里。
- 校准集随业务迭代:新功能上线 = 新分布出现 = 旧统计量过期;把「校准集更新」挂进功能上线的 checklist。
- 保留一键回退:网关常驻上一稳定版本路由;KV 量化独立灰度,可先「热 FP16、冷 FP8」分层过渡。
- 定期重估格式红利:硬件升级(如迁到 Blackwell)后重新跑选型决策树——NVFP4 的原生支持可能让旧 INT4 方案立即过时。
反模式清单
- 用「权重量化后 cos 相似度」单独验收——GPTQ 的输出误差与权重范数可能反向变化(Mini Demo 场景 4);
- 用通用语料校准垂直领域模型——比算法选错更伤精度;
- 激活离群不分析就直接上 W8A8——先跑一遍激活统计(逐通道 max),离群严重先 SmoothQuant;
- 量化与投机解码/MoE 并行策略不联调——低精度 kernel 与投机采样 kernel 的资源竞争可能吃掉理论收益。