可复现活动
experiments/ 工作区保存一次活动所产生的一切,以及复现它所需的一切。这一分离是严格
的:配方被跟踪,输出在本地。 活动配置与执行器脚本置于源代码管理;每一项繁重输出
——生成的基准、运行记录、日志、检查点、证据包,以及环境快照——都留在产生它的机器上,
并按需从配方重新生成。
🗂️ 布局
| 路径 | 已跟踪 | 保存 |
|---|---|---|
configs/ | 是 | 活动配置——完整配方:求解器名册、基准套件、运行计数、预算与主种子。 |
scripts/ | 是 | 活动与分析执行器(例如 run_smoke_pilot.py)。 |
benchmarks/ | 否 | 物化的基准实例。 |
results/ | 否 | 运行记录,位于 results/{campaign_id}/{solver_id}/{benchmark_id}/run_{idx}.json。 |
logs/ | 否 | 执行日志,位于 logs/{campaign_id}_{YYYYMMDD_HHMMSS}.log。 |
.checkpoints/ | 否 | 可恢复的活动状态,位于 .checkpoints/{campaign_id}.json,由配置哈希守护。 |
evidence-bundles/ | 否 | 策展的、按披露层分级的导出,位于 evidence-bundles/{campaign_id}-{tier}/。 |
ENVIRONMENT.md | 否 | 运行时捕获的主机、操作系统、Python 与提交快照。 |
输出目录在本地存在,并在缺失时由活动执行器自动重建;其下的任何内容都绝不被暂存。
🧱 两层,一个真相来源
- 可复现性层(细粒度)。 每次运行都是一条 JSON 记录,位于
results/{campaign_id}/{solver_id}/{benchmark_id}/run_{idx}.json。路径本身即是 索引——活动、然后求解器、然后基准、然后重复——因此证据的任意切片都无需数据库即可 寻址。记录携带一等的时间、收敛、解与求解器努力字段;没有任何分析性内容藏匿于 自由格式的备注中。 - 策展层(分级)。
evidence-bundles/{campaign_id}-{tier}/保存从运行记录派生 的、按披露层分级的导出。层标识符来自固定的公开安全词汇——core、speed、quality、platform——而一个包始终派生自运行级记录,绝非独立的真相来源。
🔁 可复现性契约
- 每次活动声明一个主种子;每次运行的种子从它与运行的位置确定性地派生——相同配置、 相同种子、相同记录,逐位一致。
.checkpoints/{campaign_id}.json记录配置哈希。未更改的配置从检查点恢复并跳过 已完成的运行;任何配置更改都会彻底使检查点失效。ENVIRONMENT.md在执行时对主机、操作系统、Python 与仓库提交进行快照,因此每个 结果都可追溯到产生它的确切代码与机器。- 日志按每次执行仅追加。
这些实践——逐次运行的种子、配置与环境捕获,使结果可从其配方重新生成——遵循记录与 复现计算实验的公认标准 (ACM Artifact Review and Badging, Version 1.1, 2020; Gundersen & Kjensmo 2018)。
可复现性清单还以一条派生的功效陈述为 30 次运行下限提供理据:在该下限、双侧 0.05 水平 与 0.80 功效下,成对设计在经 ARE 调整的 Wilcoxon 近似下可检测约 0.523 或更大的标准化 效应(Noether 1987;框架:Campelo 与 Takahashi 2019)。该句在渲染时从下限重新计算,因此 它绝不会与它所论证的下限发生漂移。另有两个协议描述符与之并列:一个预算缩放条目,记录 评估预算如何随实例大小增长(Vallada、Ruiz 与 Framiñan 2015 的按规模缩放协议,由实验室的 公平比较清单记录为一条评估缩放规则或记为活动固定),以及一个调优对等条目,携带每个 比较性活动所声明的、每算法相等的调优预算(LaTorre、Molina、Osaba、Poyatos、Del Ser 与 Herrera 2021);一个未声明的对等会诚实地渲染为未声明。
🏃 活动如何写入工作区
-
在
configs/下创建或调整一份活动配置(smoke-pilot.json是被跟踪的起点)。 -
通过活动执行器运行它——如教程中那样以编程方式、通过一份被 跟踪的配方脚本(
uv run python experiments/scripts/run_smoke_pilot.py),或通过 命令行界面:uv run dispatchatlas-lab run --config experiments/configs/smoke-pilot.json -
执行器将配置验证为一个确定性计划,写出
results/{campaign_id}/plan.json与environment.json,随后为每次完成的运行加上任何失败尝试,持久化一条内容哈希 记录。 -
在
results/下检视运行记录,并从同一配置恢复、重放或重跑。重新运行相同配置会 逐位复现相同记录;更改的配置会使检查点失效,而非静默重用。
活动引擎页面完整记录了验证、干运行预算、执行模式、重试、 恢复与重放验证。
📦 从运行记录到证据包
导出路径将一个已完成的活动目录转化为 evidence-bundles/{campaign_id}-{tier}/ 下的
一个策展包:
uv run dispatchatlas export `
--campaign-dir .\experiments\results\smoke-pilot `
--target-dir .\experiments `
--authorized-output-root .\experiments `
--tier coretools/build_campaign_evidence.py 在规模化时驱动同一路径,从一份记录的配置为每一层
构建基准目录、活动、分析与包。证据包页面描述各层;
分析导出描述统计内容。
🔒 公开安全边界
公开页面从不直接读取此工作区:文档站点与结果门户仅消费 从策展层产生的、已提交且经披露过滤的导出。工作区中的私有项目台账被源代码管理忽略, 绝不到达公开面。