G79:Research Registry 与 Deterministic Verifier:让实验能够被重放
Research registry 将问题、假设、实验规格、代码、数据、运行、artifact、验证与决定建模成不可混写的版本对象,使每个研究结论能回到原始证据。
内容类型:预习教材(不代表已完成)
日期:2027-05-11
阶段:P3 · AGI Foundations 90
总路线:Day 259
周次节奏:W12 · 周二最小机制
状态:教材已备;学习未完成
一句话定义
Research registry 将问题、假设、实验规格、代码、数据、运行、artifact、验证与决定建模成不可混写的版本对象,使每个研究结论能回到原始证据。
学习目标
- 设计轻量 registry schema,区分计划、运行、观察和人类决定。
- 编写 deterministic verifier contract,明确输入、输出、允许误差、资源上限与失败原因。
- 通过 artifact hash、环境快照与 seed 解释“可重放”不等于“必然逐 bit 相同”。
核心知识
Registry 的核心对象可分为:Question 定义范围;Hypothesis 记录预测与否定标准;ExperimentSpec 固定变量、baseline、数据切分和预算;Run 记录实际配置与状态;Artifact 保存不可变输出和 hash;Verification 保存 verifier 版本、结果和失败类别;Review 保存批评;Decision 由明确的人类 owner 接受、拒绝或继续。
计划与事实必须分开。Spec 中的 expected direction 是假设,不应在 Run 中变成 observed result;未执行的 run 状态只能是 planned;失败运行仍保留 stdout/stderr、环境和终止原因。若直接覆盖同一个“实验文档”,系统会让后来的结论倒写进原计划,失去证据时间线。
Deterministic verifier 应是纯函数或尽量接近:给定 candidate artifact、固定 test vector 和 config,返回 pass/fail + diagnostics。它需要防止候选修改测试、读取 hidden answer、跳过计算、利用时间或浮点未定义行为。资源限制(运行时、内存、调用次数)属于规范;否则“更优算法”可能只用了更多资源。
可重放需要代码 commit/hash、依赖 lock、数据 hash、seed、硬件/后端、环境变量白名单和命令。GPU 非确定算子可能导致数值差异,所以应区分 bitwise reproducibility、statistical reproducibility 与 conceptual replication。Toy CPU 实验可以优先确定性,但不伪装所有平台都相同。
机制与推导
对象关系可写为:
Question 1→N Hypothesis 1→N Spec 1→N Run N→N Artifact 1→N Verification
每个对象 append-only,修订产生新 version 并通过 supersedes 链接。结论引用的不是“最新文件”,而是具体 tuple:
EvidenceRef=(run_id, artifact_hash, verifier_id, metric_version, review_id)
Verifier contract 例:输入排序函数与长度≤30 的整数数组;输出排列;验证 permutation invariant、nondecreasing order、比较次数≤budget、超时 1 秒。仅使用固定公开数组会被硬编码,故生成 holdout seed;但 seed 也必须由 verifier 控制,不传给候选。
重放差异可分解:Δ = code + data + environment + randomness + hardware + nondeterminism。Registry 不保证 Δ=0,而是让差异可定位。若统计复现,预先规定 seed 数和效应摘要,不以某一个 seed 恢复原数值作为唯一标准。
最小练习或观察步骤
- 为一个排序 toy 问题各写一条 Question、Hypothesis 和 ExperimentSpec,确保否定条件不是“效果不好”。
- 定义 Run 状态机:planned→running→succeeded/failed/cancelled;禁止跳过状态后补结果。
- 写 Artifact 与 Verification 的字段表,加入 hash、producer、parent、verifier version 与 diagnostics。
- 手写 5 个公开测试和一个由 verifier seed 生成的 holdout,列出硬编码、超时和错误排列三种失败。
- 选择 bitwise/statistical/conceptual 中适合该实验的复现级别,并说明为什么。
常见误区与边界
- 用一份 Markdown 同时覆盖假设、配置和结果,无法区分何时知道什么。
- Verifier 只返回 pass,失败没有类型与最小反例。
- Candidate 能读取测试文件或修改计时器,验证边界失效。
- 保存 seed 却没有代码、数据和依赖版本,仍不可重放。
- Registry 中存在记录就称实验已复现;记录完整性不等于结果正确。
研究/系统场景连接
企业模型实验可将 registry 与模型/数据 lineage 连接,但客户数据只存受控引用与分类,不复制到 artifact 日志。金融规则研究的 Decision 必须由业务与风险 owner 负责,自动 reviewer 只能提供意见。P4 仿真还要加入 simulator version、physics step、initial state、sensor noise 与 control frequency;真实硬件重放无法完全恢复,应转向可重复协议与安全边界。
自检问题
- Spec 与 Run 为什么必须是不同对象?
- 一个 deterministic verifier 的 trust boundary 包含什么?
- Bitwise、statistical、conceptual replication 怎样区分?
- EvidenceRef 为什么要绑定具体版本而非“最新”?
专业课程对齐
- The AI Scientist:观察自动实验系统如何组织代码、运行和论文 artifact,并从失败案例反推 registry 需求。
- Stanford CS329S: Machine Learning Systems Design:对齐实验追踪、数据/模型版本、可复现与系统失效思维,不要求完成整门课程作业。
- FunSearch:分析可执行 evaluator 怎样约束候选,并识别 evaluator specification 仍需领域审查。
深入学习提示
从一个失败 run 开始设计 registry:能否回答它用了什么、在哪里失败、产生了哪些部分 artifact、谁验证过、能否安全重放?如果失败记录完整,registry 才真正服务研究,而不只是成功展示页。
学后填写区
- Registry 对象与关系:
- Run 状态机:
- Verifier contract:
- Reproducibility 层级:
- 一个仍无法定位的差异: