S66:读懂 Eval / A-B 比较:从脚本输出回到版本证据
Eval / A-B 比较的核心不是得到一个胜者标签,而是确认 baseline 与 candidate 在同一可解释协议下经历了什么数据、scorer、运行环境与决策规则。
内容类型:预习教材(不代表已完成)
日期:2027-01-27
阶段:P2 · AI Systems Engineering 90
总路线:Day 156
周次节奏:W10 · 周三引导练习
状态:教材已备;学习未完成
一句话定义
Eval / A-B 比较的核心不是得到一个胜者标签,而是确认 baseline 与 candidate 在同一可解释协议下经历了什么数据、scorer、运行环境与决策规则。
学习目标
- 能阅读现有 eval/AB 脚本的输入、版本、比较粒度、scorer 和输出 schema。
- 能区分 paired comparison、aggregate difference、slice regression 与样本级 disagreement。
- 在不新增测试集、不伪造运行的前提下,写一份结果解释或实现阅读笔记。
核心知识
首先确定比较单元。若同一样本同时运行 baseline/candidate,就可作 paired delta,减少样本难度的噪声;若两路使用不同流量,简单平均差会混入 input mix、时间、用户类型和上游版本。对生成式系统,还需固定或记录 temperature、seed(若支持)、max tokens、tool availability 和 retry,否则“版本差异”会混入采样噪声与运行时变化。
Scorer 应版本化。确定性规则可能检查 schema、引用 ID、数值一致性;LLM judge 需记录 model、prompt、rubric、position randomization 与解析错误;human label 需 rubric、reviewer context 与 disagreement 处理。不同 scorer 的数值不应直接平均,因为它们量的属性和错误结构不同。
Aggregate 与 slice 必须并存。总体正向不代表每个 risk tier、语言、文档长度或 tool path 都改善。小 slice 的大波动不宜过度解释,但高严重度样本也不能被大总量稀释。一份好解释要同时写 effect direction、magnitude、sample count、uncertainty 和业务严重度。
机制与推导
对样本 i 和指标 m,配对差可写成 d_i = score_m(candidate_i)-score_m(baseline_i),平均效应为 mean(d)。但决策还应观察:
win/tie/loss分布,避免少数极端值主导平均;- 每个 slice 的方向与样本数;
- 质量之外的
Δp95_latency、Δunit_cost、Δescalation_rate; - scorer failures 和 missing data,不将它们当作零分或自动排除。
如果运行未发生,可以从代码推导输出语义,但笔记标题必须写“实现阅读”,而非“比较结果”。
最小练习或观察
- 在现有 eval/AB 脚本中定位数据加载、baseline/candidate 调用、scorer、聚合、决策与报告输出。
- 写一张 variable map:哪些是受控变量,哪些由环境引入,哪些没有被记录。
- 若运行成本合适,可用现有小数据执行;不新增数据或修改阈值追求通过。
- 若不运行,选一个假设输出 schema,说明每个字段能回答什么、缺少什么。
- 写结果解释模板:事实→限定条件→取舍→替代解释→下一个最小观察。
常见误区与边界
- candidate 换了模型、prompt 和 retrieval corpus,却将差异归因于模型。
- 不配对样本、不控制采样,却对小差异做确定性解释。
- 只看总分,忽略高风险 slice 退化和 scorer error rate。
- 用 LLM judge 分数取代事实验证、安全检查或真实 outcome。
- 实现阅读不等于运行完成,也不等于两版本已有性能结论。
系统 / 金融 / Web3 连接
AML 文档生成可分成证据引用正确、金额一致、风险陈述适当、格式合法和人工升级五个指标,不应只用“流畅度”。Web3 交易辅助可分 chain/contract/amount 一致性、simulation 结果、费用、延迟和用户拒绝率;链上 outcome 发生较晚,不能被离线 judge 完全替代。
自检问题
- 什么条件下配对差比两组平均更可解释?
- scorer version 为什么属于 release evidence?
- aggregate 改善为什么可能与高风险 slice 退化并存?
- 未运行时,怎样写笔记才不伪造结果?
专业课程对齐
- MLflow Documentation:精读 experiment tracking、runs、artifacts 与 model evaluation,映射脚本的 run identity、params、metrics 和 outputs。
- Full Stack Deep Learning:精读 testing/monitoring 与 ML experiment 相关课题,检查离线比较与线上证据的差距。
- NIST AIRC / AI RMF:选读 Measure 与 Manage,把指标与风险上下文、限制、owner 及决策联系,避免“分数即风险”。
深入学习提示
先从代码追数据路径,再用 MLflow 实体检查是否可追溯,最后用 FSDL/NIST 限定结论。如果只有时间深挖一点,优先读 scorer 失败怎样被处理:解析失败、超时、缺失分数会直接改变胜负结果。
学后填写区
- 阅读或运行路径:
- baseline / candidate 变量:
- scorer、slice 与 missing-data 处理:
- 实际结果(未运行留空):
- 能支持与不能支持的结论: