← 返回题目列表

量化上线前回归测试应该覆盖什么?

中等 第 22 / 25 题 更新于 2026/09/25
量化回归发布门禁低比特部署灰度测试
学习 AI 实战项目

简化版

量化回归不能只看平均困惑度或通用榜单,要同时验证任务质量、长尾、安全、格式/工具、长上下文、数值稳定和目标硬件性能。测试对象必须是真正导出的低比特模型与生产 Kernel,而不是训练中的 Fake Quant。

采用 FP16 基线做配对比较,按语言、任务、长度、风险和硬件分桶;设置平均退化、关键切片和安全红线。性能覆盖 TTFT、TPOT、吞吐、峰值显存、功耗、冷启动及不同 Batch,并检查是否出现慢速 Kernel 回退。

详细版

export -> artifact validation -> numerical sanity
       -> task/long-tail/safety regression
       -> hardware benchmark -> soak/canary -> rollback gate
测试层关键项
产物位宽、Scale、Shape、模型哈希
数值NaN/Inf、Logit/KL、层误差
质量任务成功、事实、校准、长尾
结构化JSON、代码、工具调用
性能TTFT/TPOT、吞吐、显存、功耗
稳定长跑、并发、OOM、版本兼容

关键样本用相同输入和解码配置配对比较,生成任务可多 Seed;上线先影子和小流量灰度,按 quant_config 记录指标并保留高精度回滚。

完整版教学

一、先验证量化产物

测试对象必须是最终导出的权重、配置和 Kernel 组合,而不是训练框架中的 Fake Quant 模型。首先核对各层位宽、Scale、Zero Point、分组大小和累加类型,并用固定输入比较中间张量,防止导出时静默回退到 FP16 或采用了不同的舍入规则。

还应记录模型文件大小、峰值显存和算子 Trace;如果声称 INT4 却既没有体积变化也没有低位算子,后续质量分数再好也不能证明量化部署成功。

检查模型版本、位宽、Group Size、对称性、Scale/Zero Point、混合精度层和 Tokenizer 是否符合 Manifest。

错误导出可能仍能加载并生成文本,却实际回退 FP16 或使用错误布局。

二、为什么要测真实 Kernel

Fake Quant 模拟数值误差,不代表部署引擎的舍入、饱和和算子融合完全一致。

加载导出产物后记录实际 Kernel 与数据类型,防止不支持的算子静默回退。

还要对比引擎启停优化前后的数值和性能;某些融合 Kernel 具有自己的累加精度与约束,可能只在特定 Shape 生效。

三、数值健全性检查

用固定样本比较层输出、Logits、KL、TopK 重合和 NaN/Inf,快速定位异常层。

relative_error = ||y_quant - y_fp|| / max(||y_fp||, epsilon)

数值差异是诊断信号,不直接等于业务质量。

四、通用任务质量

用与浮点基线相同的固定题集比较准确率、生成质量和逐样本差异,并按任务类型拆分,避免平均分掩盖代码、数学或多语言回归。开放生成既看自动指标,也抽检事实性、指令遵循和格式稳定性;不能只用困惑度代替下游能力。

例如总体准确率从 78.4% 降到 78.0% 看似可接受,但数学切片从 71% 降到 62%,就应阻止发布或为该模块保留更高精度。门槛必须在看结果之前确定,并报告置信区间和失败样本。

覆盖语言理解、生成、推理、领域任务和真实业务 Golden Set,固定 Prompt、Tokenizer 与解码参数。

报告平均值与置信区间,并与 FP16 做样本级差异,定位新增失败而非只看总分。

五、长尾切片

测试小语种、专业术语、稀有意图、长输入、复杂推理和历史线上失败。每个关键切片设独立门槛。

平均提升不能抵消某个合规或高价值场景大幅下降。

六、安全与校准

测提示注入、有害请求、隐私、越权、漏拒与过拒;比较拒答边界是否因 Logit Margin 扰动而移动。

同时测置信度/校准,因为量化可能保持准确率却让概率更过度自信。

安全测试使用固定红队集和线上新攻击切片,严重违规按绝对数量与比例双重门槛;不能让普通帮助性得分抵消安全退化。

七、结构化与工具

执行 JSON Schema、编译、单测和工具沙箱,不以语义相似度替代可执行成功。

场景指标
JSONSchema/解析成功率
代码编译与测试通过率
工具名称、参数、任务成功率
引用引用存在且支持答案

一个 Token 错误即可导致整体失败。

八、长上下文测试

量化误差可能随层数和上下文累积,要分别测试不同长度、不同证据位置及多轮引用。除了 Needle 检索命中率,还要测长文摘要事实覆盖、代码仓库跨文件引用和 KV Cache 量化后的续写一致性。

建议在 4K、16K、32K 和目标上限长度建立阶梯,记录质量拐点、TTFT 与峰值显存。若 4K 无回归但 32K 的中部证据命中率下降 12 个百分点,不能用短上下文结果宣布量化无损。

按 1K、4K、16K、32K 等长度,覆盖信息位于首、中、尾,测 Needle、跨段推理和多轮状态。

若同时量化 KV,需单独组合测试权重与 KV 量化,区分误差来源。

九、生成稳定性

检查重复、退化循环、乱码、提前 EOS 和输出长度分布。随机采样任务使用多 Seed,不能用一次结果下结论。

对确定性结构任务用 temperature=0 固定比较,对创作任务看分布与人工偏好。

十、性能矩阵怎么设计

在目标卡型/CPU 上组合短长输入、短长输出、低高 Batch 与并发,预热后报告 P50/P95/P99。

记录 TTFT、TPOT、Tokens/s、显存、功耗、加载时间和单位成功成本;量化只改善某阶段时要明确。

十一、稳定性与长跑

持续压测缓存增长、内存泄漏、OOM、动态 Shape、不同租户 Adapter 和并行通信。

监控错误、重试与温度;短 Benchmark 无法发现缓存碎片和极端 Shape 回退。

长跑中周期性回放固定探针,区分流量随机变化与运行时状态累积;发现内存单调增长或性能漂移时保存 Profile 与请求长度分布。

十二、如何设置门槛

定义总体允许退化、关键切片绝对门槛和安全零容忍项;性能要求在质量通过后评估。

ship if quality_delta >= -budget
    and every_critical_slice_passes
    and safety_passes
    and target_hardware_speedup > minimum

门槛在测试前确定。

十三、灰度与回滚

先影子比较,再按低风险流量灰度;记录模型、quant_config、硬件与 Kernel 版本。

观察线上任务成功、格式、安全、P99、Fallback 和人工接管。保留 FP16 版本与路由开关快速回滚。

量化回归的目标不是证明模型“看起来还能回答”,而是证明关键能力仍在且硬件收益真实存在。

十四、常见误区与追问

  • 误区:困惑度变化小就可以上线。 结构化、安全和长尾可能退化。
  • 误区:Fake Quant 分数代表部署模型。 导出与 Kernel 仍可能不同。
  • 误区:平均榜单足够。 关键切片会被稀释。
  • 误区:显存下降就算性能通过。 延迟可能因反量化更慢。
  • 误区:单个 Seed 能比较生成质量。 随机输出需多次采样。
  • 追问:怎样发现慢速回退? 记录实际 Kernel、数据类型并做性能基线。
  • 追问:最重要的回滚条件? 安全/关键质量红线或 SLO 退化。

十五、加强记忆

先验产物:配置、Shape、哈希和真实位宽;再验数值:层误差、Logit、NaN/Inf;再验能力:任务、长尾、安全、格式与长上下文;再验随机性:配对、多 Seed 与输出分布。再验硬件:真实 Kernel、长度、Batch、P99;再做长跑:OOM、泄漏、碎片和回退;最后灰度:版本化指标与高精度快速回滚。