CN112445595A - 基于slurm计算平台的多任务提交系统 - Google Patents
基于slurm计算平台的多任务提交系统 Download PDFInfo
- Publication number
- CN112445595A CN112445595A CN202011353480.1A CN202011353480A CN112445595A CN 112445595 A CN112445595 A CN 112445595A CN 202011353480 A CN202011353480 A CN 202011353480A CN 112445595 A CN112445595 A CN 112445595A
- Authority
- CN
- China
- Prior art keywords
- task
- module
- computing
- data
- slurm
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种基于slurm计算平台的多任务提交系统,包括运行环境部署模块、计算任务调度插件模块、计算任务运行数据存储管理模块、统一API接口模块、任务数据统一管理模块。本发明简便的任务提交查看API接口,轻易的作为插件接入到任务提交与监控服务;使用NAS进行任务运行环境和任务运行数据管理,简化用户数据管理操作,高效完成数据准备收集与查看;对接NAS+slurm是该插件的固化使用方案,用户可以基于本发明实现逻辑轻松转接到sge集群或云端计算调度器以及相辅的存储服务。
Description
技术领域
本发明属于计算机服务端技术领域,具体涉及一种基于机器学习的自由能微扰网络设计方法。
背景技术
Slurm是一个用于Linux和Unix内核系统的任务调度工具。它提供了三个关键功能。第一,为用户分配一定时间的专享或非专享的资源(计算机节点),以供用户执行工作。第二,它提供了一个框架,用于启动、执行、监测在节点上运行着的任务(通常是并行的任务,例如 MPI),第三,为任务队列合理地分配资源。
Python是一种面向对象的、动态的程序设计语言。具有非常简洁而清晰的语法,适合于完成各种高层任务。它既可以用来快速开发程序脚本,也可以用来开发大规模的软件。使用Python进行计算脚本开发,便捷高效。
Conda是一个开源、跨平台、语言无关的包管理与环境管理系统。由“连续统分析”(Continuum Analytics)基于BSD许可证发布。Conda允许用户方便地安装不同版本的二进制软件包与该计算平台需要的所有库。还允许用户在不同版本的包之间切换、从一个软件仓库下载包并安装。Conda是用Python语言开发,但能管理其他编程语言的项目(如R语言),包括多语言项目。Conda可安装Python语言的包,类似于其他基于Python的跨平台包管理器(如wheel或pip)。
Slurm提交的任务运行环境由计算机节点本身环境所决定,而用户提交的任务的实际运行环境往往包含特殊的库与软件。用户通常只会往Slurm提交一个bash脚本,并在脚本中定义实际的python脚本并且指定解释器或者R等其他语言的脚本及指定解释器。
这一方法本身已然足够满足用户使用Slurm进行大规模并行计算的需求,但是,该方法并不高效。主要体现在以下几个方面:
1. 对于用户而言实际有价值的计算逻辑往往定义在非bash脚本(如Python或R)中,但是为了能在Slurm集群中运行大批量的计算任务,需要额外花费时间去编写支持在Slurm运行的bash脚本以及进行相应的脚本调试,长此以往将耗费一定精力与时间。
2. 在直接使用slurm的过程中,用户需要自行管理任务的输入输出及错误等数据(文件),增加使用slurm的准备工作。
Slurm运行任务在一个独立的计算节点中,用户需要手动为每一个任务预备计算环境并在每一次任务投递时主动指定计算环境。
发明内容
针对上述技术问题,本发明的目的在于提供一种基于slurm计算平台的多任务提交系统,使用一个服务端进行任务提交与管理,并在服务端集成不同运行任务所需要的数据准备与环境准备,从而满足用户使用相同的接口不同的参数快速完成计算任务提交到slurm集群的操作。
为实现上述目的,本发明提供如下技术方案:
基于slurm计算平台的多任务提交系统,包括运行环境部署模块、计算任务调度插件模块、计算任务运行数据存储管理模块、统一API接口模块、任务数据统一管理模块。
具体的,所述的运行环境部署模块,对于基于python编写的计算脚本,用户使用Conda进行环境部署。在NAS上预备一个路径安装Conda,再创建env并安装所有的依赖包。最后提供该env下的python解释器。
对于使用R语言或者其他编程语言编写的脚本,使用相应的包管理工具准备任务运行环境,并提供解释器路径。
总之,环境需要部署在NAS上,解释器路径需要slurm集群可访问调用。
所述的计算任务调度插件模块,用户使用slurm的常用命令包括:sbatch、squeue、sacct、scontrol、scancel等,分别用于提交任务、查看任务队列、查看任务运行状态、查看任务与重跑任务、取消任务等。
所述的计算任务调度插件模块,主要是封装这些命令并形成高层接口:submit、get_job_status、batch_get_jobs_status、get_job_detail、rerun_job、kill_job、dump_job等接口。
所述的计算任务运行数据存储管理模块,用户仅需要提供一个任务脚本(仅支持单个文件),和一个json格式定义的输入数据;使用dump_file接口将脚本拷贝到任务运行路径;使用dump_json将json格式数据写入到对应的inputs.json文件中。脚本需要在运行过程中重新加载inputs.json文件获取任务指定输入。任务运行的输出及错误信息,包括脚本的输出及slurm定义的输出,都放置在任务运行路径中,以便在任务运行过程及结束后查看。
所述的统一API接口模块,对计算任务的调度与存储管理API进行统一封装,减少用户理解复杂度,便于用户快捷使用API接口提交任务。
所述的任务数据统一管理模块,所有输入输出均定义在NAS盘分配的Log目录下,并为每一个任务创建一个独立的ID,基于此ID,用户使用API便捷的访问每一个任务的所有数据。
与现有技术相比,本发明的有益效果是:
1、简便的任务提交查看API接口,轻易的作为插件接入到任务提交与监控服务。
2、使用NAS进行任务运行环境和任务运行数据管理,简化用户数据管理操作,高效完成数据准备收集与查看。
3、对接NAS + slurm是该插件的固化使用方案,用户可以基于本发明实现逻辑轻松转接到sge集群或云端计算调度器以及相辅的存储服务。
附图说明
图1为本发明的插件架构设计结构图;
图2为本发明的任务管理流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
本发明的插件架构设计如图1所示,具体任务管理流程如图2所示。
一、 初始化环境
1. 首先,在NAS集群上创建独享权限目录,如“/mydir/”,所有投递的任务数据,包括输入输出,算法数据、任务运行环境与任务运行日志等,都将被放置到该目录下。
(1) 在目录下创建conda路径,用于安装conda环境
(2) 在目录下创建scripts路径,用于放置算法脚本
(3) 在目录下创建log路径,类似于一个沙箱环境,用于放置计算运行时数据(包括日志)
2. 在创建的目录下,创建conda环境,参考官方文档提供的安装方法,进行安装。
3. 进入conda环境,并根据不同算法对环境的依赖不同,评估是否区分环境,在conda中使用”conda create”命令创建对应算法环境。创建方法参考文档。
记录下运行环境,后续将作为任务投递配置信息。
二、 撰写任务投递脚本
1. 编写投递任务的shell脚本,用于执行sbatch操作,其中固化的变量包括:
(1) 执行的算法文件名(.py文件),如“loader.py”
(2) 算法需要读入的输入文件名(json格式文件),如“inputs.json”
(3) 其他必须的环境变量信息
需要注意:统一的环境变量可以区别开输入进行传递,但是需要谨慎使用。因为环境变量处理不当会影响到默认环境。
三、 封装slurm命令
1. 将sbatch命令封装成submit接口,将sbatch的参数,包括cpu、内存等信息封装成submit接口的参数,并独立一个inputs={}的参数,用于将输入信息以json(在python中为dict)格式传入。接口需要完成以下事情:
(1) 在log路径创建一个基于任务id标识的目录“/log/{id}”
(2) 将指定算法拷贝到“/log/{id}”下
(3) 将inputs数据dump到输入文件中
2. 将squeue与sacct命令封装成get_job_status接口与batch_get_jobs_status接口。squeue是为了查看在队列中的任务,scct可以查看开始运行的任务的任务状态,包括运行完成后的成功或者失败了的状态。batch_get_jobs_status用于批量查看多个任务的状态。
3. 将是”scontrol show”封装成get_job_detail命令。对于已经进入运行或运行完成的任务,sacct可以获取任务运行详情。根据用户需要,将任务详情组织后作为get_job_detail的返回信息提供给用户。
4. 将“scontrol requeue”命令封装成rerun_job接口。注意支持rerun的任务需要在sbatch提交任务时增加“--requeue”参数。
5. 将scancel命令封装成kill_job接口,用于取消任务。
独立封装dump_jobs接口,将“log/{id}”目录下用户可访问的输出(如结果数据,运行日志等)数据提供用户下载。
实施例2 应用场景与效果:
对于使用slurm集群进行计算任务投递的工程师,管理集群数据是繁琐的事情。在实际场景中,基于本插件封装成一个完整的后端服务应用。应用中使用本发明进行任务投递与任务输入输出管理,而对外暴露算法业务HTTP API。对于业务工程师而言,可以随时随地使用与后端服务相联通的客户端应用,提交算法任务,而无需再管理任务在slurm集群的运行情况,也无需管理任务计算的输入输出存放,只需要等待任务运行结果即可。通过客户端调用后端API去获取slurm集群任务运行的结果,即可以知道任务成功与失败,并将成功任务的结果下载到本地,错误任务也可以方便的查看日志。所有这一切使用客户端封装成更贴近算法业务的更高层使用方式,而后端服务则承担了将算法任务转化为slurm任务与NAS存储的实际访问。本发明在过程中提供了该转换服务。
从产品上线后观察,用户可以很清晰的管理自己的具体的计算任务,为自己的任务分配CPU与内存,而不再关注slurm集群的调度情况与计算结果的存储方式,部分用户可以做到在不了解slurm集群的情况下,仍然能很好的完成自己的计算任务投递与计算结果回收。
Claims (2)
1.基于slurm计算平台的多任务提交系统,其特征在于,包括运行环境部署模块、计算任务调度插件模块、计算任务运行数据存储管理模块、统一API接口模块、任务数据统一管理模块。
2.根据权利要求1所述的基于slurm计算平台的多任务提交系统,其特征在于:
所述的运行环境部署模块,对于基于python编写的计算脚本,用户使用Conda进行环境部署;在NAS上预备一个路径安装Conda,再创建env并安装所有的依赖包;最后提供该env下的python解释器;
对于使用R语言或者其他编程语言编写的脚本,使用相应的包管理工具准备任务运行环境,并提供解释器路径;
总之,环境需要部署在NAS上,解释器路径需要slurm集群可访问调用;
所述的计算任务调度插件模块,用户使用slurm的常用命令包括:sbatch、squeue、sacct、scontrol、scancel,分别用于提交任务、查看任务队列、查看任务运行状态、查看任务与重跑任务、取消任务;
所述的计算任务调度插件模块,主要是封装这些命令并形成高层接口:submit、get_job_status、batch_get_jobs_status、get_job_detail、rerun_job、kill_job、dump_job接口;
所述的计算任务运行数据存储管理模块,用户仅需要提供一个任务脚本和一个json格式定义的输入数据;使用dump_file接口将脚本拷贝到任务运行路径;使用dump_json将json格式数据写入到对应的inputs.json文件中;脚本需要在运行过程中重新加载inputs.json文件获取任务指定输入;任务运行的输出及错误信息,包括脚本的输出及slurm定义的输出,都放置在任务运行路径中,以便在任务运行过程及结束后查看;
所述的统一API接口模块,对计算任务的调度与存储管理API进行统一封装,减少用户理解复杂度,便于用户快捷使用API接口提交任务;
所述的任务数据统一管理模块,所有输入输出均定义在NAS盘分配的Log目录下,并为每一个任务创建一个独立的ID,基于此ID,用户使用API便捷的访问每一个任务的所有数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011353480.1A CN112445595B (zh) | 2020-11-26 | 2020-11-26 | 基于slurm计算平台的多任务提交系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011353480.1A CN112445595B (zh) | 2020-11-26 | 2020-11-26 | 基于slurm计算平台的多任务提交系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112445595A true CN112445595A (zh) | 2021-03-05 |
CN112445595B CN112445595B (zh) | 2022-10-25 |
Family
ID=74737750
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011353480.1A Active CN112445595B (zh) | 2020-11-26 | 2020-11-26 | 基于slurm计算平台的多任务提交系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112445595B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114172903A (zh) * | 2021-11-18 | 2022-03-11 | 苏州浪潮智能科技有限公司 | slurm调度系统的节点扩容方法、装置、设备和介质 |
Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120096463A1 (en) * | 2010-10-15 | 2012-04-19 | Invensys Systems Inc. | System and Method for Integrated Workflow Scaling |
US20150033238A1 (en) * | 2013-07-24 | 2015-01-29 | Bull Sas | System comprising a cluster of shared resources common to a plurality of resource and task managers |
CN105468451A (zh) * | 2014-08-19 | 2016-04-06 | 复旦大学 | 一种基于高通量测序数据的计算机集群的作业调度系统 |
US20160109919A1 (en) * | 2014-10-16 | 2016-04-21 | Bull Sas | Method for Determining an Optimal Frequency for Execution of a Software Application |
CN107203421A (zh) * | 2016-08-28 | 2017-09-26 | 深圳晶泰科技有限公司 | 一种云计算环境中自适应的组合工作流方法 |
CN109522108A (zh) * | 2018-10-30 | 2019-03-26 | 西安交通大学 | 一种基于Kernel合并的GPU任务调度系统及方法 |
US20190108063A1 (en) * | 2017-10-10 | 2019-04-11 | Bull Sas | Device and method for acquiring values of counters associated with a computational task |
CN110177020A (zh) * | 2019-06-18 | 2019-08-27 | 北京计算机技术及应用研究所 | 一种基于Slurm的高性能集群管理方法 |
CN110209484A (zh) * | 2019-05-30 | 2019-09-06 | 华南理工大学 | 基于多云和安全映射的可信云任务调度系统及方法 |
CN110781007A (zh) * | 2019-10-31 | 2020-02-11 | 广州市网星信息技术有限公司 | 任务处理方法、装置、服务器、客户端、系统和存储介质 |
CN110928659A (zh) * | 2019-11-20 | 2020-03-27 | 哈尔滨工程大学 | 一种具有自适应功能的数值水池系统远程多平台接入方法 |
CN111125594A (zh) * | 2019-12-04 | 2020-05-08 | 深圳晶泰科技有限公司 | 面向分布式系统中管理大量任务输入参数的方法和系统 |
CN111221541A (zh) * | 2019-12-26 | 2020-06-02 | 曙光信息产业(北京)有限公司 | 集群并行程序部署方法以及装置 |
CN111338773A (zh) * | 2020-02-21 | 2020-06-26 | 华云数据有限公司 | 一种分布式定时任务调度方法、调度系统及服务器集群 |
CN111857765A (zh) * | 2020-06-16 | 2020-10-30 | 深圳晶泰科技有限公司 | 用于药物设计系统的插件系统及其生成方法和更新方法 |
US20200348982A1 (en) * | 2018-12-21 | 2020-11-05 | Bull Sas | Method for deploying a task in a supercomputer, method for implementing a task in a supercomputer, corresponding computer program and supercomputer |
-
2020
- 2020-11-26 CN CN202011353480.1A patent/CN112445595B/zh active Active
Patent Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120096463A1 (en) * | 2010-10-15 | 2012-04-19 | Invensys Systems Inc. | System and Method for Integrated Workflow Scaling |
US20150033238A1 (en) * | 2013-07-24 | 2015-01-29 | Bull Sas | System comprising a cluster of shared resources common to a plurality of resource and task managers |
CN105468451A (zh) * | 2014-08-19 | 2016-04-06 | 复旦大学 | 一种基于高通量测序数据的计算机集群的作业调度系统 |
US20160109919A1 (en) * | 2014-10-16 | 2016-04-21 | Bull Sas | Method for Determining an Optimal Frequency for Execution of a Software Application |
CN107203421A (zh) * | 2016-08-28 | 2017-09-26 | 深圳晶泰科技有限公司 | 一种云计算环境中自适应的组合工作流方法 |
US20190108063A1 (en) * | 2017-10-10 | 2019-04-11 | Bull Sas | Device and method for acquiring values of counters associated with a computational task |
CN109522108A (zh) * | 2018-10-30 | 2019-03-26 | 西安交通大学 | 一种基于Kernel合并的GPU任务调度系统及方法 |
US20200348982A1 (en) * | 2018-12-21 | 2020-11-05 | Bull Sas | Method for deploying a task in a supercomputer, method for implementing a task in a supercomputer, corresponding computer program and supercomputer |
CN110209484A (zh) * | 2019-05-30 | 2019-09-06 | 华南理工大学 | 基于多云和安全映射的可信云任务调度系统及方法 |
CN110177020A (zh) * | 2019-06-18 | 2019-08-27 | 北京计算机技术及应用研究所 | 一种基于Slurm的高性能集群管理方法 |
CN110781007A (zh) * | 2019-10-31 | 2020-02-11 | 广州市网星信息技术有限公司 | 任务处理方法、装置、服务器、客户端、系统和存储介质 |
CN110928659A (zh) * | 2019-11-20 | 2020-03-27 | 哈尔滨工程大学 | 一种具有自适应功能的数值水池系统远程多平台接入方法 |
CN111125594A (zh) * | 2019-12-04 | 2020-05-08 | 深圳晶泰科技有限公司 | 面向分布式系统中管理大量任务输入参数的方法和系统 |
CN111221541A (zh) * | 2019-12-26 | 2020-06-02 | 曙光信息产业(北京)有限公司 | 集群并行程序部署方法以及装置 |
CN111338773A (zh) * | 2020-02-21 | 2020-06-26 | 华云数据有限公司 | 一种分布式定时任务调度方法、调度系统及服务器集群 |
CN111857765A (zh) * | 2020-06-16 | 2020-10-30 | 深圳晶泰科技有限公司 | 用于药物设计系统的插件系统及其生成方法和更新方法 |
Non-Patent Citations (1)
Title |
---|
孙震宇 等: "大规模异构计算集群的双层作业调度系统", 《计算机工程》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114172903A (zh) * | 2021-11-18 | 2022-03-11 | 苏州浪潮智能科技有限公司 | slurm调度系统的节点扩容方法、装置、设备和介质 |
CN114172903B (zh) * | 2021-11-18 | 2023-07-14 | 苏州浪潮智能科技有限公司 | slurm调度系统的节点扩容方法、装置、设备和介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112445595B (zh) | 2022-10-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11232015B2 (en) | Automated software verification service | |
WO2019095936A1 (zh) | 容器镜像的构建方法、系统、服务器、装置及存储介质 | |
CN110413288B (zh) | 应用部署方法、装置、服务器及存储介质 | |
US20150212812A1 (en) | Declarative and pluggable business logic for systems management | |
US20150220308A1 (en) | Model-based development | |
US20200136930A1 (en) | Application environment provisioning | |
WO2022109932A1 (zh) | 基于slurm计算平台的多任务提交系统 | |
CN110494849B (zh) | 用于确定跨平台应用迁移的成功的系统和方法 | |
CN112445595B (zh) | 基于slurm计算平台的多任务提交系统 | |
US10592277B2 (en) | System and method for determining the success of a cross-platform application migration | |
Dai et al. | Design of industrial edge applications based on iec 61499 microservices and containers | |
CN111522623B (zh) | 组件化软件多进程运行系统 | |
Fortier et al. | Dyninka: a FaaS framework for distributed dataflow applications | |
US12008353B2 (en) | Parsing tool for optimizing code for deployment on a serverless platform | |
CN115167985A (zh) | 一种虚拟化的算力提供方法及系统 | |
Zhang et al. | A low-code development framework for cloud-native edge systems | |
KR102496687B1 (ko) | 도커화된 인공지능 라이브러리에 대한 프록시 생성 장치 및 방법, 도커화된 인공지능 라이브러리 기반 ros 분산 시스템 | |
KR102485154B1 (ko) | 전력 통신 서비스 | |
US10990357B2 (en) | Application build automation | |
US20240202062A1 (en) | Dynamic network debug service in a containerized computing cluster | |
CN118092950A (zh) | 面向异构超算的应用软件封装方法和系统 | |
Knorr | Exploring Xen/KVM in prototyping an automotive use-case | |
Fanuli | Allowing prototyping of applications running on heterogeneous HW through a multi-tenant platform based on cloud microservices | |
CN117873602A (zh) | 分布式计算框架的管理方法、装置、设备及存储介质 | |
Anisimov et al. | PARCS Technology: Concept and Implementations |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |