复现、统计与结果报告
本节目标
保存足以重放的输入、协议、输出和环境元数据,并用配对比较、分层结果与不确定性报告候选差异。
直觉解释
“我的电脑上是 87 分”不是可审计结果。复现需要别人知道测了哪一版数据、用什么代码和条件、失败如何处理,并能从逐项输出重新计算汇总。统计报告还要说明有限样本下结果可能波动多大。
核心概念
- artifact:数据 manifest、校验和、代码、配置、日志、原始输出和评分结果。
- fingerprint:对规范化数据与协议计算的内容哈希,用来识别“测的是否同一件事”。
- paired comparison:同一 case 上比较候选与基线,减少 case 难度差异带来的噪声。
- confidence interval:按预先方法反复抽样时具有覆盖性质的区间;不是对本次真值的主观概率保证。
- effect size:差异大小,而不只是“是否显著”。
- multiple comparisons:试很多候选、指标或切片后挑最好,会增加偶然发现。
分步骤方法
- 版本化 Benchmark card、数据 manifest、grader 和运行配置。
- 保存每个 case 的 ID、group、strata、输入、原始输出、逐项评分和错误。
- 记录操作系统、Python/依赖、模型快照、提示哈希、工具版本、时间窗和随机种子。
- 对同一批 case 计算候选减基线的配对差。
- 报告样本量、均值/比例、差值区间、分层结果和关键失败清单。
- 随机系统对 task 做独立重复;保留 trial 层数据,不先平均后丢失波动。
- 所有失败、超时和缺失按冻结规则进入分母。
- 将汇总表与原始结果包一起发布;敏感输入可受控访问,但不能只留下截图。
配对、多次运行与切片样本量
若baseline与candidate在同一case、同一trial协议下运行,先按task构造配对差,再报告平均差与区间;不要把两套结果当毫无关系的样本。随机Agent还应保留task × trial层记录:task数量描述覆盖,多次trial描述同一任务上的运行波动,两者不能合并成虚假的独立样本数。
每个切片同时报告、成功数、比例和区间或明确的小样本限制。若检查许多切片,只挑下降最大的一个发布,会放大偶然波动;应预先指定关键切片,并把探索性发现标为待复测。
Harness与证据指纹
复现包不仅包含数据和结果,还要固定harness版本:环境镜像/fixture、setup、grader、reset、工具schema、预算和失败处理。证据指纹应覆盖Benchmark spec、cases、协议和results;相同指纹只证明输入内容一致,不证明运行机器可信、数据合法或设计有效。
最小Benchmark报告卡应包含:声明与非目标、目标总体、数据版本/来源、协议、被测系统、基线、指标/gate、总体与切片结果、统计方法、资源、污染/暴露/运行时可发现性、已知限制、复现状态、审批人与有效期。还要公开每个被测系统的适配预算、提交次数和反馈粒度,并区分预先冻结的确认性分析与结果出现后提出的探索性分析。
从得分到有效结论
强结论需要同时核对声明、harness和有效性。至少统计并审阅:损坏或歧义任务、grader错误、奖励漏洞、安全拒绝被误罚、训练/测试污染、Agent运行时找到公开答案、重复提交适配,以及评测意识或sandbagging风险。对确认、疑似、未检测到和未知分别报告,不把“没发现”升级为“没有”。
任何排除、重评分或协议修复都应保留原始结果、调整后结果、case数量和理由。若修复改变了任务含义、工具、预算或评分规则,应建立新版本/新比较边界,而不是把调整后分数悄悄放回旧排行榜。
示例
结果记录至少包含:
{
"benchmark_id": "order-agent-readonly",
"benchmark_version": "1.0.0",
"benchmark_fingerprint": "sha256:...",
"system_id": "candidate-2026-07-14",
"run_config": {"seed": 23, "max_attempts": 1},
"sample_count": 120,
"primary_score": 0.81,
"paired_delta_vs_baseline": 0.04,
"interval_method": "paired bootstrap",
"limitations": ["离线夹具", "不覆盖退款写操作"]
}严格 JSON 不能在行尾写注释,否则读取器将拒绝它:benchmark_id 与 benchmark_version 共同锁定任务;benchmark_fingerprint 绑定冻结协议;system_id 标识被比较实现;run_config 固定会影响结果的随机与重试条件;sample_count 给出分母;primary_score 与 paired_delta_vs_baseline 分别报告绝对结果和配对差异;interval_method 说明不确定性计算;limitations 列出结论不可外推的边界。
如果同一 case 的候选/基线结果是 0 或 1,先得到每项差值 ,再汇总 。教学项目用固定种子从这些 有放回重采样;真实研究需检查样本独立性、分层、重复 trial 和方法适用性。
常见错误与排查
- 只保存总分:无法定位或重新评分;保存逐项原始输出。
- 只报 p 值:补充效应大小、区间、样本量和实际失败代价。
- 区间跨 0 就说完全相同:只能说明当前数据不足以清楚区分。
- 不断试候选后只报赢家:记录全部比较或使用独立最终留出。
- 随机 seed 有记录但数据/API 已变化:同时冻结或版本化外部依赖。
- 污染状态写成一个布尔值:分别披露训练暴露、运行时可发现性、开发适配和检测未知。
练习
- 为一次 RAG Benchmark 列出最小可复现文件清单。
- 对 8 个 case 的 0/1 配对结果手算平均差。
- 解释为什么“两个独立样本比例区间”通常没有利用同 case 配对信息。
自测
- 内容哈希能证明数据正确吗?不能;它只能帮助确认内容一致。
- 单次复现成功能证明结果普适吗?不能;复现不等于外部有效性。
- 样本很多是否可忽略分层偏差?不能,系统性抽样偏差不会因数量自动消失。
小结与下一步
可信结果包同时回答“测了什么、怎么测、每项发生了什么、差异有多大、还有哪些限制”。下一步学习 Leaderboard 机制、反游戏与维护。
参考资料
- MLPerf Inference官方规则:复现、固定输入与审计(master分支核对于2026-07-21)
- Model Cards for Model Reporting原始论文页面(获取日期:2026-07-21)
- Koehn 2004:机器翻译评测的统计显著性检验(原始论文,获取日期:2026-07-21)
- NIST/SEMATECH:置信区间(获取日期:2026-07-21)
- OpenAI: A shared playbook for trustworthy third party evaluations(发布于2026-05-29;声明、harness、有效性检查与结果报告)