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.

编辑推荐精选

TRAE编程

TRAE编程

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

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

AI工具TraeAI IDE协作生产力转型热门
商汤小浣熊

商汤小浣熊

最强AI数据分析助手

小浣熊家族Raccoon,您的AI智能助手,致力于通过先进的人工智能技术,为用户提供高效、便捷的智能服务。无论是日常咨询还是专业问题解答,小浣熊都能以快速、准确的响应满足您的需求,让您的生活更加智能便捷。

imini AI

imini AI

像人一样思考的AI智能体

imini 是一款超级AI智能体,能根据人类指令,自主思考、自主完成、并且交付结果的AI智能体。

Keevx

Keevx

AI数字人视频创作平台

Keevx 一款开箱即用的AI数字人视频创作平台,广泛适用于电商广告、企业培训与社媒宣传,让全球企业与个人创作者无需拍摄剪辑,就能快速生成多语言、高质量的专业视频。

即梦AI

即梦AI

一站式AI创作平台

提供 AI 驱动的图片、视频生成及数字人等功能,助力创意创作

扣子-AI办公

扣子-AI办公

AI办公助手,复杂任务高效处理

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

蛙蛙写作

蛙蛙写作

AI小说写作助手,一站式润色、改写、扩写

蛙蛙写作—国内先进的AI写作平台,涵盖小说、学术、社交媒体等多场景。提供续写、改写、润色等功能,助力创作者高效优化写作流程。界面简洁,功能全面,适合各类写作者提升内容品质和工作效率。

AI辅助写作AI工具蛙蛙写作AI写作工具学术助手办公助手营销助手AI助手
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
下拉加载更多