ml-experiment-trackinglisted
Install: claude install-skill fieldlu/Machine-learning-skills
# 实验可复现纪律 — 每个数字都要能回答"你从哪来"
## R — 原文 (Reading)
> Machine learning is experimental in a way traditional software is not... A large fraction of ML work involves running experiments, and the results of those experiments need to be tracked and compared.(转述)
>
> — 转述自 Sculley 等, "Hidden Technical Debt in Machine Learning Systems", NeurIPS 2015 第 3 节(来源性质:业界公认技术债综述)
> Reproducibility requires recording code, data, configuration, and environment; missing any one of them can make results irreproducible.(转述)
>
> — 转述自 Pineau 等, "Improving Reproducibility in Machine Learning Research" / NeurIPS reproducibility program 的通行要求(来源性质:社区可复现性倡议)
> **来源说明**: 本 skill 属批C"工程实践共识"系列——《机器学习》(西瓜书)不含工程落地内容,
> 其最接近的锚点是第2章对测试集选择与算法随机性的讨论("性能比较不能直接比大小"的前提之一
> 就是运行可控)。R 段改引业界公开文献并标注来源性质;凡无法保证逐字精确处一律标(转述)。
---
## I — 方法论骨架 (Interpretation)
一次实验 = 代码 × 数据 × 配置 × 环境 × 随机性,五个变量任何一个没钉住,结果就不可复现。纪律的核心不是装工具,而是让**每个产出的数字都能回溯到这五元组**:
1. **随机种子**: Python/NumPy/框架/GPU 全链路设种子并记录;同时承认 GPU 非确定性算子可能残留波动——种子保证的是"可追溯",不承诺逐位一致。
2. **配置版本化**: 超参与流程参数全部进配置文件(Hydra/YAML),随输出一起落盘;禁止散落在 notebook 单元格里的魔法数字。
3. **环境快照**: `pip freeze` / lockfile 与实验同存;三个月后的库版本可以让同一份代码给出不同数字。
4. **输出目录规范**: 按 `{experiment}_{timestamp}` 命名,配置、日志、指标、模型放同一目录——目录本身就是实验档案。
5. **检查点策略**: best(按验证指标)+ latest(含 optimizer/scheduler 状态以支持 resume)双轨保存。
6. **数据版本**: 记录数据集哈希/版本标签;数据变了而代码没变,是"复现失败"最常见的隐藏原因。
两条元原则:**记录发生在实验开始时而非结束时**(事后回忆的配置必然缺项);**复现不了的实验等于没做过**(不可信,不可写进论文或汇报)。这条纪律在科研场景是学术诚信问题,不只是工程洁癖。
---
## A1 — 业界公开案例 (Past Application)
> 注: 西瓜书