Project Icon

submitit

Python函数Slurm集群提交工具

Submitit是一个轻量级Python工具,用于在Slurm集群中提交函数进行计算。它封装了提交过程,提供结果和日志访问,支持Slurm和本地执行切换,以及超时和分区设置。Submitit适用于Python 3.8+,具备日志读取、错误处理、并发和多任务功能,简化了集群计算任务,方便从Python内部启动Slurm作业。该工具旨在为研究人员提供便捷的集群计算解决方案。

CircleCI 代码风格: black Pypi conda-forge

提交它!

什么是submitit?

Submitit是一个轻量级工具,用于在Slurm集群中提交Python函数进行计算。它基本上封装了提交过程,并提供对结果、日志等的访问。 Slurm是一个开源、容错且高度可扩展的集群管理和作业调度系统,适用于大型和小型Linux集群。 Submitit允许在Slurm上执行和本地执行之间无缝切换。

一个例子胜过千言万语:执行加法

在安装了submitit的环境中:

import submitit

def add(a, b):
    return a + b

# executor是提交接口(日志存储在该文件夹中)
executor = submitit.AutoExecutor(folder="log_test")
# 设置超时时间(分钟)和运行作业的分区
executor.update_parameters(timeout_min=1, slurm_partition="dev")
job = executor.submit(add, 5, 7)  # 将计算add(5, 7)
print(job.job_id)  # 你的作业ID

output = job.result()  # 等待完成并返回输出
assert output == 12  # 5 + 7 = 12... 你的加法在集群中计算完成

Job类还提供了读取日志文件的工具(job.stdout()job.stderr())。

如果你想运行的是命令,可以使用submitit.helpers.CommandFunction将其转换为Python函数,然后提交它。 默认情况下,CommandFunction中的stdout是静默的,但可以通过verbose=True取消静默。

这里查看更多示例!!!

Submitit是一个Python 3.8+工具箱,用于向Slurm提交作业。 它旨在从Python代码中运行Python函数。

安装

快速安装,在已安装pip的虚拟环境/conda环境中(检查which pip):

  • 稳定版本:
    pip install submitit
    
  • 使用__conda__安装稳定版本:
    conda install -c conda-forge submitit
    
  • main分支:
    pip install git+https://github.com/facebookincubator/submitit@main#egg=submitit
    

你可以尝试运行MNIST示例来检查一切是否按预期工作(需要sklearn)。

文档

查看以下页面以获取更详细的信息:

  • 示例:展示了一系列处理错误、并发、多任务等的示例。
  • 结构和主要对象:帮助你更好地理解submitit的工作原理、每个作业创建的文件以及你将交互的主要对象。
  • 检查点:了解如何配置你的作业以便在被抢占和/或超时时进行检查点。
  • 提示和注意事项:提供了使用submitit时可能有用的一系列信息。
  • 使用nevergrad进行超参数搜索nevergrad使用的基本示例以及它如何与submitit接口。

目标

这个Python3包的目标是能够从Python内部轻松地在Slurm上启动作业,使用与标准库包concurrent.futures相同的提交和作业模式:

使用这个轻量级包有以下几个好处:

  • 提交任何函数,包括lambda和脚本定义的函数。
  • 如果作业失败,会引发带有堆栈跟踪的错误。
  • 重新排队被抢占的作业(仅限Slurm)
  • 在一行内在submitit执行器和concurrent.futures执行器之间切换,因此可以轻松地在slurm上或本地使用多线程运行代码。
  • 当被抢占或超时时对有状态的可调用对象进行检查点,并从当前状态重新排队(高级功能)。
  • 轻松访问多节点/任务作业的任务本地/全局排名。
  • 相同的代码可以通过插件系统在不同的集群上工作。

Submitit被FAIR研究人员在FAIR集群上使用。 默认设置是为了让他们的工作更轻松,可能并不适合每个集群。

非目标

  • 用于运行slurm作业的命令行工具。这里,一切都发生在Python内部。为此,你可以使用Hydrasubmitit插件(版本 >= 1.0.0)。
  • 任务队列,这只实现了启动任务的能力,但不以任何方式调度它们。
  • 在Python2中使用!这是一个仅支持Python3.8+的包 :)

与dask.distributed的比较

dask是一个优秀的分布式计算框架。dask.distributed提供了与submitit相同的concurrent.futures执行器API:

from distributed import Client
from dask_jobqueue import SLURMCluster
cluster = SLURMCluster(processes=1, cores=2, memory="2GB")
cluster.scale(2)  # 这可能需要几秒钟来启动
executor = Client(cluster)
executor.submit(...)

submitit的主要区别是,dask.distributed将作业分配给一组工作者(参见上面的cluster变量),而submitit作业直接在集群上运行。在这个意义上,submitit是比dask.distributed更低级的接口,你可以更直接地控制你的作业,包括单独的stdoutstderr,以及在抢占和超时情况下可能的检查点。另一方面,你应该避免使用submitit提交多个小任务,这会创建许多独立的作业并可能使集群过载,而通过dask.distributed你可以毫无问题地这样做。

贡献者

按时间顺序:Jérémy Rapin, Louis Martin, Lowik Chanussot, Lucas Hosseini, Fabio Petroni, Francisco Massa, Guillaume Wenzek, Thibaut Lavril, Vinayak Tantia, Andrea Vedaldi, Max Nickel, Quentin Duval(欢迎贡献并添加你的名字 ;) )

许可证

Submitit根据MIT许可证发布。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

白日梦AI

白日梦AI提供专注于AI视频生成的多样化功能,包括文生视频、动态画面和形象生成等,帮助用户快速上手,创造专业级内容。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

讯飞绘镜

讯飞绘镜是一个支持从创意到完整视频创作的智能平台,用户可以快速生成视频素材并创作独特的音乐视频和故事。平台提供多样化的主题和精选作品,帮助用户探索创意灵感。

Project Cover

讯飞文书

讯飞文书依托讯飞星火大模型,为文书写作者提供从素材筹备到稿件撰写及审稿的全程支持。通过录音智记和以稿写稿等功能,满足事务性工作的高频需求,帮助撰稿人节省精力,提高效率,优化工作与生活。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

AIWritePaper论文写作

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

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号