开源仓库IDSIA/sacred4,367 Stars

Sacred

自动记录每次计算实验的配置、种子、依赖和结果,让实验可追溯、可复现。

适合每天跑大量实验变体、需要回溯每次运行用了什么参数和依赖的研究者。用装饰器标注实验入口,Sacred自动捕获环境和配置变更,存到文件或数据库。

bo老师判断:推荐

用途和边界相对清楚,可以先从小样本开始。

...互动状态已更新

这个工具提供了哪些能力

点开任一能力,看清怎么用

每个能力展开后是三件事:它会给你什么、你需要准备什么、哪些必须由你把关。

常见场景:每天跑几十次参数变体实验,需要一个系统记录每次运行的全貌;论文修改阶段需要回溯某张图用的是哪次实验的哪个参数;需要保证实验结果可复现——包括配置、种子、依赖和源码版本;多个实验想在同一套参数基础上叠加变体,需要层级化配置管理

覆盖阶段分析验证

第一次这样开始

把仓库地址直接交给 AI

先让 AI 说明环境和风险,再完成最小安装验证。开始前想清楚要用哪个能力、把对应材料备在手边——每张能力卡展开后有具体清单。

第一次直接复制

帮我安装这个库:https://github.com/IDSIA/sacred
安装前先告诉我需要什么环境,安装后帮我跑通一个最小示例。

别这样用

这些判断,仍然由你负责

  • 不设置seed就运行——每次seed随机,导致实验不可复现
  • 以为Sacred会自动seed所有库——它只处理Python/NumPy/TF/PyTorch四个库
  • jsonpickle序列化把tuple变成list后,跨类型比较行为会改变
  • QueueObserver在外部服务中断时无最终失败声明,可能无限重试而研究者不知情

技术依据

查看能力拆解、验证范围与来源

处理机制

  1. 01

    观察者事件生命周期

    解释 sacred 五类能力(配置捕获、种子、依赖采集、运行记录、序列化)的共同架构支柱:RunObserver 基类定义的事件合同 + priority 排序 + 首 observer 决定 id + Run 状态机驱动事件分发。这个横切结构决定了为什么 File/Mongo/TinyDB/SQL/S3/GCS/Slack/Telegram/Neptune 九类后端能共用同一套运行记录逻辑,以及为什么 run 记录、id、status、heartbeat、artifacts 在所有后端表现一致。

已核对范围

  • 静态确认 gathersourcesanddependencies 通过模块 inspect + pkgresources 自动发现源码与依赖(dependencies.py:726)
  • 静态确认 experimentinfo 含 name/basedir/sources/dependencies/repositories(ingredient.py getexperimentinfo)
  • 静态确认 collectrepositories 从 sources 提取 git url/commit/dirty
  • 静态确认 hostinfo 含 cpu/os/hostname/pythonversion/gpu/ENV,可扩展 hostinfogatherer
  • 静态确认 run.json/Mongo runs 文档字段合同(config/experiment/host/info/meta/result/status/times/capturedout/artifacts/resources)
  • 静态确认 FileStorageObserver 目录结构(runxxx/{config.json,cout.txt,info.json,run.json,metrics.json} + sources/ + resources/)
  • 静态确认 MongoObserver 三集合(runs/fs.files/fs.chunks)+ metrics 集合
  • 静态确认前端生态(sacredboard/omniboard/incense/TinyDbReader/Neptune)查询路径

仍待核对

  • 未运行验证 auto-discovery 在 95% 用例的覆盖率声明
  • 未验证 gpu 信息采集在不同硬件下的实际输出
  • 未验证 MODULEBLACKLIST 过滤的完整性
  • 未运行验证 Mongo 查询的 filter 语法覆盖范围
  • 未验证 TinyDbReader 三种检索(indices/expname/query)的实际行为
  • 未验证 jsonpickle 序列化对 numpy/pandas 对象的实际输出形态
  • 未运行验证 observer 端到端记录
  • 未验证 QueueObserver 在外部服务中断时的重试与最终失败边界

原仓库

IDSIA/sacred

读取版本

source-reviewed

许可

MIT

最近核对

内容 2026-07-11
Stars 2026-07-11

已完成源码核对

科研之我见

AI 科研全流程怎么搭,我梳理出三个核心入口

每天开工先固定阶段入口、材料入口和验证入口,把庞大的科研全流程收缩成一段可执行、可检查的任务。

查看内容

文献 · 验证

paper-qa

从本地论文和文档中检索证据并生成带精确引用的科研答案

查看内容

文献 · 分析 · 写作

grobid

把学术论文PDF解析成结构化TEI XML,提取元数据、全文结构和参考文献

查看内容

设计 · 分析 · 验证

CausalPy

用贝叶斯方法做准实验因果推断,含10+方法和稳健性诊断套件

查看内容