跳转到主要内容

在Slurm批处理系统上运行MLFlow项目的后端实现

项目描述

MLFlow-Slurm

在Slurm批处理系统上执行MLFlow项目的后端

用法

将此包安装到您提交作业的环境。如果您从作业内部提交作业,请确保在您的conda或pip环境中列出此包。

只需将其作为作业运行中的 --backend 列出。您应包括一个json配置文件以控制批处理脚本的构建方式

mlflow run --backend slurm \
          --backend-config slurm_config.json \
          examples/sklearn_elasticnet_wine

它将生成一个以作业ID命名的批处理脚本,并通过Slurm的 sbatch 命令提交。它将运行标记为Slurm作业ID

配置作业

您可以在json文件中设置值以控制作业提交。此文件中支持的性质有

配置文件设置 使用
partition 作业应在哪个Slurm分区中运行?
account 要运行的帐户名称
environment 要添加到作业中的额外环境变量的列表
exports 要导出到作业中的环境变量列表
gpus_per_node 在GPU分区中,每个节点分配多少GPU
gres SLURM通用资源请求
mem 分配给CPU作业的内存量
modules 在启动作业之前要加载的模块列表
nodes 从SLURM请求的节点数
ntasks 每个节点上要运行的作业数
exclusive 设置为true以确保作业不与其他作业共享节点
时间 作业可能运行的最大CPU时间
批处理脚本文件 要生成的批处理文件名称。留空则由服务根据运行ID生成脚本文件名

顺序工作作业

有时作业无法在最大允许的墙时间内完成。如果您能够写出检查点文件,则可以使用顺序工作作业从上次停止的地方继续作业。这对于训练深度学习模型或其他长时间运行的作业非常有用。

要使用此功能,您只需向mlflow run命令提供一个参数

  mlflow run --backend slurm -c ../../slurm_config.json -P sequential_workers=3 .

这将像平常一样提交作业,但还会提交3个额外的作业,每个作业都依赖于前一个作业。一旦第一个作业终止,下一个作业将开始。这将一直持续到所有作业都完成。

开发

slurm docker部署非常适合测试和开发。您可以使用包含的docker-compose文件启动slurm环境

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面