← 返回题目列表

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

中等 第 22 / 25 题 更新于 2026/09/18
模型压缩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 记录指标并保留高精度回滚。

完整版教学

1. 先验证量化产物

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

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

2. 为什么要测真实 Kernel

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

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

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

3. 数值健全性检查

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

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

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

4. 通用任务质量

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

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

5. 长尾切片

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

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

6. 安全与校准

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

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

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

7. 结构化与工具

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

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

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

8. 长上下文测试

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

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

9. 生成稳定性

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

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

10. 性能矩阵怎么设计

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

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

11. 稳定性与长跑

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

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

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

12. 如何设置门槛

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

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

门槛在测试前确定。

13. 灰度与回滚

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

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

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

14. 常见误区与追问

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

15. 加强记忆

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