CN117421109B - 训练任务的调度方法、装置、计算机设备及存储介质 - Google Patents

训练任务的调度方法、装置、计算机设备及存储介质 Download PDF

Info

Publication number
CN117421109B
CN117421109B CN202311749858.3A CN202311749858A CN117421109B CN 117421109 B CN117421109 B CN 117421109B CN 202311749858 A CN202311749858 A CN 202311749858A CN 117421109 B CN117421109 B CN 117421109B
Authority
CN
China
Prior art keywords
training
node
scheduling
instance
applicable
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.)
Active
Application number
CN202311749858.3A
Other languages
English (en)
Other versions
CN117421109A (zh
Inventor
康英杰
王德奎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Suzhou Metabrain Intelligent Technology Co Ltd
Original Assignee
Suzhou Metabrain Intelligent Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Suzhou Metabrain Intelligent Technology Co Ltd filed Critical Suzhou Metabrain Intelligent Technology Co Ltd
Priority to CN202311749858.3A priority Critical patent/CN117421109B/zh
Publication of CN117421109A publication Critical patent/CN117421109A/zh
Application granted granted Critical
Publication of CN117421109B publication Critical patent/CN117421109B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Medical Informatics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请涉及任务调度技术领域,特别是涉及一种训练任务的调度方法、装置、计算机设备及存储介质。训练任务的调度方法方法包括:获取待训练的实例模型的训练角色;调用存储模块,查询存储模块中适用训练角色的节点数据;其中,存储模块用于存储适用各角色类型的节点数据;自节点数据反馈的若干个节点中,选择其中一个节点作为训练节点,将实例模型分配至训练节点,调度训练节点运行实例模型对应的角色实例。采用本方法能够优化训练任务调度逻辑,有利于提高训练任务调度效率,以提高调度性能。

Description

训练任务的调度方法、装置、计算机设备及存储介质
技术领域
本申请涉及任务调度技术领域,特别是涉及一种训练任务的调度方法、训练任务的调度装置、计算机设备以及计算机可读存储介质。
背景技术
任务调度是AI(Artificial Intelligence,人工智能)训练平台的重要功能之一,由诸如调度器组件等训练任务的调度装置来完成训练任务与节点之间的调度,调度各实例模型的训练节点。分布式训练通过模型并行或数据并行等技术手段,实现大规模参数量和大规模数据量的模型训练。
在相关调度技术中,进行分布式训练时通常遍历训练任务中的每一个实例模型,调度每个实例模型时均会遍历所有节点,从中选出符合实例模型要求的节点,导致调度过程中的运算量十分庞大。
发明内容
基于此,有必要针对上述技术问题,提供一种能够优化训练任务调度逻辑,有利于提高训练任务调度效率,以提高调度性能的训练任务的调度方法、训练任务的调度装置、计算机设备以及计算机可读存储介质。
一方面,提供一种训练任务的调度方法,训练任务的调度方法包括:获取待训练的实例模型的训练角色;调用存储模块,查询存储模块中适用训练角色的节点数据;其中,存储模块用于存储适用各角色类型的节点数据;自节点数据反馈的若干个节点中,选择其中一个节点作为训练节点,将实例模型分配至训练节点,调度训练节点运行实例模型对应的角色实例。
在本申请的一实施例中,查询存储模块中适用训练角色的节点数据包括:查询存储模块中是否存在训练角色标识;响应于存储模块中未存在训练角色标识,遍历各节点的节点信息,分别基于节点信息筛选适用训练角色的适用节点,并形成适用节点的元素信息;将可链接各适用节点的元素信息反馈至存储模块,以令存储模块存储训练角色标识与元素信息的映射关系。
在本申请的一实施例中,基于节点信息筛选适用训练角色的适用节点,并形成适用节点的元素信息包括:识别节点的节点信息是否满足实例模型的标签选择规则;响应于节点满足实例模型的标签选择规则,计算节点当前允许调度的实例模型的允许数量;基于允许数量判断节点是否作为适用节点;响应于判定节点作为适用节点,将适用节点的允许数量以及链接其的指针作为形成元素信息。
在本申请的一实施例中,允许数量包括第一阈值;计算节点当前允许调度的实例模型的允许数量包括:获取训练任务的容器编排引擎约束节点调度实例模型的约束数量;获取当前已调度至节点的实例模型的调度数量;将约束数量与调度数量的差值作为第一阈值。
在本申请的一实施例中,允许数量包括第二阈值;计算节点当前允许调度的实例模型的允许数量包括:获取节点各类资源的空余量;获取实例模型对各类资源的请求量;分别计算各类资源允许运行实例模型的数量,取各类资源允许运行实例模型的数量的最小者,作为第二阈值。
在本申请的一实施例中,存储模块动态存储各角色类型与其适用节点的元素信息之间的映射关系;其中,训练角色为角色类型中的一者;查询存储模块中适用训练角色的节点信息包括:查找存储模块中是否存在训练角色标识;响应于存储模块中存在训练角色标识,获取存储模块中与训练角色标识关联的各节点的元素信息。
在本申请的一实施例中,查询存储模块中适用训练角色的节点数据还包括:响应于节点数据为空,则判定训练角色的实例模型调度失败;获取新的待训练的实例模型的训练角色,响应于训练角色此前的实例模型判定调度失败,则判定新的待训练的实例模型调度失败。
在本申请的一实施例中,调度训练节点运行实例模型对应的角色实例之后还包括:响应于实例模型调度成功,将训练节点的资源变动同步至存储模块中的节点数据;识别节点数据中训练节点同步后的信息,判断是否可再向其分配新的实例模型;响应于判定不可继续向其分配新的实例模型,删除节点数据中训练节点的信息。
在本申请的一实施例中,自节点数据反馈的若干个节点中,选择其中一个节点作为训练节点包括:分别获取各若干个节点的显卡的空闲数量;比对所获取的若干个空闲数量;选择空闲数量最大或最小的节点作为训练节点。
在本申请的一实施例中,训练任务包括多种角色类型分别对应的若干个实例模型,训练角色为多种角色类型中的一种;多种角色类型包括管理角色以及计算角色。
在本申请的一实施例中,训练任务的调度方法包括:获取计算集群中各训练任务的状态以及节点的状态;基于训练任务的创建时间对训练任务进行排序,按照排序顺序将训练任务依次写入任务队列;依次遍历任务队列中的训练任务,调度实例模型并分别分配训练节点;统计各训练任务中调度成功的实例模型的数量,响应于训练任务中调度成功的实例模型数量达到允许训练任务运行的目标数量,将目前各实例模型与所分配的训练节点进行绑定,并判定训练任务调度完成。
另一方面,提供了一种训练任务的调度装置,训练任务的调度装置包括:存储模块以及调度模块;存储模块用于存储适用各角色类型的节点数据;调度模块与存储模块连接,用于获取待训练的实例模型的训练角色;其中,训练任务包括多种角色类型分别对应的若干个实例模型;调用存储模块,查询存储模块中适用训练角色的节点数据;其中,存储模块用于存储适用各角色类型的节点数据;自节点数据反馈的若干个节点中,选择其中一个节点作为训练节点,将实例模型分配至训练节点,调度训练节点运行实例模型对应的角色实例。
在本申请的一实施例中,训练任务的调度装置还包括:状态模块、排队模块、绑定模块;状态模块,用于存储计算集群中各训练任务的状态以及节点的状态;排队模块,与状态模块以及调度模块连接,用于基于训练任务的创建时间对训练任务进行排序,按照排序顺序将训练任务依次写入任务队列;调度模块依次遍历任务队列中的训练任务,调度实例模型并分别分配训练节点;调度模块还用于统计各训练任务中调度成功的实例模型的数量,判断训练任务中调度成功的实例模型数量是否达到允许训练任务运行的目标数量,响应于调度成功的实例模型数量达到允许训练任务运行的目标数量,判定训练任务调度完成;绑定模块,与调度模块连接,用于接收调度模块反馈的调度结果,响应于判定训练任务调度完成,将目前各实例模型与所分配的训练节点进行绑定。
再一方面,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:获取待训练的实例模型的训练角色;调用存储模块,查询存储模块中适用训练角色的节点数据;其中,存储模块用于存储适用各角色类型的节点数据;自节点数据反馈的若干个节点中,选择其中一个节点作为训练节点,将实例模型分配至训练节点,调度训练节点运行实例模型对应的角色实例。
又一方面,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:获取待训练的实例模型的训练角色;调用存储模块,查询存储模块中适用训练角色的节点数据;其中,存储模块用于存储适用各角色类型的节点数据;自节点数据反馈的若干个节点中,选择其中一个节点作为训练节点,将实例模型分配至训练节点,调度训练节点运行实例模型对应的角色实例。
区别于相关技术,上述训练任务的调度方法、训练任务的调度装置、计算机设备以及计算机可读存储介质,存储模块中预先存储适用训练角色的节点数据,在调度待训练的实例模型时,可以基于存储模块中适用该实例模型的训练角色的节点数据,相较于相关技术中每次调度实例模型时均遍历各节点判断是否适用,本申请能够有效减少繁冗地重复步骤,从而优化训练任务调度逻辑,有利于提高训练任务调度效率,以提高调度性能的训练任务。
附图说明
图1是本申请训练任务的调度方法一实施例的应用场景示意图;
图2是本申请训练任务的调度方法一实施例的流程示意图;
图3是本申请训练任务的调度方法另一实施例的流程示意图;
图4是本申请训练任务的调度方法又一实施例的流程示意图;
图5是本申请存储模块存储内容一实施例的结构示意图;
图6是本申请训练任务的调度装置一实施例的结构示意图;
图7是本申请训练任务的调度装置另一实施例的结构示意图;
图8是本申请计算机设备一实施例的结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
为解决相关技术中训练任务调度过程中存在繁冗重复工作的技术问题,本申请提供了一种训练任务的调度方法、训练任务的调度装置、计算机设备以及计算机可读存储介质。以下对本申请的详细实施方式进行举例阐述。
请参阅图1,图1是本申请训练任务的调度方法一实施例的应用场景示意图。
在一实施例中,计算机算力的提升实现模型迭代周期大幅缩短。AI训练平台提供基础架构和工具来管理、运行、监控和优化机器学习或深度学习模型训练的服务平台,能够提高计算资源利用率,缩短模型训练时间,有利于加速模型的研发和创新。
为提供大规模算力,AI训练平台将众多计算机组成一个计算集群11,并进行统一管理,从而满足训练各类模型的需求。
可选地,本实施例中AI训练平台可以是Kubernetes等。其中,Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,具有易用性好、生态好、开源免费等优势。
如本申请中训练任务13的调度等任务调度,是AI训练平台的重要功能之一。通常利用诸如训练任务13的调度装置等调度器组件12完成相应功能。计算集群11中的每一台计算机称为一个节点,本文中以“节点”代表计算集群11中的一台计算机。
调度器组件12可以根据计算集群11资源占用状态,为训练任务13分配合适的某个或某些节点。而后节点可以根据调度器的分配结果,运行所分配到的训练任务13。
具体地,训练任务13可以分为单机训练任务和分布式训练任务两类。模型参数少、数据量也小的训练任务13,可以采用单机训练方式。随着模型尺寸的快速增大和数据集的快速增长,采用单机训练方式进行训练任务13存在一定负担,因此可以采用分布式训练方式,通过模型并行或数据并行等技术手段,实现大规模参数量和大规模数据量的模型训练。
依赖于使用深度学习框架,大多数分布式训练任务13可以包括master(管理)角色和worker(计算)角色。
其中,master角色负责参数聚合与任务下发,worker角色负责执行任务的计算过程。此外,分布式训练任务13还可以存在另外的角色进行一些其它的协调工作。
如分布式训练任务的训练任务13中,每一种角色会有多个角色实例,尤其是worker角色会有大量的角色实例。一个角色实例对应一个Pod(相当于实例模型)。
在相关的调度技术中,调度器组件12会遍历训练任务13中的每一个Pod,然后对每个Pod遍历所有节点,从中选出符合Pod要求的节点。本申请考虑到,同一种角色对应的角色实例由相同的模板创建,拥有相同的标签选择器、资源需求量等要求。因此调度器组件12在调度同一种角色对应的角色实例时,选出符合同一角色的Pod要求的节点这一过程实际上是在做重复的操作,导致调度性能较差。
为此,本申请对分布式训练任务13调度逻辑进行优化,通过减少筛选节点时的重复操作,提高调度性能。以下对本申请的详细工作原理进行举例阐述。
请参阅图2,图2是本申请训练任务的调度方法一实施例的流程示意图。
S201:获取待训练的实例模型的训练角色。
在本实施例中,训练任务可以由多种角色类型构成,其中,每种角色类型可以具有多个角色实例,各角色实例可以分别对应一个实例模型。在训练任务的调度过程中,可以是遍历训练任务中的每一个实例模型,依次调度每个实例模型,并为其选择适用的训练节点。
训练角色为多种角色类型中的一种。
S202:调用存储模块,查询存储模块中适用训练角色的节点数据;其中,存储模块用于存储适用各角色类型的节点数据。
在本实施例中,顾名思义,存储模块具有存储数据的功能。本实施例中,存储模块可以存储适用训练角色的节点的相关信息,即节点数据。换言之,节点数据包括适用训练角色的节点的信息。如是,本实施例中可以在存储模块中对适用训练角色的节点进行查询,可以无需遍历计算集群中的全部节点,以筛选全部节点中适用训练角色的节点,且可以无需每次调度属于同一训练角色的实例模型时均遍历计算集群中的全部节点,从而有效减少筛选适用训练角色的繁冗过程,减少调度过程中的计算资源占用,进而能够有利于提高训练任务调度效率,以提高调度性能。
容易理解的是,在训练任务的调度中,计算集群包括多个节点,多个节点可以适用于不同的角色类型。故在获取待训练的实例模型后,可以查询存储模块,以获取对应适用训练角色的节点数据。
S203:自节点数据反馈的若干个节点中,选择其中一个节点作为训练节点,将实例模型分配至训练节点,调度训练节点运行实例模型对应的角色实例。
在本实施例中,如前文中所阐述的,节点数据包括适用训练角色的节点的信息,可以对节点数据进行识别。以获取节点数据所反馈的若干个节点,即节点数据所反馈的节点可以是一个或多个。在所反馈的若干个节点中进行选择,将其中一个节点作为当前待训练的实例模型的训练节点,将该实例模型分配至训练节点,以可以在后续调度训练节点运行实例模型对应的角色实例。
可选地,自若干个节点中选择其中一个节点可以是随机选择,也可以是基于预设规则进行选择,在此不做限定。
可选地,调度训练节点运行角色实例可以是在判定训练任务调度完成时,一并调度各训练节点运行分配至其的角色实例,在此不做限定。
由此可见,本实施例中,存储模块中预先存储适用训练角色的节点数据,在调度待训练的实例模型时,可以基于存储模块中适用该实例模型的训练角色的节点数据,相较于相关技术中遍历各节点判断是否适用,本申请能够有效减少繁冗地重复步骤,从而优化训练任务调度逻辑,有利于提高训练任务调度效率,以提高调度性能的训练任务。
请参阅图3,图3是本申请训练任务的调度方法另一实施例的流程示意图。
S301:获取计算集群中各训练任务的状态以及节点的状态。
在本实施例中,计算集群为一种计算机系统,通过一组松散集成的计算机软件或硬件连接起来高度紧密地协作完成计算工作。
集群系统中的单个计算机通可以称为节点。换言之,计算集群可以包括多个节点。其中,节点可以是硬件计算机、软件计算机等,在此不做限定。节点的状态可以是在线、离线、可用、不可用等,在此不做限定。
具体地,计算集群中的节点可以适用多种角色类型的训练,即可以适用至少两种角色类型的训练,且各节点可以预设为仅适用一种角色类型的训练。
其中,训练任务可以包括分布式训练任务。进一步地,训练任务还可以包括单机训练任务。可选地,训练任务的状态可以是完成、未完成亦或是待调度等状态,在此不做限定。
S302:基于训练任务的创建时间对训练任务进行排序,按照排序顺序将训练任务依次写入任务队列。
在本实施例中,可以自所获取的训练任务中筛选得到需要调度的训练任务。可以按照创建时间的先后顺序对训练任务进行排序。可选地,可以将创建时间在先的任务排在前,以令其先写入任务队列,从而优化训练任务的排队过程,降低训练任务等待调度的时间过长,进而降低训练任务在等待调度过程中失效的风险。
进一步地,若多个训练任务的创建时间相同,则可以按照训练任务标识名称的字符顺序进行排序。在完成训练任务的排序后,可以按顺序将需要调度的训练任务写入任务队列。
S303:依次遍历任务队列中的训练任务,调度实例模型并分别分配训练节点。
在本实施例中,可以依次读取训练任务,对各训练任务进行调度。对各训练任务进行调度时,可以如上述实施例中所阐述的,为出队的训练任务的各实例模型分配训练节点。具体地,调度实例模型分配训练节点可以包括:获取待训练的实例模型的训练角色。调用存储模块,查询存储模块中适用训练角色的节点数据;其中,存储模块用于存储适用各角色类型的节点数据。自节点数据反馈的若干个节点中,选择其中一个节点作为训练节点,将实例模型分配至训练节点,调度训练节点运行实例模型对应的角色实例。
S304:统计各训练任务中调度成功的实例模型的数量,响应于训练任务中调度成功的实例模型数量达到允许训练任务运行的目标数量,将目前各实例模型与所分配的训练节点进行绑定,并判定训练任务调度完成。
在本实施例中,在对各训练任务进行调度时,统计该训练任务调度成功的实例模型的数量。各训练任务具有预设的允许训练任务运行的目标数量,换言之,当目标数量的实例模型调度成功时,可以认为允许训练任务运行。
通俗来讲,目标数量可以认为是训练任务运行要求的实例模型调度成功的最小数量。换言之,可以是达到目标数量的实例模型调度成功,则调度训练任务运行,即调度各训练节点运行各角色实例进行训练。
可选地,目标数量可以是预先定义的,可以是加权一定权重的实例模型数量,部分实例模型调度成功即可认为训练任务调度完成;亦或是训练任务中实例模型的数量,即全部实例模型调度成功,才可认为训练任务调度完成,在此不做限定。
响应于训练任务调度完成,将各实例模型与其所分配的训练节点进行绑定,并判定训练任务调度完成。
与此同时,若遍历训练任务的全部实例模型后,调度成功的实例模型数量不足目标数量,则认为可能是计算集群中的资源不足,而导致训练任务可能无法调度。则判定该训练任务调度失败,还可以进一步撤销该训练任务中为各实例模型分配的训练节点。进一步地,本实施例中可以在实例模型分配训练节点时,训练节点的资源信息会发生变化,在判定训练任务调度失败时,可以进一步撤销该训练任务调度过程中节点资源信息的变化。
关于在实例模型分配训练节点时,训练节点的资源信息会发生变化的具体实施方式将在后文进行阐述。
由此可见,本实施例中,训练任务可以包括多种角色类型,各角色类型可以包括多个角色实例,每个角色实例对应一个实例模型。当计算集群中存在多个训练任务时,针对同一中角色类型的实例模型,可以无需重复地遍历计算集群内的节点以筛选适用其的节点,均可以利用存储模块为各训练任务的各实例模型选择适用其的节点,有效减少筛选适用实例模型的节点的重复繁冗过程,从而有效提升调度性能。
以下对本申请中训练任务的调度方法中调度实例模型的详细步骤进行举例阐述。
请结合参阅图4以及图5,图4是本申请训练任务的调度方法又一实施例的流程示意图,图5是本申请存储模块存储内容一实施例的结构示意图。
在一实施例中,训练任务包括多种角色类型分别对应的若干个实例模型,训练角色为多种角色类型中的一种。如是,能够对相对尺寸较大的模型以及数据集进行训练,实现分布式训练,协调诸如分布式训练任务中的多种角色,提高训练任务的调度性能。同时,本实施例中可以依次/同时调度多个训练任务,多个训练任务可以包括单机训练,也可以包括分布式训练,有利于降低对训练任务类型的限制,进而能够丰富训练任务调度的应用场景,同时在对多种角色类型的训练任务进行调度时,可以显著提升调度性能。
举例而言,一个训练任务中的多种角色类型包括管理角色以及计算角色。其中,管理角色可以实现参数聚合以及任务下发,计算角色可以负责执行具体任务的计算过程。
进一步地,角色类型还可以包括协调角色等,用于完成诸如协调、调度等工作。
以下对本实施例中训练任务调度的具体工作原理进行举例阐述。本实施例为对前文所阐述实施例详细实施方式的扩展,包含前文所阐述的实施例的全部内容。
在一实施例中,可以获取待训练的实例模型的训练角色。举例而言,训练角色可以是管理角色、计算角色等。
调用存储模块。其中,存储模块可以存储各角色类型与其适用节点的元素信息之间的映射关系,从而便于查找适用各角色类型的适用节点,减少调度过程的重复步骤,提高调度效率。进一步地,存储模块的存储方式可以是动态存储,即能够随着适用节点的实际资源变化而同步更新,以提高存储模块的功能性。换言之,存储模块可以动态存储各角色类型与其适用节点的元素信息之间的映射关系。
可选地,存储模块中可以是各角色类型标识关联节点数据,节点数据的存储格式可以是节点信息列表等,在此不做限定。
如是,在查询适用训练角色的适用节点时,可以查询存储模块中是否存在训练角色标识。若训练角色标识存在于存储模块中,认为此前已调度过训练角色的实例模型,或预先选择过适用训练角色的实例模型,则可以自存储模块查询节点数据。若训练角色标识未存在于存储模块,认为此前未调度训练角色的实例模型,则对适用训练角色的节点进行筛选并同步更新存储模块,以便于后续调度训练角色的实例模型时,可以自存储模块中查询适用节点,而非重复地再次遍历计算集群中的节点进行选择,以提高调度性能。
举例而言,节点数据可以包括各适用节点的元素信息。
具体地,可以响应于存储模块中存在训练角色标识,可以获取存储模块中与训练角色标识关联的各节点的元素信息。
进一步地,本实施例中会在调度实例模型成功后更新节点数据,并判断训练节点是否还可以分配实例模型,在判定不可继续向其分配新的实例模型,删除节点数据中训练节点的信息,以保障调用的训练节点能够运行实例模型进行训练任务,从而有利于提高存储模块中节点数据有效性、真实性,能够减少重复分配节点的冗余过程,进而能够提高调度性能。因此,在识别节点数据时,可能出现节点数据为空的情况。关于具体判定是否删除训练节点信息的过程将在后文进行详细阐述,在此就不再赘述。
有鉴于此,在存储模块中存在与训练节点关联的节点数据,但节点数据为空,即无适用节点的元素信息时,则可以判定训练角色的实例模型调度失败。与此同时,可以在后续获取新的待训练的实例模型的训练角色,对新的实例模型所属训练角色进行识别,响应于该训练角色存在此前的实例模型判定调度失败,认为当前计算集群内无可以用于训练该训练角色的实例模型的节点,或是由于节点的资源原因、亦或是容器编排引擎原因,则判定新的待训练的实例模型调度失败。如是,有利于提高不可调度实例模型的调度效率,减少无用的调度过程,对计算集群中节点可能发生的情况进行充分考虑,并形成调度策略,以提高调度性能。
具体地,如前文中所阐述的,可能出现存储模块中未存在训练角色标识的情况。响应于存储模块中未存在训练角色标识,可以遍历计算集群中各节点的节点信息,分别基于节点信息筛选适用训练角色的适用节点,并形成适用节点的元素信息,将适用节点的元素信息存储至存储模块,并与训练角色标识关联,以作为适用训练角色的节点数据。如是,本实施例中可以在首次调度训练角色的实例模型时,对适用训练角色的节点进行选择,以在后续调度训练角色的其他实例模型时,可以自存储模块中获取训练角色的节点数据,减少重复地繁冗筛选适用节点的步骤。
具体地,可以识别节点的节点信息是否满足实例模型的标签选择规则。容易理解的是,属于同一角色类型的实例模型可以具有相同的标签选择规则,标签选择规则可以是具有指定的标签选择器、资源需求量等。适用同一角色类型的实例模型的适用节点可以是相同地。
可选地,节点信息可以包括节点具有的标签选择器信息以及资源量信息等。
如是,在节点的节点信息符合标签选择规则,则认为节点具有作为适用节点的可能性,故响应于节点满足实例模型的标签选择规则,计算节点当前允许调度的实例模型的允许数量。利用节点的允许数量对节点是否可作为适用节点进行进一步筛选,以提高存储模块中角色类型标识多关联的适用节点的有效性。
可选地,允许数量可以包括基于容器编排引擎约束的第一阈值。即容器编排引擎会约束各节点可以调度实例模型的数量,基于此以及节点当前已分配的实例模型数量形成第一阈值。换言之,第一阈值可以是节点当前基于容器编排引擎约束允许分配的实例模型的数量。故本实施例中可以降低实例模型分配至节点,但因容器编排引擎不允许该节点调度如此数量的实例模型,而导致调度失败的风险,能够提高训练任务调度编排的可靠性。
计算节点当前允许调度的实例模型的允许数量包括:获取训练任务的容器编排引擎约束节点调度实例模型的约束数量;获取当前已调度至节点的实例模型的调度数量;将约束数量与调度数量的差值作为第一阈值。
通俗而言,第一阈值可以由诸如Kubernetes等容器编排引擎限制的节点总可调度Pod数量减去已调度到此节点上的Pod数量得到。
可选地,允许数量可以包括基于节点各类资源的空余量形成的第二阈值。换言之,第二阈值可以是节点当前各类资源的空余量允许分配的实例模型的数量。故本实施例中可以考虑节点各类资源对可运行实例模型的数量约束,可以对各类会占用的节点均进行考虑,降低实例模型分配至该节点但由于节点某类资源不足而无法运行的风险。
其中,各类资源可以包括中央处理器(Central Processing Unit,CPU)、内存、图形处理器(graphics processing unit,GPU)等。
计算节点当前允许调度的实例模型的允许数量包括:获取节点各类资源的空余量;获取实例模型对各类资源的请求量;分别计算各类资源允许运行实例模型的数量,取各类资源允许运行实例模型的数量的最小者,作为第二阈值。举例而言,第二阈值的具体计算方式可以如下公式所示:
Xi=|Yi/Zi|floor 式1-1
Xfinal=min(X1,X2,……,Xn) 式1-2
其中,Xi为第i类资源允许运行实例模型的数量,i=1,2,……,n,n为正整数;Yi为第i类资源的空余量;Zi为实例模型对第i类资源的请求量;| |floor为数值向下取整函数,如|5.1|floor为5;Xfinal为第二阈值;min为取小函数。
可选地,允许数量可以同时包括第一阈值以及第二阈值,亦或是包括第一阈值和第二阈值中的较小者,以综合考量容器编排引擎的约束以及节点的资源占用情况,有利于保障训练任务可靠、高效地进行,降低出现节点负载过大或容器编排引擎不允许等情况的风险,以减少反复调整调度的步骤而有利于提高训练任务调度效率,进而提高训练任务调度的可靠性以及稳定性。
接着,可以基于允许数量判断节点是否作为适用节点。
可选地,可以对第一阈值以及第二阈值均进行判断。
举例而言,可以要求第一阈值不为0。换言之,可以对节点由容器编排引擎限制的剩余可调度数量(即第一阈值)进行判断,若第一阈值大于零,则认为可用作适用节点。在一替代实施例中,还可以要求第一阈值大于预设值,预设值为大于0的整数值,以令节点留有一定的空闲资源,有利于训练任务的可靠进行。
举例而言,可以要求第二阈值大于0,从而充分利用节点资源。在一替代实施例中第二阈值还可以大于其他数值,在此不做限定。
在一实施例中,若实例模型未设置节点至少一类资源的请求量,认为该实例模型可能无需占用该类资源,则可以将未设置请求量的资源允许运行实例模型的数量设为一较大值,如99999、999999等,在此不做限定。
具体地,响应于判定节点不可作为适用节点,则对下一节点进行识别。响应于判定节点作为适用节点,将适用节点的允许数量以及链接其的指针作为形成元素信息。
具体而言,适用节点的元素信息可以包括链接至适用节点的指针、基于容器编排引擎约束节点调度实例模型的约束数量形成的第一阈值、基于节点各类资源的空余量形成的第二阈值。
进一步地,如图5中所举例展示的,元素信息还可以进一步包括其他自定义的动态限制条件,例如节点(计算机)类型、网络类型、节点所属分组等,在此就不在赘述。
可选地,直至遍历计算集群中的节点,筛选出适用于训练角色的全部适用节点。在一替代实施例中,还可以是筛选出预设数量的适用节点则完成筛选过程,具体将在后文进行详细阐述,在此不做限定。
在形成适应训练角色/一角色类型的适用节点的元素信息后,可以将可链接各适用节点的元素信息反馈至存储模块,以令存储模块存储训练角色标识与元素信息的映射关系。
响应于存储模块中查询到节点数据,或响应于存储模块中未查找到节点数据而筛选适用节点并更新至存储模块后,获取存储模块中适用训练角色的节点数据。解析节点数据中所包含的适用节点,自节点数据反馈的若干个节点(即适用节点)中,选择其中一个节点作为训练节点。
具体地,可以分别获取各若干个节点的显卡的空闲数量;比对所获取的若干个空闲数量;选择空闲数量最大或最小的节点作为训练节点。
选择显卡的空闲数量最多的节点作为训练节点,有利于实现负载均衡的效果。选择显卡的空闲数量最少的节点作为训练节点,有利于减少资源碎片。与此同时,基于显卡的空闲数量对训练节点进行选择,选取空闲数量最大或最小的节点,能够减少在适用节点中选择训练节点的复杂运算,提高调度效率。进一步地,如前文中所阐述的,存储模块中所存在的适用节点在分配实例模型后,可以对存储模块中的元素信息进行更新,这意味着可以认为存储模块中的适用节点可用作训练节点,出现异常的风险较小,故可以相对省略复杂的评分运算等选择过程,还可以通过随机的方式自适用节点中选择其中一个节点作为训练节点,在此不做限定。
可以将实例模型分配至训练节点,调度训练节点运行实例模型对应的角色实例。
响应于实例模型调度成功,将训练节点的资源变动同步至存储模块中的节点数据;识别节点数据中训练节点同步后的信息,判断是否可再向其分配新的实例模型;响应于判定不可继续向其分配新的实例模型,删除节点数据中训练节点的信息。
也就是说,为每个实例封装选择本实施例中认为的最优节点(即显卡的空闲数量最大或最小的节点)作为训练节点,作为训练节点会存在一定的资源变化,对存储模块中所训练节点的元素信息进行同步更新,并对训练节点是否可继续作为适用节点或是否仍符合实例封装要求进行验证,若出现因资源变化导致这个节点不再符合实例封装要求的情况,则将该节点的元素信息自节点数据中删除。
综上,本实施例考虑到训练任务中,同一种角色类型是由同一个模板生成的,可以具有完全相同的标签选择规则、资源需求量以及其它的一些自定义信息。本实施例通过在调度流程中增加存储模块,对于同一种角色类型的适用节点,可以在调度该角色类型的第一个实例模型时进行节点预选,后续的实例模型可以直接查询存储模块,能够省略重复遍历节点的流程。并且,当集群中存在大量训练任务时,调度性能的提升尤为显著。
进一步地,在一实施例中,筛选出预设数量的适用节点则完成筛选过程可以是:在存储模块中未存储适用当前训练角色的节点数据时,在计算集群的节点中筛选适用节点的过程中,可以对筛选过程中不适用训练角色的节点赋予当前训练角色的角色类型的已识别标签,并对已筛选出可用作适用节点的节点进行计数,响应于适用节点的数量达到预设数量,则完成当前次适用节点的筛选。认为预设数量的适用节点足以完成训练任务的调度,减少冗余适用节点的选择过程,从而降低计算成本,有利于提高调度效率。
再进一步地,如前文中所阐述的,当适用节点被选作训练节点后,会根据资源占用情况以及容器编排引擎的约束,对训练节点的元素信息/允许数量进行更新,响应于训练节点不可继续向其分配新的实例封装,删除节点数据中训练节点的信息。此时,存储模块中与训练角色关联的适用节点数量不足预设数量,认为可以进一步筛选计算集群中的节点选择适用节点。具体地,可以自未作为适用节点且未赋予训练角色这一角色类型的已识别标签的节点中进行选择,从而减少重复识别的过程,提高调度效率。
在一替代实施例中,可以是在筛选前为各节点均赋予未识别标签,在节点完成是否适用某一种角色类型的筛选后,去除该节点所携带的该角色类型标签,实现反向标签赋予,在后续需要补充适用节点时,可以抓取携带标签的节点进行筛选。
应该理解的是,虽然图2-图4的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-图4中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
请参阅图6,图6是本申请训练任务的调度装置一实施例的结构示意图。
在一实施例中,训练任务的调度装置包括存储模块61以及调度模块62。
存储模块61用于存储适用各角色类型的节点数据。
调度模块62与存储模块61连接,用于获取待训练的实例模型的训练角色;其中,训练任务包括多种角色类型分别对应的若干个实例模型;调用存储模块61,查询存储模块61中适用训练角色的节点数据;自节点数据反馈的若干个节点中,选择其中一个节点作为训练节点,将实例模型分配至训练节点,调度训练节点运行实例模型对应的角色实例。
由此可见,本实施例中,存储模块中预先存储适用训练角色的节点数据,在调度待训练的实例模型时,可以基于存储模块中适用该实例模型的训练角色的节点数据,相较于相关技术中遍历各节点判断是否适用,本申请能够有效减少繁冗地重复步骤,从而优化训练任务调度逻辑,有利于提高训练任务调度效率,以提高调度性能的训练任务。
请参阅图7,图7是本申请训练任务的调度装置另一实施例的结构示意图。
在一实施例中,训练任务的调度装置还包括状态模块63、排队模块64、绑定模块65。
状态模块63,用于存储计算集群中各训练任务的状态以及节点的状态。
排队模块64,与状态模块63以及调度模块62连接,用于基于训练任务的创建时间对训练任务进行排序,按照排序顺序将训练任务依次写入任务队列;调度模块62依次遍历任务队列中的训练任务,调度实例模型并分别分配训练节点;调度模块62还用于统计各训练任务中调度成功的实例模型的数量,判断训练任务中调度成功的实例模型数量是否达到允许训练任务运行的目标数量,响应于调度成功的实例模型数量达到允许训练任务运行的目标数量,判定训练任务调度完成。
绑定模块65,与调度模块62连接,用于接收调度模块62反馈的调度结果,响应于判定训练任务调度完成,将目前各实例模型与所分配的训练节点进行绑定。
进一步地,调度模块62可以包括节点筛选单元621以及节点选择单元622。
顾名思义,节点筛选单元621能够在存储模块61中未存储训练角色标识以及与其关联的节点数据时,遍历计算集群中的节点,筛选适用训练角色的适用节点。
节点选择单元622能够自存储模块61反馈的节点数据中选择一个节点,作为训练角色的训练节点。
以训练任务为分布式训练任务、实例模型为Pod、容器编排引擎为Kubernetes系统为例,对训练任务的调度装置进行训练任务调度过程的详细实施方式进行举例阐述:
训练任务的调度装置的调度周期可以设置为1s。即每隔1s执行一遍调度过程。每个调度过程由存储模块、状态模块、排队模块、节点筛选单元、节点选择单元以及绑定模块等模块组成。
状态模块负责从集群中获取所有任务和节点的状态,这些状态将在后续模块中使用。
排队模块从状态模块里面筛选得到需要调度的分布式训练任务,然后对这些训练任务按照创建时间先后进行排序。如果创建时间相同,则再按照训练任务标识名称的字符顺序进行排序。排序完成后,按顺序将需要调度的分布式训练任务放入分布式训练任务队列。
节点筛选单元负责遍历状态模块中的分布式训练任务队列,并为每个分布式训练任务筛选节点。为每个分布式训练任务筛选节点就是为分布式训练任务中的每个Pod筛选节点,它根据每个Pod对节点的要求,从所有节点中筛选出符合Pod要求的节点。
存储模块负责缓存节点筛选单元筛选得到的分别符合各种角色要求的节点列表。在每个分布式训练任务中,每种角色包含的Pod对节点的要求一样。在一个分布式训练任务中,当节点筛选单元首次为某种角色中的Pod筛选节点时,将从所有的节点中进行筛选,筛选得到的节点将被更新到存储模块,代表这些节点符合这种角色中Pod的要求。当节点筛选单元后续为这种角色中的Pod筛选节点时,将直接查询存储模块并取得这些符合Pod要求的节点。
节点选择单元接收节点筛选单元的筛选结果,并分别为每个Pod从符合Pod要求的节点中选择一个最好的节点。有两种筛选方式,第一种是选择GPU卡空闲数量最多的节点,这种方式可以实现负载均衡的效果;第二种是选择GPU卡空闲数量最少的节点,这种方式可以减少资源碎片。在给每个Pod选择最优节点后,这个最优节点会有相应的资源变化,需要更新这个最优节点在存储模块中的缓存信息,如果因资源变化导致这个节点不再符合Pod要求,则需要把它从存储模块中删除。
绑定模块接收节点选择单元的调度结果:
如果任务中调度成功的Pod数量达到了任务运行要求的最小数量,将调度结果中的任务和对应的最优节点进行绑定,把这些绑定信息通知到Kubernetes系统,代表任务调度完成。
如果不满足上述条件,则放弃绑定,并撤销节点选择单元的资源变化,代表任务因资源不足而无法调度。
关于训练任务的调度装置的具体限定可以参见上文中对于训练任务的调度方法的限定,在此不再赘述。上述训练任务的调度装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
请参阅图8,图8是本申请计算机设备一实施例的结构示意图。
在一实施例中,计算机设备包括存储器81、处理器82及存储在存储器81上并可在处理器上运行的计算机程序。
在一实施例中,处理器执行计算机程序时实现以下步骤:
S201:获取待训练的实例模型的训练角色。
S202:调用存储模块,查询存储模块中适用训练角色的节点数据;其中,存储模块用于存储适用各角色类型的节点数。
S203:自节点数据反馈的若干个节点中,选择其中一个节点作为训练节点,将实例模型分配至训练节点,调度训练节点运行实例模型对应的角色实例。
在一实施例中,处理器执行计算机程序时还实现以下步骤:
S301:获取计算集群中各训练任务的状态以及节点的状态。
S302:基于训练任务的创建时间对训练任务进行排序,按照排序顺序将训练任务依次写入任务队列。
S303:依次遍历任务队列中的训练任务,调度实例模型并分别分配训练节点。
在本实施例中,调度实例模型分配训练节点的具体可以包括:获取待训练的实例模型的训练角色。调用存储模块,查询存储模块中适用训练角色的节点数据;其中,存储模块用于存储适用各角色类型的节点数。自节点数据反馈的若干个节点中,选择其中一个节点作为训练节点,将实例模型分配至训练节点,调度训练节点运行实例模型对应的角色实例。
S304:统计各训练任务中调度成功的实例模型的数量,响应于训练任务中调度成功的实例模型数量达到允许训练任务运行的目标数量,将目前各实例模型与所分配的训练节点进行绑定,并判定训练任务调度完成。
在一实施例中,处理器执行计算机程序时还实现以下步骤:
训练任务包括多种角色类型分别对应的若干个实例模型,训练角色为多种角色类型中的一种。
可选地,多种角色类型包括管理角色以及计算角色。进一步地,角色类型还可以包括协调角色等。
以下对本实施例中训练任务调度的具体工作原理进行举例阐述。
获取待训练的实例模型的训练角色。举例而言,训练角色可以是管理角色、计算角色等。
调用存储模块。存储模块动态存储各角色类型与其适用节点的元素信息之间的映射关系。
查询存储模块中是否存在训练角色标识。
响应于存储模块中存在训练角色标识,可以获取存储模块中与训练角色标识关联的各节点的元素信息。
进一步地,本实施例中会在调度实例模型成功后更新节点数据,并判断训练节点是否还可以分配实例模型,在判定不可继续向其分配新的实例模型,删除节点数据中训练节点的信息。因此,在识别节点数据时,可能出现节点数据为空的情况。关于具体判定是否删除训练节点信息的过程将在后文进行详细阐述,在此就不再赘述。
故响应于节点数据为空,则判定训练角色的实例模型调度失败。在后续获取新的待训练的实例模型的训练角色,响应于训练角色此前的实例模型判定调度失败,则判定新的待训练的实例模型调度失败。
响应于存储模块中未存在训练角色标识,遍历各节点的节点信息,分别基于节点信息筛选适用训练角色的适用节点,并形成适用节点的元素信息。
具体地,可以识别节点的节点信息是否满足实例模型的标签选择规则。
响应于节点满足实例模型的标签选择规则,计算节点当前允许调度的实例模型的允许数量。
可选地,允许数量可以包括第一阈值。
计算节点当前允许调度的实例模型的允许数量包括:获取训练任务的容器编排引擎约束节点调度实例模型的约束数量;获取当前已调度至节点的实例模型的调度数量;将约束数量与调度数量的差值作为第一阈值。
可选地,允许数量可以包括第二阈值。
计算节点当前允许调度的实例模型的允许数量包括:获取节点各类资源的空余量;获取实例模型对各类资源的请求量;分别计算各类资源允许运行实例模型的数量,取各类资源允许运行实例模型的数量的最小者,作为第二阈值。
接着,可以基于允许数量判断节点是否作为适用节点。
响应于判定节点不可作为适用节点,则对下一节点进行识别。响应于判定节点作为适用节点,将适用节点的允许数量以及链接其的指针作为形成元素信息。
可选地,直至遍历计算集群中的节点,筛选出适用于训练角色的全部适用节点。在一替代实施例中,还可以是筛选出预设数量的适用节点则完成筛选过程,在此不做限定。
将可链接各适用节点的元素信息反馈至存储模块,以令存储模块存储训练角色标识与元素信息的映射关系。
自节点数据反馈的若干个节点中,选择其中一个节点作为训练节点。具体地,可以分别获取各若干个节点的显卡的空闲数量;比对所获取的若干个空闲数量;选择空闲数量最大或最小的节点作为训练节点。
将实例模型分配至训练节点,调度训练节点运行实例模型对应的角色实例。
响应于实例模型调度成功,将训练节点的资源变动同步至存储模块中的节点数据;识别节点数据中训练节点同步后的信息,判断是否可再向其分配新的实例模型;响应于判定不可继续向其分配新的实例模型,删除节点数据中训练节点的信息。
在一实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
S201:获取待训练的实例模型的训练角色。
S202:调用存储模块,查询存储模块中适用训练角色的节点数据;其中,存储模块用于存储适用各角色类型的节点数。
S203:自节点数据反馈的若干个节点中,选择其中一个节点作为训练节点,将实例模型分配至训练节点,调度训练节点运行实例模型对应的角色实例。
在一实施例中,计算机程序被处理器执行时还实现以下步骤:
S301:获取计算集群中各训练任务的状态以及节点的状态。
S302:基于训练任务的创建时间对训练任务进行排序,按照排序顺序将训练任务依次写入任务队列。
S303:依次遍历任务队列中的训练任务,调度实例模型并分别分配训练节点。
在本实施例中,调度实例模型分配训练节点的具体可以包括:获取待训练的实例模型的训练角色。调用存储模块,查询存储模块中适用训练角色的节点数据;其中,存储模块用于存储适用各角色类型的节点数。自节点数据反馈的若干个节点中,选择其中一个节点作为训练节点,将实例模型分配至训练节点,调度训练节点运行实例模型对应的角色实例。
S304:统计各训练任务中调度成功的实例模型的数量,响应于训练任务中调度成功的实例模型数量达到允许训练任务运行的目标数量,将目前各实例模型与所分配的训练节点进行绑定,并判定训练任务调度完成。
在一实施例中,计算机程序被处理器执行时还实现以下步骤:
训练任务包括多种角色类型分别对应的若干个实例模型,训练角色为多种角色类型中的一种。
可选地,多种角色类型包括管理角色以及计算角色。进一步地,角色类型还可以包括协调角色等。
以下对本实施例中训练任务调度的具体工作原理进行举例阐述。
获取待训练的实例模型的训练角色。举例而言,训练角色可以是管理角色、计算角色等。调用存储模块。存储模块动态存储各角色类型与其适用节点的元素信息之间的映射关系。
查询存储模块中是否存在训练角色标识。
响应于存储模块中存在训练角色标识,可以获取存储模块中与训练角色标识关联的各节点的元素信息。
进一步地,本实施例中会在调度实例模型成功后更新节点数据,并判断训练节点是否还可以分配实例模型,在判定不可继续向其分配新的实例模型,删除节点数据中训练节点的信息。因此,在识别节点数据时,可能出现节点数据为空的情况。关于具体判定是否删除训练节点信息的过程将在后文进行详细阐述,在此就不再赘述。
故响应于节点数据为空,则判定训练角色的实例模型调度失败。在后续获取新的待训练的实例模型的训练角色,响应于训练角色此前的实例模型判定调度失败,则判定新的待训练的实例模型调度失败。
响应于存储模块中未存在训练角色标识,遍历各节点的节点信息,分别基于节点信息筛选适用训练角色的适用节点,并形成适用节点的元素信息。
具体地,可以识别节点的节点信息是否满足实例模型的标签选择规则。
响应于节点满足实例模型的标签选择规则,计算节点当前允许调度的实例模型的允许数量。
可选地,允许数量可以包括第一阈值。计算节点当前允许调度的实例模型的允许数量包括:获取训练任务的容器编排引擎约束节点调度实例模型的约束数量;获取当前已调度至节点的实例模型的调度数量;将约束数量与调度数量的差值作为第一阈值。
可选地,允许数量可以包括第二阈值。计算节点当前允许调度的实例模型的允许数量包括:获取节点各类资源的空余量;获取实例模型对各类资源的请求量;分别计算各类资源允许运行实例模型的数量,取各类资源允许运行实例模型的数量的最小者,作为第二阈值。
接着,可以基于允许数量判断节点是否作为适用节点。响应于判定节点不可作为适用节点,则对下一节点进行识别。响应于判定节点作为适用节点,将适用节点的允许数量以及链接其的指针作为形成元素信息。
可选地,直至遍历计算集群中的节点,筛选出适用于训练角色的全部适用节点。在一替代实施例中,还可以是筛选出预设数量的适用节点则完成筛选过程,在此不做限定。
将可链接各适用节点的元素信息反馈至存储模块,以令存储模块存储训练角色标识与元素信息的映射关系。
自节点数据反馈的若干个节点中,选择其中一个节点作为训练节点。具体地,可以分别获取各若干个节点的显卡的空闲数量;比对所获取的若干个空闲数量;选择空闲数量最大或最小的节点作为训练节点。
将实例模型分配至训练节点,调度训练节点运行实例模型对应的角色实例。响应于实例模型调度成功,将训练节点的资源变动同步至存储模块中的节点数据;识别节点数据中训练节点同步后的信息,判断是否可再向其分配新的实例模型;响应于判定不可继续向其分配新的实例模型,删除节点数据中训练节点的信息。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各训练任务的调度方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink) DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (15)

1.一种训练任务的调度方法,其特征在于,所述训练任务的调度方法包括:
获取待训练的实例封装的训练角色;
调用存储模块,查询所述存储模块中适用所述训练角色的节点数据;其中,所述存储模块用于存储适用各角色类型的节点数据;
自所述节点数据反馈的若干个节点中,选择其中一个节点作为训练节点,将所述实例封装分配至所述训练节点,调度所述训练节点运行所述实例封装对应的角色实例;
所述节点数据包括适用节点的元素信息;
形成所述适用节点的元素信息包括:
计算满足所述实例封装的标签选择规则的节点当前允许调度的实例封装的允许数量;
基于所述允许数量判断所述节点是否作为所述适用节点;
响应于判定所述节点作为所述适用节点,将所述适用节点的允许数量以及链接其的指针作为形成所述元素信息。
2.根据权利要求1所述的训练任务的调度方法,其特征在于,所述查询所述存储模块中适用所述训练角色的节点数据包括:
查询所述存储模块中是否存在训练角色标识;
响应于所述存储模块中未存在所述训练角色标识,遍历各节点的节点信息,分别基于所述节点信息筛选适用所述训练角色的适用节点,并形成所述适用节点的元素信息;
将可链接各所述适用节点的元素信息反馈至所述存储模块,以令所述存储模块存储所述训练角色标识与所述元素信息的映射关系。
3.根据权利要求2所述的训练任务的调度方法,其特征在于,所述计算满足所述实例封装的标签选择规则的节点当前允许调度的实例封装的允许数量之前包括:
识别所述节点的节点信息是否满足所述实例封装的标签选择规则;
响应于所述节点满足所述实例封装的标签选择规则,计算所述节点当前允许调度的实例封装的允许数量。
4.根据权利要求3所述的训练任务的调度方法,其特征在于,所述允许数量包括第一阈值;
所述计算所述节点当前允许调度的实例封装的允许数量包括:
获取训练任务的容器编排引擎约束所述节点调度所述实例封装的约束数量;
获取当前已调度至所述节点的所述实例封装的调度数量;
将所述约束数量与所述调度数量的差值作为所述第一阈值。
5.根据权利要求3所述的训练任务的调度方法,其特征在于,所述允许数量包括第二阈值;
所述计算所述节点当前允许调度的实例封装的允许数量包括:
获取所述节点各类资源的空余量;
获取所述实例封装对各类资源的请求量;
分别计算各类资源允许运行所述实例封装的数量,取各类资源允许运行所述实例封装的数量的最小者,作为所述第二阈值。
6.根据权利要求1所述的训练任务的调度方法,其特征在于,所述存储模块动态存储各角色类型与其适用节点的元素信息之间的映射关系;其中,所述训练角色为所述角色类型中的一者;
所述查询所述存储模块中适用所述训练角色的节点信息包括:
查找所述存储模块中是否存在训练角色标识;
响应于所述存储模块中存在所述训练角色标识,获取所述存储模块中与所述训练角色标识关联的各节点的元素信息。
7.根据权利要求1所述的训练任务的调度方法,其特征在于,所述查询所述存储模块中适用所述训练角色的节点数据还包括:
响应于所述节点数据为空,则判定所述训练角色的实例封装调度失败;
获取新的待训练的实例封装的训练角色,响应于所述训练角色此前的实例封装判定调度失败,则判定所述新的待训练的实例封装调度失败。
8.根据权利要求1或7所述的训练任务的调度方法,其特征在于,所述调度所述训练节点运行所述实例封装对应的角色实例之后还包括:
响应于所述实例封装调度成功,将所述训练节点的资源变动同步至所述存储模块中的所述节点数据;
识别节点数据中所述训练节点同步后的信息,判断是否可再向其分配新的实例封装;
响应于判定不可继续向其分配新的实例封装,删除所述节点数据中所述训练节点的信息。
9.根据权利要求1所述的训练任务的调度方法,其特征在于,所述自所述节点数据反馈的若干个节点中,选择其中一个节点作为训练节点包括:
分别获取各所述若干个节点的显卡的空闲数量;
比对所获取的若干个所述空闲数量;
选择所述空闲数量最大或最小的节点作为所述训练节点。
10.根据权利要求1所述的训练任务的调度方法,其特征在于,所述训练任务包括多种角色类型分别对应的若干个实例封装,所述训练角色为所述多种角色类型中的一种;所述多种角色类型包括管理角色以及计算角色。
11.根据权利要求1所述的训练任务的调度方法,其特征在于,所述训练任务的调度方法包括:
获取计算集群中各训练任务的状态以及节点的状态;
基于训练任务的创建时间对所述训练任务进行排序,按照排序顺序将所述训练任务依次写入任务队列;
依次遍历所述任务队列中的所述训练任务,调度所述实例封装并分别分配所述训练节点;
统计各所述训练任务中调度成功的实例封装的数量,响应于所述训练任务中调度成功的实例封装数量达到允许所述训练任务运行的目标数量,将目前各所述实例封装与所分配的所述训练节点进行绑定,并判定训练任务调度完成。
12.一种训练任务的调度装置,其特征在于,所述训练任务的调度装置包括:
存储模块,用于存储适用各角色类型的节点数据;
调度模块,与所述存储模块连接,用于获取待训练的实例封装的训练角色;其中,所述训练任务包括多种角色类型分别对应的若干个实例封装;调用存储模块,查询所述存储模块中适用所述训练角色的节点数据;自所述节点数据反馈的若干个节点中,选择其中一个节点作为训练节点,将所述实例封装分配至所述训练节点,调度所述训练节点运行所述实例封装对应的角色实例;所述节点数据包括适用节点的元素信息;形成所述适用节点的元素信息包括:计算满足所述实例封装的标签选择规则的节点当前允许调度的实例封装的允许数量;基于所述允许数量判断所述节点是否作为所述适用节点;响应于判定所述节点作为所述适用节点,将所述适用节点的允许数量以及链接其的指针作为形成所述元素信息。
13.根据权利要求12所述的训练任务的调度装置,其特征在于,所述训练任务的调度装置还包括:
状态模块,用于存储计算集群中各训练任务的状态以及节点的状态;
排队模块,与所述状态模块以及所述调度模块连接,用于基于训练任务的创建时间对所述训练任务进行排序,按照排序顺序将所述训练任务依次写入任务队列;所述调度模块依次遍历所述任务队列中的所述训练任务,调度所述实例封装并分别分配所述训练节点;所述调度模块还用于统计各所述训练任务中调度成功的实例封装的数量,判断所述训练任务中调度成功的实例封装数量是否达到允许所述训练任务运行的目标数量,响应于调度成功的实例封装数量达到允许所述训练任务运行的目标数量,判定训练任务调度完成;
绑定模块,与所述调度模块连接,用于接收所述调度模块反馈的调度结果,响应于判定训练任务调度完成,将目前各所述实例封装与所分配的所述训练节点进行绑定。
14.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至11中任一项所述训练任务的调度方法的步骤。
15.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至11中任一项所述训练任务的调度方法的步骤。
CN202311749858.3A 2023-12-19 2023-12-19 训练任务的调度方法、装置、计算机设备及存储介质 Active CN117421109B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311749858.3A CN117421109B (zh) 2023-12-19 2023-12-19 训练任务的调度方法、装置、计算机设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311749858.3A CN117421109B (zh) 2023-12-19 2023-12-19 训练任务的调度方法、装置、计算机设备及存储介质

Publications (2)

Publication Number Publication Date
CN117421109A CN117421109A (zh) 2024-01-19
CN117421109B true CN117421109B (zh) 2024-03-12

Family

ID=89528875

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311749858.3A Active CN117421109B (zh) 2023-12-19 2023-12-19 训练任务的调度方法、装置、计算机设备及存储介质

Country Status (1)

Country Link
CN (1) CN117421109B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190318240A1 (en) * 2018-04-16 2019-10-17 Kazuhm, Inc. Training machine learning models in distributed computing systems
CN111768006A (zh) * 2020-06-24 2020-10-13 北京金山云网络技术有限公司 一种人工智能模型的训练方法、装置、设备及存储介质
CN113569987A (zh) * 2021-08-19 2021-10-29 北京沃东天骏信息技术有限公司 模型训练方法和装置
CN113935427A (zh) * 2021-10-22 2022-01-14 北京达佳互联信息技术有限公司 训练任务的执行方法、装置、电子设备及存储介质
US20230107221A1 (en) * 2021-10-05 2023-04-06 Cisco Technology, Inc. Simplifying machine learning workload composition

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190318240A1 (en) * 2018-04-16 2019-10-17 Kazuhm, Inc. Training machine learning models in distributed computing systems
CN111768006A (zh) * 2020-06-24 2020-10-13 北京金山云网络技术有限公司 一种人工智能模型的训练方法、装置、设备及存储介质
CN113569987A (zh) * 2021-08-19 2021-10-29 北京沃东天骏信息技术有限公司 模型训练方法和装置
US20230107221A1 (en) * 2021-10-05 2023-04-06 Cisco Technology, Inc. Simplifying machine learning workload composition
CN113935427A (zh) * 2021-10-22 2022-01-14 北京达佳互联信息技术有限公司 训练任务的执行方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
CN117421109A (zh) 2024-01-19

Similar Documents

Publication Publication Date Title
CN114138486B (zh) 面向云边异构环境的容器化微服务编排方法、系统及介质
US20060206894A1 (en) Method of scheduling jobs using database management system for real-time processing
CN110008024B (zh) 一种多维约束下基于延迟决策的容器调度方法以及装置
WO2023198061A1 (zh) 一种容器调度方法、电子设备和存储介质
CN110162388A (zh) 一种任务调度方法、系统及终端设备
CN101727357A (zh) 用于分配计算中心中资源的方法和装置
CN110300130B (zh) 一种资源调度方法、装置、电子设备及存储介质
CN106033373A (zh) 一种云计算平台中虚拟机资源调度方法和调度系统
US10929182B2 (en) Systems and methods for scheduling a set of non-preemptive tasks in a multi-robot environment
CN105874426B (zh) 一种系统调用命令的批处理方法及装置
CN116560860B (zh) 一种基于机器学习的资源优先级的实时优化调整方法
CN111709723A (zh) Rpa业务流程智能处理方法、装置、计算机设备和存储介质
CN109150759B (zh) 一种渐进式非阻塞机会资源预留方法及系统
CN108595251B (zh) 动态图更新方法、装置、存储引擎接口和程序介质
CN113268331A (zh) 机器人调用方法、机器人调用装置、管理系统和存储介质
CN117421109B (zh) 训练任务的调度方法、装置、计算机设备及存储介质
CN116700929A (zh) 基于人工智能的任务批量处理方法及系统
CN116089477A (zh) 分布式训练方法及系统
CN113225269B (zh) 基于容器的工作流调度方法、装置、系统及存储介质
CN115658292A (zh) 资源调度方法、装置、计算机设备和存储介质
CN114995971A (zh) 实现kubernetes中pod批量调度方法及系统
CN111556126B (zh) 模型管理方法、系统、计算机设备和存储介质
CN113191704A (zh) 货物出库的控制方法、装置和计算机可读存储介质
CN114489970A (zh) Kubernetes中利用Coscheduling插件实现队列排序的方法及系统
CN112612606A (zh) 消息主题的处理方法、装置、计算机设备和可读存储介质

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