一个用于轻松在本地和超级计算机上编排通用计算工作流程的工具。
项目描述
Maestro 工作流程控制器 (maestrowf)
Maestro 可以通过 pip 安装
pip install maestrowf
文档
- Maestro 文档 - 官方 Maestro 文档。
- Maestro Sheetmusic - 一组示例和用户贡献的 Maestro 研究示例。
- Maestro 示例 - Maestro 示例研究。
入门快捷简单
创建一个名为 study.yaml
的 YAML
文件,并将以下内容粘贴到文件中
description:
name: hello_world
description: A simple 'Hello World' study.
study:
- name: say-hello
description: Say hello to the world!
run:
cmd: |
echo "Hello, World!" > hello_world.txt
哲学:Maestro相信清晰定义的过程原则,这个过程被指定为一系列自我文档化且意图明确的任务。
运行 hello_world
研究就像...
maestro run study.yaml
创建参数研究同样简单
通过添加 global.parameters
块,并对 study
块进行一些简单的调整,完整的规范应该如下所示
description:
name: hello_planet
description: A simple study to say hello to planets (and Pluto)
study:
- name: say-hello
description: Say hello to a planet!
run:
cmd: |
echo "Hello, $(PLANET)!" > hello_$(PLANET).txt
global.parameters:
PLANET:
values: [Mercury, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune, Pluto]
label: PLANET.%%
哲学:Maestro相信工作流程应该能够通过最小的核心过程修改轻松参数化。
Maestro 将自动将每个参数扩展为其自己的独立工作区,为每个参数生成脚本,并自动监控每个任务的执行。
运行研究仍然像这样简单
maestro run study.yaml
调度变得简单
但还有更多!如果您想安排一个研究,它同样简单。经过一些小的修改,您可以在 超级计算机 系统上运行。
description:
name: hello_planet
description: A simple study to say hello to planets (and Pluto)
batch:
type: slurm
queue: pbatch
host: quartz
bank: science
study:
- name: say-hello
description: Say hello to a planet!
run:
cmd: |
echo "Hello, $(PLANET)!" > hello_$(PLANET).txt
nodes: 1
procs: 1
walltime: "00:02:00"
global.parameters:
PLANET:
values: [Mercury, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune, Pluto]
label: PLANET.%%
注意:此规范配置为在 LLNL 的 quartz 集群上运行。在
batch
标题下,您需要做出必要的更改以在其他 HPC 资源上安排。哲学:Maestro相信工作流程的定义应该与其实际运行解耦。我们通过提供无缝接口到多个调度器来实现这一能力,使 Maestro 能够轻松地将工作流程移植到多个平台。
有关其他示例,请参阅 samples 子文件夹。要继续我们的 Hello World 示例,请参阅我们 文档 中的 研究构建基础。
使用 LULESH 的示例研究
Maestro 随附一个基本示例,使用由 LLNL 提供的代理应用程序 LULESH。您可以在 这里 找到示例。
什么是 Maestro?
Maestro 是一个开源的 HPC 软件工具,它定义了一个基于 YAML 的研究规范来定义多步骤工作流程,并自动化在 HPC 资源上执行软件流程。Maestro 的核心设计原则集中在鼓励清晰的流程通信和文档,同时使一致的执行更容易,使用户能够专注于科学。Maestro 的研究规范帮助用户以逐步的、以意图为导向的方式思考复杂的流程,鼓励模块化和工具重用。随着计算科学在科学领域的持续存在,并开始需要类似于物理实验的类似严谨性,这些原则变得越来越重要。Maestro 目前在劳伦斯利弗莫尔国家实验室的多个项目中使用,并已用于运行包括 MFEM 在内的现有代码和其他模拟代码。它还用于其他领域,包括机器学习模型的培训等。
Maestro 的基础和核心概念
工作流程有很多定义,所以我们尽量让它简单,如下定义该术语
A set of high level tasks to be executed in some order, with or without dependencies on each other.
我们围绕我们称之为“研究”的核心概念设计了 Maestro。研究被定义为在一系列参数上执行的一系列步骤(工作流程)。在 Maestro 的上下文中,研究类似于实际的、有形的科学实验,它有一系列明确定义且可重复的步骤,这些步骤在多个标本上重复进行。
Maestro 的核心原则如下
可重复性
研究应该易于重复。像任何计划良好且实施得当的科学实验一样,步骤本身应该在每次研究在每一组参数上运行或在研究自身的不同运行时以完全相同的方式进行执行。
一致性
研究应始终进行文档记录,并能够以一致的方式进行运行。消除过程中的变异意味着在执行研究时错误更少,更容易选择他人创建的研究,以及在新研究定义中的统一性。
自文档化
文档在计算研究中与物理科学中一样重要。Maestro定义的YAML规范提供了一些必需的关键字,鼓励可读的文档。更进一步,该规范本身就是对完整工作流程的文档。
设置您的Python环境
要开始,我们建议使用虚拟环境。如果您尚未安装Python virtualenv
包,请查看他们的官方文档以开始。
创建一个新的虚拟环境
python -m virtualenv maestro_venv
source maestro_venv/bin/activate
贡献者入门
如果您计划在Maestro上开发,请直接使用以下命令安装仓库
pip install poetry
poetry install
设置完成后,测试环境。路径应指向虚拟环境文件夹。
which python
which pip
使用Maestro Docker文件
Maestro附带了一套用于测试的Docker文件。两个主要文件是
-
位于Maestro仓库根目录的标准
Dockerfile
。此文件是Maestro的标准安装,旨在在此仓库提供的演示样本上尝试Maestro。要本地尝试Maestro,请安装Docker并运行以下命令docker build -t maestrowf . docker run -ti maestrowf
在容器内运行以下命令
maestro run ./maestrowf/samples/lulesh/lulesh_sample1_unix.yaml
-
要尝试Flux 0.19.0集成,从Maestro仓库的根目录运行以下命令
docker build -t flux_0190 -f ./docker/flux/0.19.0/Dockerfile . docker run -ti flux_0190
在容器内运行以下命令
maestro run ./maestrowf/samples/lulesh/lulesh_sample1_unix_flux.yaml
贡献者
对MaestroWF的贡献者表示衷心的感谢。
如果您有任何问题或要提交功能请求,请提交工单。
发布
MaestroWF在MIT许可下发布。有关详细信息,请参阅NOTICE和LICENSE文件。
LLNL-CODE-734340
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分布
构建分布
maestrowf-1.1.10.tar.gz的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 833a11be316b901f0a2efc5c09ce12f2a94eb5642aed70fd64d82bb99d4ba3b4 |
|
MD5 | 9c49a36bdc8364eeafbf129581723b75 |
|
BLAKE2b-256 | 11f8d50a7c2684fe8082f7700ba12576b1d8769fe5890e68bcd1da090b9fc1d5 |