sacred
Sacred 是一款专为机器学习实验设计的开源工具,旨在帮助研究人员和开发者高效地配置、组织、记录并复现实验结果。在科研过程中,手动管理大量超参数、记录每次运行的环境细节以及确保结果可复现往往繁琐且容易出错,Sacred 正是为了解决这些痛点而生。
它通过独特的“配置作用域”机制,让开发者能像定义普通局部变量一样轻松设定实验参数,并支持自动将这些参数注入到函数的任何位置,极大简化了代码结构。Sacred 还内置了强大的命令行接口,允许用户无需修改代码即可灵活调整参数运行不同变体。此外,其“观察者”功能会自动捕获实验依赖、系统环境、配置信息及最终结果,并可无缝保存至 MongoDB 数据库,方便后续查询与分析。配合自动随机种子管理,Sacred 确保了实验的高度可复现性。
这款工具特别适合从事深度学习、数据科学研究的科研人员,以及需要严谨管理实验流程的算法工程师。如果你希望从琐碎的实验管理工作中解脱出来,专注于核心算法创新,Sacred 将是一个得力的助手。
使用场景
某算法团队正在大规模调优深度学习模型的超参数,试图在有限算力下找到最优配置并复现最佳结果。
没有 sacred 时
- 研究人员手动修改代码中的硬编码参数(如学习率、批次大小),每次调整都需重新编辑脚本,极易出错且难以回溯具体使用了哪组参数。
- 实验日志散落在不同的文本文件或终端截图里,缺乏统一结构,导致后期无法快速对比不同配置下的模型性能差异。
- 由于随机种子未统一管理,即使使用相同的参数设置,多次运行的结果也存在波动,团队成员之间无法精确复现彼此的实验结论。
- 缺少自动化的依赖记录机制,当需要重新运行旧实验时,往往因环境变更或代码版本迭代而失败。
使用 sacred 后
- 通过 Config Scopes 将超参数定义为函数局部变量,配合强大的命令行接口,无需改动代码即可动态切换数百种实验组合,大幅提升调试效率。
- 借助 Observers 自动将所有运行细节(包括参数配置、主机信息、依赖包版本及最终指标)结构化存入 MongoDB,形成可查询的实验数据库,对比分析一目了然。
- 内置的自动播种机制确保了随机性的可控性,只要指定相同配置和种子,任何人在任何机器上都能得到完全一致的运行结果,彻底解决复现难题。
- 系统自动捕获并保存代码快照与依赖关系,即便数月后需要复盘,也能一键还原当时的完整实验环境,确保实验资产不流失。
sacred 将繁琐的实验管理自动化,让研究人员从“运维式”的参数记录中解放出来,专注于核心算法的创新与验证。
运行环境要求
未说明
未说明

快速开始
Sacred
| *每个实验都是神圣的*
| *每个实验都很棒*
| *如果一个实验被浪费了*
| *上帝会非常生气*
|pypi| |py_versions| |license| |rtfd| |doi|
|build| |coverage| |code_quality| |black|
Sacred 是一款帮助你配置、组织、记录和复现实验的工具。它旨在处理围绕实际实验所需的所有繁琐的额外工作,以便:
- 跟踪实验的所有参数
- 轻松地以不同设置运行实验
- 将每次运行的配置保存到数据库中
- 复现你的结果
Sacred 通过以下主要机制实现这些目标:
- 配置作用域:一种非常方便的方式,允许在函数中使用局部变量来定义实验所使用的参数。
- 配置注入:你可以从任何函数访问配置中的所有参数,它们会按名称自动注入。
- 命令行界面:为每个实验提供一个功能强大的命令行界面,可用于更改参数并运行不同的变体。
- 观察者:Sacred 提供观察者,用于记录关于实验的各种信息,包括其依赖项、所使用的配置、运行机器以及结果等。这些信息可以保存到 MongoDB 中,便于日后访问。
- 自动种子设置有助于控制实验中的随机性,从而确保结果可重复。
示例
+------------------------------------------------+--------------------------------------------+ | 在鸢尾花数据集上训练 SVM 的脚本 | 相同的脚本作为 Sacred 实验 | +------------------------------------------------+--------------------------------------------+ | .. code:: python | .. code:: python | | | | | from numpy.random import permutation | from numpy.random import permutation | | from sklearn import svm, datasets | from sklearn import svm, datasets | | | from sacred import Experiment | | | ex = Experiment('iris_rbf_svm') | | | | | | @ex.config | | | def cfg(): | | C = 1.0 | C = 1.0 | | gamma = 0.7 | gamma = 0.7 | | | | | | @ex.automain | | | def run(C, gamma): | | iris = datasets.load_iris() | iris = datasets.load_iris() | | perm = permutation(iris.target.size) | per = permutation(iris.target.size) | | iris.data = iris.data[perm] | iris.data = iris.data[per] | | iris.target = iris.target[perm] | iris.target = iris.target[per] | | clf = svm.SVC(C=C, kernel='rbf', | clf = svm.SVC(C=C, kernel='rbf', | | gamma=gamma) | gamma=gamma) | | clf.fit(iris.data[:90], | clf.fit(iris.data[:90], | | iris.target[:90]) | iris.target[:90]) | | print(clf.score(iris.data[90:], | return clf.score(iris.data[90:], | | iris.target[90:])) | iris.target[90:]) | +------------------------------------------------+--------------------------------------------+
文档
文档托管在 ReadTheDocs <http://sacred.readthedocs.org/>_ 上。你也可以 向 Sacred Guru 提问 <https://gurubase.io/g/sacred>_,这是一个专注于 Sacred 的 AI 助手,可以回答你的问题。
安装
你可以直接从 Python 包索引使用 pip 安装:
pip install sacred
或者,如果你想手动安装,可以从 git 克隆当前版本并自行安装:
| git clone https://github.com/IDSIA/sacred.git | cd sacred | python setup.py install
你可能还需要安装 numpy 和 pymongo 包。它们是可选依赖项,但提供了许多有用的功能:
pip install numpy pymongo
测试
Sacred 的测试使用 pytest <http://pytest.org/latest/>_ 包。你可以在 Sacred 目录下运行 pytest 来执行测试:
pytest
此外,还有一个针对 tox <https://tox.readthedocs.io/en/latest/>_ 的配置文件,因此你可以自动为不同版本的 Python 运行测试:
tox
更新 pytest 版本 +++++++++++++++++++++
如果你更新或更改 pytest 版本,需要修改以下文件:
dev-requirements.txttox.initest/test_utils.pysetup.py
贡献
如果你发现了一个 bug、有一个功能请求,或者想讨论一些通用的问题,欢迎在 GitHub 仓库的议题页面 <https://github.com/IDSIA/sacred/issues>_ 上提交。如果你有关于 Sacred 使用的具体问题,请在 StackOverflow 上使用 python-sacred 标签 <https://stackoverflow.com/questions/tagged/python-sacred>_ 提问。我们非常重视文档工作。如果你发现有需要添加到文档的内容,请自行补充文档或告诉我们缺少什么。如果你在自己的项目中使用了 Sacred,并希望与他人分享代码,请将你的仓库添加到 使用 Sacred 的项目列表 <docs/projects_using_sacred.rst>_ 中。我们非常欢迎 Pull 请求!
前端
目前有三个我所知的 Sacred 数据库条目的前端界面,它们都是由外部独立开发的项目。
Omniboard <https://github.com/vivekratnavel/omniboard>_
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
.. image:: docs/images/omniboard-table.png
.. image:: docs/images/omniboard-metric-graphs.png
Omniboard 是一个 Web 仪表板,用于可视化 Sacred 收集的实验、指标和日志。Omniboard 使用 React、Node.js、Express 和 Bootstrap 构建。
Incense <https://github.com/JarnoRFB/incense>_
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
.. image:: docs/images/incense-artifact.png
.. image:: docs/images/incense-metric.png
Incense 是一个 Python 库,用于从 MongoDB 中检索存储的运行记录,并在 Jupyter 笔记本中交互式地展示指标和工件。
Sacredboard <https://github.com/chovanecm/sacredboard>_
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
.. image:: docs/images/sacredboard.png
Sacredboard 是一个基于 Web 的仪表板界面,用于查看存储在 MongoDB 中的 Sacred 运行记录。
Neptune <https://neptune.ai/>_
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
.. image:: docs/images/neptune-compare.png
.. image:: docs/images/neptune-collaboration.png
Neptune 是一个面向 MLOps 的元数据存储平台,专为频繁进行实验的团队设计。它提供了一个统一的平台,允许您通过 Python 和 R 编程语言的 API 来记录、存储、展示、组织、比较和查询所有模型构建相关的元数据:
.. image:: docs/images/neptune-query-api.png
要将您的 Sacred 实验日志记录到 Neptune,您只需添加一个观察者即可:
.. code-block:: python
from neptune.new.integrations.sacred import NeptuneObserver
ex.observers.append(NeptuneObserver(api_token='<YOUR_API_TOKEN>',
project='<YOUR_WORKSPACE/YOUR_PROJECT>'))
更多信息,请参阅 Neptune + Sacred 集成指南 <https://docs.neptune.ai/integrations-and-supported-tools/experiment-tracking/sacred>_。
SacredBrowser <https://github.com/michaelwand/SacredBrowser>_
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
.. image:: docs/images/sacred_browser.png
SacredBrowser 是一个基于 PyQt4 的应用程序,用于浏览由 Sacred 实验创建的 MongoDB 条目。其功能包括自定义查询、结果排序、访问存储的源代码等。该工具无需安装,可以连接本地数据库或通过网络连接。
Prophet <https://github.com/Qwlouse/prophet>_
++++++++++++++++++++++++++++++++++++++++++++++
Prophet 是一个早期的原型,用于查看由 Sacred 实验创建的 MongoDB 条目,但目前已停止维护。它需要您运行 RestHeart <http://restheart.org>_ 才能访问数据库。
相关项目
Sumatra <https://pythonhosted.org/Sumatra/>_
++++++++++++++++++++++++++++++++++++++++++++++
| Sumatra 是一种用于管理和跟踪基于数值模拟和/或分析的项目的工具,旨在支持可重复的研究。
| 它可以被视为计算项目中的自动化电子实验记录本。
Sumatra 采用不同的方法,提供命令行工具来初始化项目并运行任意代码(而不仅仅是 Python)。它会将所有运行的信息记录到 SQL 数据库中,并提供一个友好的浏览器工具。与要运行的代码集成度较低,因此更容易应用于非 Python 实验。不过,这也意味着每个实验需要更多的设置,且配置需通过文件完成。如果您需要运行非 Python 实验,或者不介意额外的设置和配置开销,可以考虑使用该项目。
Future Gadget Laboratory <https://github.com/Kaixhin/FGLab>_
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
| FGLab 是一个机器学习仪表板,旨在简化实验原型设计。实验的详细信息和结果会被发送到数据库,从而可以在实验完成后进行分析。服务器端是 FGLab,客户端则是 FGMachines。
与 Sumatra 类似,FGLab 是一个外部工具,可以跟踪来自任何程序的运行。项目通过 JSON 模式进行配置,程序需要通过命令行选项接受这些配置。FGLab 还充当一个基本的调度器,负责将运行分配到多台机器上。
许可证
本项目根据 MIT 许可证 <http://opensource.org/licenses/MIT>_ 发布。
引用 Sacred
K. Greff, A. Klein, M. Chovanec, F. Hutter, and J. Schmidhuber, ‘The Sacred Infrastructure for Computational Research’, in Proceedings of the 15th Python in Science Conference (SciPy 2017), Austin, Texas, 2017, pp. 49–56 <http://conference.scipy.org/proceedings/scipy2017/klaus_greff.html>_.
.. |pypi| image:: https://img.shields.io/pypi/v/sacred.svg :target: https://pypi.python.org/pypi/sacred :alt: 当前 PyPI 版本
.. |py_versions| image:: https://img.shields.io/pypi/pyversions/sacred.svg :target: https://pypi.python.org/pypi/sacred :alt: 支持的 Python 版本
.. |license| image:: https://img.shields.io/badge/license-MIT-blue.png :target: http://choosealicense.com/licenses/mit/ :alt: MIT 许可证
.. |rtfd| image:: https://readthedocs.org/projects/sacred/badge/?version=latest&style=flat :target: https://sacred.readthedocs.io/en/stable/ :alt: ReadTheDocs
.. |doi| image:: https://zenodo.org/badge/doi/10.5281/zenodo.16386.svg :target: http://dx.doi.org/10.5281/zenodo.16386 :alt: 本版本的 DOI
.. |build| image:: https://github.com/IDSIA/sacred/actions/workflows/test.yml/badge.svg :target: https://github.com/IDSIA/sacred/actions/workflows/test.yml/badge.svg :alt: Github Actions PyTest
.. |coverage| image:: https://coveralls.io/repos/IDSIA/sacred/badge.svg :target: https://coveralls.io/r/IDSIA/sacred :alt: 覆盖率报告
.. |code_quality| image:: https://scrutinizer-ci.com/g/IDSIA/sacred/badges/quality-score.png?b=master :target: https://scrutinizer-ci.com/g/IDSIA/sacred/ :alt: Code Scrutinizer 质量评分
.. |black| image:: https://img.shields.io/badge/code%20style-black-000000.svg :target: https://github.com/ambv/black :alt: 代码风格:Black
版本历史
0.8.72024/11/260.8.62024/08/260.8.52023/11/130.8.42023/01/250.8.32022/03/280.8.22020/11/260.8.02019/10/140.7.52019/06/200.7.42018/06/120.7.32018/05/060.7.22018/05/060.7.12018/05/060.7.02017/05/070.6.102016/08/080.6.82016/01/13常见问题
相似工具推荐
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
NextChat
NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。
ragflow
RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。