sacred

sacred

Python实验管理工具 助力科研配置记录与复现

Sacred是一个开源Python实验管理工具,专注于实验配置、组织、记录和复现。它提供Config Scopes、参数注入、命令行接口等功能,方便跟踪参数、运行不同设置、保存配置。Sacred还支持自动随机种子设置和MongoDB存储,并有多个数据可视化前端。这些特性使其成为科研人员管理复杂实验的理想选择。

Sacred实验配置实验记录参数管理实验复现Github开源项目

神圣

| *每个实验都是神圣的*
| *每个实验都是伟大的*
| *如果一个实验被浪费了*
| *上帝会非常恼火*

|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/>_。

安装

你可以直接用pip从Python包索引安装:

pip install sacred

或者如果你想手动安装,你可以从git检出当前版本并自行安装:

| git clone https://github.com/IDSIA/sacred.git | cd sacred | python setup.py install

你可能还想安装 numpypymongo 包。它们是可选的依赖项,但提供了一些很酷的功能:

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.txt
  • tox.ini
  • test/test_utils.py
  • setup.py

贡献

如果你发现bug、有功能请求或想讨论一些一般问题,欢迎开一个 issue <https://github.com/IDSIA/sacred/issues>。如果你有与Sacred使用相关的具体问题,请在 python-sacred标签 <https://stackoverflow.com/questions/tagged/python-sacred> 下在StackOverflow上提问。我们非常重视文档。 如果你发现应该包含在文档中的内容,请记录下来或让我们知道缺少什么。如果你在项目中使用Sacred并想与他人分享你的代码, 请将你的仓库放在 使用Sacred的项目 <docs/projects_using_sacred.rst>_ 列表中。 非常欢迎提交拉取请求!

前端

目前有三个Sacred创建的数据库条目的前端(据我所知)。 它们作为单独的项目在外部开发。

Omniboard <https://github.com/vivekratnavel/omniboard>_ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ .. image:: docs/images/omniboard-table.png .. image:: docs/images/omniboard-metric-graphs.png

Omniboard是一个网络仪表板,有助于可视化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是一个基于网络的仪表板界面,用于访问存储在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实验,或者可以接受额外的设置/配置开销,请使用这个项目。

未来道具研究所 +++++++++++++++

未来道具研究所是一个机器学习仪表板,旨在使实验原型设计更容易。实验详情和结果被发送到数据库,这允许在实验完成后进行分析。服务器是FGLab,客户端是FGMachines。

与Sumatra类似,FGLab是一个外部工具,可以跟踪任何程序的运行。项目通过JSON模式配置,程序需要通过命令行选项接受这些配置。FGLab还通过在多台机器上分配运行来扮演基本调度程序的角色。

许可证

该项目根据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.

编辑推荐精选

扣子-AI办公

扣子-AI办公

职场AI,就用扣子

AI办公助手,复杂任务高效处理。办公效率低?扣子空间AI助手支持播客生成、PPT制作、网页开发及报告写作,覆盖科研、商业、舆情等领域的专家Agent 7x24小时响应,生活工作无缝切换,提升50%效率!

堆友

堆友

多风格AI绘画神器

堆友平台由阿里巴巴设计团队创建,作为一款AI驱动的设计工具,专为设计师提供一站式增长服务。功能覆盖海量3D素材、AI绘画、实时渲染以及专业抠图,显著提升设计品质和效率。平台不仅提供工具,还是一个促进创意交流和个人发展的空间,界面友好,适合所有级别的设计师和创意工作者。

图像生成热门AI工具AI图像AI反应堆AI工具箱AI绘画GOAI艺术字堆友相机
码上飞

码上飞

零代码AI应用开发平台

零代码AI应用开发平台,用户只需一句话简单描述需求,AI能自动生成小程序、APP或H5网页应用,无需编写代码。

Vora

Vora

免费创建高清无水印Sora视频

Vora是一个免费创建高清无水印Sora视频的AI工具

Refly.AI

Refly.AI

最适合小白的AI自动化工作流平台

无需编码,轻松生成可复用、可变现的AI自动化工作流

酷表ChatExcel

酷表ChatExcel

大模型驱动的Excel数据处理工具

基于大模型交互的表格处理系统,允许用户通过对话方式完成数据整理和可视化分析。系统采用机器学习算法解析用户指令,自动执行排序、公式计算和数据透视等操作,支持多种文件格式导入导出。数据处理响应速度保持在0.8秒以内,支持超过100万行数据的即时分析。

AI工具使用教程AI营销产品酷表ChatExcelAI智能客服
TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

热门AI工具生产力协作转型TraeAI IDE
AIWritePaper论文写作

AIWritePaper论文写作

AI论文写作指导平台

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

数据安全AI助手热门AI工具AI辅助写作AI论文工具论文写作智能生成大纲
博思AIPPT

博思AIPPT

AI一键生成PPT,就用博思AIPPT!

博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。

热门AI工具AI办公办公工具智能排版AI生成PPT博思AIPPT海量精品模板AI创作
潮际好麦

潮际好麦

AI赋能电商视觉革命,一站式智能商拍平台

潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。

下拉加载更多