CN109828833A - 一种神经网络训练任务的排队系统及其方法 - Google Patents

一种神经网络训练任务的排队系统及其方法 Download PDF

Info

Publication number
CN109828833A
CN109828833A CN201811301453.2A CN201811301453A CN109828833A CN 109828833 A CN109828833 A CN 109828833A CN 201811301453 A CN201811301453 A CN 201811301453A CN 109828833 A CN109828833 A CN 109828833A
Authority
CN
China
Prior art keywords
task
cluster
eventloop
queue
resource
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
Application number
CN201811301453.2A
Other languages
English (en)
Other versions
CN109828833B (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.)
Shanghai Fanyi Shangxing Technology Co Ltd
Original Assignee
Shanghai Fanyi Shangxing 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 Shanghai Fanyi Shangxing Technology Co Ltd filed Critical Shanghai Fanyi Shangxing Technology Co Ltd
Priority to CN201811301453.2A priority Critical patent/CN109828833B/zh
Publication of CN109828833A publication Critical patent/CN109828833A/zh
Application granted granted Critical
Publication of CN109828833B publication Critical patent/CN109828833B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Debugging And Monitoring (AREA)
  • Exchange Systems With Centralized Control (AREA)
  • Telephonic Communication Services (AREA)

Abstract

本发明公开了一种神经网络训练任务的排队系统及其方法,Workquene为任务队列,负责管理任务的优先级策略;ResourceFactory负责任务队列和资源集群的交互;Eventloop负责管理监听集群和任务的变化,匹配可运行的任务,并从任务队列中取出相关任务放入集群执行;ClusterInformer是集群的事件通知系统,集群一旦有资源相关变化,可以执行某个回调函数执行相关逻辑。这个四个组件可以针对主流的集群管理系统提供用户态任务管理机制。本发明提高了硬件特别是GPU资源的使用效率,并提供细粒度的任务管理机制。

Description

一种神经网络训练任务的排队系统及其方法
技术领域
本发明涉及一种任务排队系统及其方法,特别是一种神经网络训练任务的排队系统及其方法。
背景技术
人工智能的兴起,特别是自动驾驶等技术的发展,需要海量运算资源,特别是稀缺的GPU资源。如何有效地利用稀缺的GPU计算资源,最大化多任务训练效率,成为迫切需要研究的问题。近年来,机器学习的训练任务的平台化趋势明显,即通过Nvidia-Docker,将GPU训练任务放在docker容器里面执行,上层通过Kubernetes或Swarm等容器集群管理框架进行高效的管理。然而,常见的容器集群管理方案缺乏灵活有效的任务队列管理机制,导致无法高效利用GPU等训练硬件资源,造成用户的训练任务的阻塞和资源的浪费。
为了有效利用硬件资源,特别是GPU的资源,能为主流的容器管理集群提供用户级的任务管理机制就显得非常必要:可以为任务设置优先级系统、撤回任务、任务排队、任务恢复、任务统计等等训练任务的管理机制。
发明内容
本发明所要解决的技术问题是提供一种神经网络训练任务的排队系统及其方法,用以提高硬件的使用效率,更灵活地管理训练任务。
为解决上述技术问题,本发明所采用的技术方案是:
一种神经网络训练任务的排队系统,其特征在于:包含ResourceFactory、EventLoop、WorkQuene和ClusterInformer四个模块,
ResourceFactory模块负责任务队列和资源集群的交互;
EventLoop模块负责管理监听集群和任务的变化,匹配可运行的任务,并从任务队列中取出相关任务放入集群执行;
WorkQuene模块负责管理任务的优先级策略;
ClusterInformer模块是集群的事件通知系统,集群一旦有资源相关变化,执行某个回调函数执行相关逻辑。
进一步地,所述WorkQuene为按需创建的多个不同优先级的任务队列,任务队列实现任务插入、任务弹出、任务位置查询、任务撤回和顶层任务查看五个接口;并增加一个事件触发机制,每次有新的任务增加或删除,通知Evenloop执行相应逻辑;为任务队列增加锁操作限制。
进一步地,所述Evenloop需要创建一个单独的常驻线程用以运行,EventLoop是一个事件循环,用以查看队列中排队的顶部任务,并且和集群的可用资源相比较,如果集群的可用资源大于任务队列的某个顶部任务,则Evenloop会取出相应的任务,将其分发到集群中执行,并监控其运行状态;一旦运行成功,该任务就彻底脱离WorkQuene,交给集群管理;如果运行失败,则将其撤回到原先队列的底部进行重新排队,并将其失败原因的日志输出到相应日志平台。
进一步地,所述EventLoop的工作流程为
1)使用Golang语言的CSP计算模型协调WorkQuene、ClusterInformer和EventLoop之间的执行逻辑关系,创建两个channel:JobqueneStatusChan和ClusterStatusChan,分别用来跟踪任务入队列的状态和集群发生变化的状态;
2)EventLoop不停地循环,在多个不同优先级的任务队列中寻找可以执行的任务,按照不同优先级,优先执行优先级比较高的任务;
3)为了防止EventLoop无意义的空转,需要实现EventLoop的阻塞机制,有两种状态需要阻塞EventLoop:1,任务队列全部执行完毕,没有其它可执行任务;2,集群资源被占满,没有可用资源;这两种阻塞也需要有相应的唤醒机制:针对第一种情形,唤醒的机制是当有新的任务提交进任务队列,则阻塞的EventLoop应该被唤醒;针对第二种情形,则集群有新的资源释放或者有新的计算节点的加入,则阻塞的EventLoop应该被唤醒。
进一步地,所述工作流程2)具体为
调用JobLookup接口查看顶部任务队列的资源需求,再通过ResourceFactory的相应资源查询接口查询资源存量,一旦资源存量足够执行该任务,则调用JobPop接口弹出该任务,并分发该任务到集群进行执行,并跟踪任务状态;如果存量资源不足够执行该任务则等待下一轮匹配;
如此往复,一旦执行完高优先级的任务后即可执行低优先级的任务;
提交任务的过程是原子的,但是一旦提交任务之后便重新扫描不同优先级的任务队列,一旦高优先级的队列重新插入了新的任务,则依然优先执行,直到执行完毕才执行更低优先级的任务,并反复如此。
进一步地,所述工作流程3)具体为
遍历任务队列,如果队列为空,则重复写入一个特殊字串进入JobQueneStatusChan,JobQueneStatusChan长度只有1,一旦写入字串,再重复写入的时候,EventLoop就会被阻塞;
当每次有新的任务插入到WorkQuene的时候,在插入任务的同时,取出JobQueneStatusChan里面的内容,如果JobQueneStatusChan本来就为空,则使用default模式执行下去,所以相应Goroutine不会被阻塞;而一旦JobQueneStatusChan里面有内容,该取出操作会唤醒EventLoop的Goroutine,使得EventLoop被唤醒;
ClusterStatusChan的机制,当EventLoop去查询集群存量资源的时候,一旦发现存量不足以运行当前任务,则会重复写入ClusterStatusChan,并阻塞住EventLoop;
当集群系统有资源释放或者新的节点加入,ClusterInformer会触发相应的事件,在处理事件的回调函数中,将ClusterStatusChan的channel中的内容读出,空出ClusterStatusChan,EventLoop中的写入操作可以被继续执行,继而EventLoop被唤醒,继续执行后续的业务逻辑。
进一步地,所述ClusterInformer需要创建一个单独的常驻线程以运行,ClusterInformer则是集群部分的消息事件模块,ClusterInformer监听集群的资源状态,一旦有资源的增加、改动和删除,则会发出相应的事件,ClusterInformer捕捉到这样的事件,并调用相应的回调函数执行相应的处理逻辑,就可以和EventLoop配合起来,共同事实查询集群的状态和可用资源,细粒度控制任务的执行和回退。
进一步地,所述ResourceFactory包括根据任务队列的配置生成相应的集群可运行的任务,删除和更新相应的集群任务,监控任务的运行状态,撤回相应的任务,集群的节点数、运行资源的运行时统计,以及集群的日志;ResourceFactory是所有与集群管理框架交互的唯一接口,Eventloop使用ResourceFactory实现与集群的交互。
进一步地,创建持久存储数据库模块,用以存储任务队列的详细配置,入队、处队时间,排队和执行的事件以及任务的临时状态;当各个子系统启动以后,加入用户队列的添加机制:将用户的任务提交进入WorkQuene进行排队,任务的各个部分应该各司其职有效进行协调;EventLoop不断地监控队列和集群的状态,分发和执行相应的任务。
一种神经网络训练任务的排队系统的排队方法,其特征在于包含以下步骤:
步骤一:启动一个Goroutine运行任务队列,用户插入相应的任务到队列;
步骤二:启动ClusterInformer,监控集群资源变化情况;
步骤三:启动EventLoop,监控任务队列和ClusterInformer的情况:
3.1当所有任务队列为空,则重复写入JobQueneStatusChan,以使EventLoop阻塞住;
3.2当集群资源匮乏时,则重复写入ClusterStatusChan,以使EventLoop阻塞住;
3.3除上述两种情况以外,EventLoop按优先级顺序依次查看和匹配任务队列和系统资源,循环分发相应的任务;
步骤四:用户调用JobInsert接口插入相应的任务到任务队列:
4.1读取JobQueneStatusChan,如果JobQueneStatusChan非空,则读取操作可以激活EventLoop;
4.2读取JobQueneStatusChan,如果JobQueneStatusChan为空,则用Default模式跳过读取操作,任务入队列,并更新数据库的相应记录;
步骤五:ClusterInformer监听集群状态,当有新的节点加入或者有资源变更和释放时:
5.1读取ClusterStatusChan,如果ClusterStatusChan非空,则读取操作可以激活EventLoop;
5.2读取ClusterStatusChan,如果ClusterStatusChan为空,则用Default模式跳过读取操作,并更新数据库的相应记录;
步骤六:更新不同阶段的任务状态到持久数据库;
步骤七:结合ResourceFactory,创建与容器集群的查、改、增、删交互接口。
本发明与现有技术相比,具有以下优点和效果:本发明提出了一种通用的用户级任务队列框架,可以应用于主流的容器管理平台,为深度学习训练任务提供稳健、高效的用户级的队列系统,提高硬件特别是GPU资源的使用效率,并提供细粒度的任务管理机制。
具体实施方式
下面通过具体实施例来对本发明做进一步的说明,以下实施例是对本发明的解释而本发明并不局限于以下实施例。
本发明的一种神经网络训练任务的排队系统,包含ResourceFactory、EventLoop、WorkQuene和ClusterInformer四个模块,
ResourceFactory模块负责任务队列和资源集群的交互;
EventLoop模块负责管理监听集群和任务的变化,匹配可运行的任务,并从任务队列中取出相关任务放入集群执行;
WorkQuene模块为任务队列,负责管理任务的优先级策略;
ClusterInformer模块是集群的事件通知系统,集群一旦有资源相关变化,执行某个回调函数执行相关逻辑。
这个四个组件可以针对主流的集群管理系统提供用户态任务管理机制,对用户任务进行有效的管理。
按需创建多个不同优先级的任务队列(WorkQuene),队列的具体实现方式可能有多种,但需要实现任务插入(JobInsert)、任务弹出(JobPop)、任务位置查询(QueryJobPosition)、任务撤回(JobRevert)、顶层任务查看(TopJobLookup)这几个接口,用以实现灵活的任务管理逻辑。此外,需要为队列增加一个事件触发机制,每次有新的任务增加或删除,通知Evenloop,以便其执行相应逻辑。由于可能有多个线程同时执行任务的操作,所以还需要为任务队列增加锁操作限制。
创建一个单独的常驻线程(Golang语言则使用Goroutine),用以运行EventLoop。EventLoop是一个事件循环,用以查看队列中排队的顶部任务,并且和集群的可用资源相比较,如果集群的可用资源大于任务队列的某个顶部任务,则Evenloop会取出相应的任务,将其分发到集群中执行,并监控其运行状态。一旦运行成功,该任务就彻底脱离WorkQuene,交给集群管理;如果运行失败,则将其撤回到原先队列的底部进行重新排队,并将其失败原因的日志输出到相应日志平台。此外,需要注意的是,EventLoop如果一直在不停的循环,则该Goroutine会占用很多CPU资源,并且大部分运算并没有必要,所以EventLoop配合WorkQuene和ClusterInformer,并运用Golang的基于CSP模型的Channel机制,实现相应阻塞机制。
该部分核心算法为
A、使用Golang语言的CSP计算模型协调WorkQuene、ClusterInformer和EventLoop之间的执行逻辑关系。创建两个channel:JobqueneStatusChan和ClusterStatusChan,分别用来跟踪任务入队列的状态和集群发生变化的状态。
B、EventLoop不停地循环,在多个不同优先级的任务队列中寻找可以执行的任务,按照不同优先级,优先执行优先级比较高的任务。具体的步骤是,调用JobLookup接口查看顶部任务队列的资源需求,再通过ResourceFactory的相应资源查询接口查询资源存量,一旦资源存量足够执行该任务,则调用JobPop接口弹出该任务,并分发该任务到集群进行执行,并跟踪任务状态;如果存量资源不足够执行该任务则等待下一轮匹配。如此往复,一旦执行完高优先级的任务后即可执行低优先级的任务。提交任务的过程是原子的,但是一旦提交任务之后便重新扫描不同优先级的任务队列,一旦高优先级的队列重新插入了新的任务,则依然优先执行,直到执行完毕才执行更低优先级的任务,并反复如此。
C、为了防止EventLoop无意义的空转,需要实现EventLoop的阻塞机制。有两种状态需要阻塞EventLoop:1,任务队列全部执行完毕,没有其它可执行任务;2,集群资源被占满,没有可用资源。这两种阻塞也需要有相应的唤醒机制:针对第一种情形,唤醒的机制是当有新的任务提交进任务队列,则阻塞的EventLoop应该被唤醒;针对第二种情形,则集群有新的资源释放或者有新的计算节点的加入,则阻塞的EventLoop应该被唤醒。确定了阻塞和唤醒的策略,在唤醒机制选择上,本方案使用Golang语言的CSP模型的Channel模式。具体实施算法如下:遍历任务队列,如果队列为空,则重复写入一个特殊字串进入JobQueneStatusChan,JobQueneStatusChan长度只有1,一旦写入字串,再重复写入的时候,EventLoop就会被阻塞;当每次有新的任务插入到WorkQuene的时候,在插入任务的同时,取出JobQueneStatusChan里面的内容,如果JobQueneStatusChan本来就为空,则使用default模式执行下去,所以相应Goroutine不会被阻塞。而一旦JobQueneStatusChan里面有内容,该取出操作会唤醒EventLoop的Goroutine,使得EventLoop被唤醒;ClusterStatusChan的机制与前面相似,当EventLoop去查询集群存量资源的时候,一旦发现存量不足以运行当前任务,则会重复写入ClusterStatusChan,并阻塞住EventLoop;当集群系统有资源释放或者新的节点加入,ClusterInformer会触发相应的事件,在处理事件的回调函数中,将ClusterStatusChan的channel中的内容读出,空出ClusterStatusChan,EventLoop中的写入操作可以被继续执行,继而EventLoop被唤醒,继续执行后续的业务逻辑。
创建一个单独的常驻线程(Golang语言则使用Goroutine),用以运行ClusterInformer。为了防止Eventloop产生大量无意义的运算,需要实现某种阻塞机制,那么就需要事件通知和唤醒策略。ClusterInformer则是集群部分的消息事件模块,大部分集群管理框架都会有相应的Informer机制,例如Kubernetes的cache模块就提供informer机制以供第三方使用其事件通知机制。ClusterInformer监听集群的资源状态,一旦有资源的增加、改动和删除,则会发出相应的事件,ClusterInformer捕捉到这样的事件,并调用相应的回调函数执行相应的处理逻辑,就可以和EventLoop配合起来,共同事实查询集群的状态和可用资源,细粒度控制任务的执行和回退。
创建ResourceFactory,用来实现和集群的交互,包括根据任务队列的配置生成相应的集群可运行的任务;删除和更新相应的集群任务;监控任务的运行状态;撤回相应的任务;集群的节点数、运行资源(CPU/GPU/memory/disk)的运行时统计;集群的日志等等。ResourceFactory是所有与集群管理框架交互的唯一接口,Eventloop可以使用ResourceFactory实现与集群的交互。
创建持久存储数据库模块(如mysql),用以存储任务队列的详细配置,入队、处队等时间,排队和执行的事件以及任务的临时状态。
当各个子系统启动以后,加入用户队列的添加机制:将用户的任务提交进入WorkQuene进行排队,任务的各个部分应该各司其职有效进行协调。EventLoop不断地监控队列和集群的状态,分发和执行相应的任务。
一种神经网络训练任务的排队系统的排队方法,包含以下步骤:
步骤一:启动一个Goroutine运行任务队列,运行的任务队列包含多个不同优先级的线程安全的常驻任务队列,用户可以插入相应的任务到队列;
步骤二:启动集群事件通知管理系统ClusterInformer,监控集群资源变化情况;
步骤三:启动EventLoop,监控任务队列和ClusterInformer的情况,执行任务分发逻辑;
3.1使用Golang的CSP的channel机制,当所有任务队列为空,则重复写入JobQueneStatusChan,以使EventLoop阻塞住;
3.2当集群资源匮乏时,则重复写入ClusterStatusChan,以使EventLoop阻塞住;
3.3除上述两种情况以外,EventLoop按优先级顺序依次查看和匹配任务队列和系统资源,循环分发相应的任务;其中匹配任务需要获取整个集群的资源列表,这个需要调用集群的相关暴露接口或者第三方实现相应的功能。
步骤四:用户调用JobInsert接口插入相应的任务到任务队列:
4.1读取JobQueneStatusChan,如果JobQueneStatusChan非空,则读取操作可以激活EventLoop;
4.2读取JobQueneStatusChan,如果JobQueneStatusChan为空,则用Default模式跳过读取操作,任务入队列,并更新数据库的相应记录;
步骤五:ClusterInformer监听集群状态,当有新的节点加入或者有资源变更和释放时:
5.1读取ClusterStatusChan,如果ClusterStatusChan非空,则读取操作可以激活EventLoop;
5.2读取ClusterStatusChan,如果ClusterStatusChan为空,则用Default模式跳过读取操作,并更新数据库的相应记录;
步骤六:更新不同阶段的任务状态到持久数据库;
步骤七:结合ResourceFactory,创建与容器集群的查、改、增、删交互接口。
本说明书中所描述的以上内容仅仅是对本发明所作的举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,只要不偏离本发明说明书的内容或者超越本权利要求书所定义的范围,均应属于本发明的保护范围。

Claims (10)

1.一种神经网络训练任务的排队系统,其特征在于:包含ResourceFactory、EventLoop、WorkQuene和ClusterInformer四个模块,
ResourceFactory模块负责任务队列和资源集群的交互;
EventLoop模块负责管理监听集群和任务的变化,匹配可运行的任务,并从任务队列中取出相关任务放入集群执行;
WorkQuene模块负责管理任务的优先级策略;
ClusterInformer模块是集群的事件通知系统,集群一旦有资源相关变化,执行某个回调函数执行相关逻辑。
2.按照权利要求1所述的一种神经网络训练任务的排队系统,其特征在于:所述WorkQuene为按需创建的多个不同优先级的任务队列,任务队列实现任务插入、任务弹出、任务位置查询、任务撤回和顶层任务查看五个接口;并增加一个事件触发机制,每次有新的任务增加或删除,通知Evenloop执行相应逻辑;为任务队列增加锁操作限制。
3.按照权利要求1所述的一种神经网络训练任务的排队系统,其特征在于:所述Evenloop需要创建一个单独的常驻线程用以运行,EventLoop是一个事件循环,用以查看队列中排队的顶部任务,并且和集群的可用资源相比较,如果集群的可用资源大于任务队列的某个顶部任务,则Evenloop会取出相应的任务,将其分发到集群中执行,并监控其运行状态;一旦运行成功,该任务就彻底脱离WorkQuene,交给集群管理;如果运行失败,则将其撤回到原先队列的底部进行重新排队,并将其失败原因的日志输出到相应日志平台。
4.按照权利要求1所述的一种神经网络训练任务的排队系统,其特征在于:所述EventLoop的工作流程为
1)使用Golang语言的CSP计算模型协调WorkQuene、ClusterInformer和EventLoop之间的执行逻辑关系,创建两个channel:JobqueneStatusChan和ClusterStatusChan,分别用来跟踪任务入队列的状态和集群发生变化的状态;
2)EventLoop不停地循环,在多个不同优先级的任务队列中寻找可以执行的任务,按照不同优先级,优先执行优先级比较高的任务;
3)为了防止EventLoop无意义的空转,需要实现EventLoop的阻塞机制,有两种状态需要阻塞EventLoop:1,任务队列全部执行完毕,没有其它可执行任务;2,集群资源被占满,没有可用资源;这两种阻塞也需要有相应的唤醒机制:针对第一种情形,唤醒的机制是当有新的任务提交进任务队列,则阻塞的EventLoop应该被唤醒;针对第二种情形,则集群有新的资源释放或者有新的计算节点的加入,则阻塞的EventLoop应该被唤醒。
5.按照权利要求4所述的一种神经网络训练任务的排队系统,其特征在于:所述工作流程2)具体为
调用JobLookup接口查看顶部任务队列的资源需求,再通过ResourceFactory的相应资源查询接口查询资源存量,一旦资源存量足够执行该任务,则调用JobPop接口弹出该任务,并分发该任务到集群进行执行,并跟踪任务状态;如果存量资源不足够执行该任务则等待下一轮匹配;
如此往复,一旦执行完高优先级的任务后即可执行低优先级的任务;
提交任务的过程是原子的,但是一旦提交任务之后便重新扫描不同优先级的任务队列,一旦高优先级的队列重新插入了新的任务,则依然优先执行,直到执行完毕才执行更低优先级的任务,并反复如此。
6.按照权利要求4所述的一种神经网络训练任务的排队系统,其特征在于:所述工作流程3)具体为
遍历任务队列,如果队列为空,则重复写入一个特殊字串进入JobQueneStatusChan,JobQueneStatusChan长度只有1,一旦写入字串,再重复写入的时候,EventLoop就会被阻塞;
当每次有新的任务插入到WorkQuene的时候,在插入任务的同时,取出JobQueneStatusChan里面的内容,如果JobQueneStatusChan本来就为空,则使用default模式执行下去,所以相应Goroutine不会被阻塞;而一旦JobQueneStatusChan里面有内容,该取出操作会唤醒EventLoop的Goroutine,使得EventLoop被唤醒;
ClusterStatusChan的机制,当EventLoop去查询集群存量资源的时候,一旦发现存量不足以运行当前任务,则会重复写入ClusterStatusChan,并阻塞住EventLoop;
当集群系统有资源释放或者新的节点加入,ClusterInformer会触发相应的事件,在处理事件的回调函数中,将ClusterStatusChan的channel中的内容读出,空出ClusterStatusChan,EventLoop中的写入操作可以被继续执行,继而EventLoop被唤醒,继续执行后续的业务逻辑。
7.按照权利要求1所述的一种神经网络训练任务的排队系统,其特征在于:所述ClusterInformer需要创建一个单独的常驻线程以运行,ClusterInformer则是集群部分的消息事件模块,ClusterInformer监听集群的资源状态,一旦有资源的增加、改动和删除,则会发出相应的事件,ClusterInformer捕捉到这样的事件,并调用相应的回调函数执行相应的处理逻辑,就可以和EventLoop配合起来,共同事实查询集群的状态和可用资源,细粒度控制任务的执行和回退。
8.按照权利要求1所述的一种神经网络训练任务的排队系统,其特征在于:所述ResourceFactory包括根据任务队列的配置生成相应的集群可运行的任务,删除和更新相应的集群任务,监控任务的运行状态,撤回相应的任务,集群的节点数、运行资源的运行时统计,以及集群的日志;ResourceFactory是所有与集群管理框架交互的唯一接口,Eventloop使用ResourceFactory实现与集群的交互。
9.按照权利要求1所述的一种神经网络训练任务的排队系统,其特征在于:创建持久存储数据库模块,用以存储任务队列的详细配置,入队、处队时间,排队和执行的事件以及任务的临时状态;当各个子系统启动以后,加入用户队列的添加机制:将用户的任务提交进入WorkQuene进行排队,任务的各个部分应该各司其职有效进行协调;EventLoop不断地监控队列和集群的状态,分发和执行相应的任务。
10.一种权利要求1所述的神经网络训练任务的排队系统的排队方法,其特征在于包含以下步骤:
步骤一:启动一个Goroutine运行任务队列,用户插入相应的任务到队列;
步骤二:启动ClusterInformer,监控集群资源变化情况;
步骤三:启动EventLoop,监控任务队列和ClusterInformer的情况:
3.1当所有任务队列为空,则重复写入JobQueneStatusChan,以使EventLoop阻塞住;
3.2当集群资源匮乏时,则重复写入ClusterStatusChan,以使EventLoop阻塞住;
3.3除上述两种情况以外,EventLoop按优先级顺序依次查看和匹配任务队列和系统资源,循环分发相应的任务;
步骤四:用户调用JobInsert接口插入相应的任务到任务队列:
4.1读取JobQueneStatusChan,如果JobQueneStatusChan非空,则读取操作可以激活EventLoop;
4.2读取JobQueneStatusChan,如果JobQueneStatusChan为空,则用Default模式跳过读取操作,任务入队列,并更新数据库的相应记录;
步骤五:ClusterInformer监听集群状态,当有新的节点加入或者有资源变更和释放时:
5.1读取ClusterStatusChan,如果ClusterStatusChan非空,则读取操作可以激活EventLoop;
5.2读取ClusterStatusChan,如果ClusterStatusChan为空,则用Default模式跳过读取操作,并更新数据库的相应记录;
步骤六:更新不同阶段的任务状态到持久数据库;
步骤七:结合ResourceFactory,创建与容器集群的查、改、增、删交互接口。
CN201811301453.2A 2018-11-02 2018-11-02 一种神经网络训练任务的排队系统及其方法 Active CN109828833B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811301453.2A CN109828833B (zh) 2018-11-02 2018-11-02 一种神经网络训练任务的排队系统及其方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811301453.2A CN109828833B (zh) 2018-11-02 2018-11-02 一种神经网络训练任务的排队系统及其方法

Publications (2)

Publication Number Publication Date
CN109828833A true CN109828833A (zh) 2019-05-31
CN109828833B CN109828833B (zh) 2020-09-29

Family

ID=66859764

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811301453.2A Active CN109828833B (zh) 2018-11-02 2018-11-02 一种神经网络训练任务的排队系统及其方法

Country Status (1)

Country Link
CN (1) CN109828833B (zh)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110389844A (zh) * 2019-07-12 2019-10-29 辽宁途隆科技有限公司 基于Go语言的消息处理方法及装置、存储介质
CN111708605A (zh) * 2020-05-29 2020-09-25 北京赛博云睿智能科技有限公司 一种智能运维支撑方法和支撑系统
CN111708604A (zh) * 2020-05-28 2020-09-25 北京赛博云睿智能科技有限公司 一种智能运维支撑方法
CN111738404A (zh) * 2020-05-08 2020-10-02 深圳市万普拉斯科技有限公司 模型训练任务处理方法、装置、电子设备和存储介质
CN111897625A (zh) * 2020-06-23 2020-11-06 新浪网技术(中国)有限公司 一种基于Kubernetes集群的资源事件回溯方法、系统及电子设备
CN112463334A (zh) * 2020-12-04 2021-03-09 苏州浪潮智能科技有限公司 一种训练任务排队原因分析方法、系统、设备以及介质
CN112612586A (zh) * 2020-12-24 2021-04-06 大唐互联科技(武汉)有限公司 一种基于反应式架构设计连接设备的方法及系统
CN112860400A (zh) * 2021-02-09 2021-05-28 山东英信计算机技术有限公司 一种处理分布式训练任务的方法、系统、设备及介质
CN114116220A (zh) * 2021-11-29 2022-03-01 苏州浪潮智能科技有限公司 一种gpu共享控制方法、gpu共享控制装置及存储介质
WO2022095815A1 (zh) * 2020-11-03 2022-05-12 阿里巴巴集团控股有限公司 显存管理方法、装置、设备及系统
WO2022143194A1 (zh) * 2020-12-30 2022-07-07 安徽寒武纪信息科技有限公司 一种执行异步任务的方法、设备和计算机程序产品

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5303369A (en) * 1990-08-31 1994-04-12 Texas Instruments Incorporated Scheduling system for multiprocessor operating system
CN101958808A (zh) * 2010-10-18 2011-01-26 华东交通大学 一种服务于多网格接入的集群任务调度管理器
CN102541640A (zh) * 2011-12-28 2012-07-04 厦门市美亚柏科信息股份有限公司 一种集群gpu资源调度系统和方法
CN102902592A (zh) * 2012-09-10 2013-01-30 曙光信息产业(北京)有限公司 一种集群计算资源的分区调度管理方法
CN103207814A (zh) * 2012-12-27 2013-07-17 北京仿真中心 一种去中心化的跨集群资源管理与任务调度系统与调度方法
CN108304260A (zh) * 2017-12-15 2018-07-20 上海超算科技有限公司 一种基于高性能云计算的虚拟化作业调度系统及其实现方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5303369A (en) * 1990-08-31 1994-04-12 Texas Instruments Incorporated Scheduling system for multiprocessor operating system
CN101958808A (zh) * 2010-10-18 2011-01-26 华东交通大学 一种服务于多网格接入的集群任务调度管理器
CN102541640A (zh) * 2011-12-28 2012-07-04 厦门市美亚柏科信息股份有限公司 一种集群gpu资源调度系统和方法
CN102902592A (zh) * 2012-09-10 2013-01-30 曙光信息产业(北京)有限公司 一种集群计算资源的分区调度管理方法
CN103207814A (zh) * 2012-12-27 2013-07-17 北京仿真中心 一种去中心化的跨集群资源管理与任务调度系统与调度方法
CN108304260A (zh) * 2017-12-15 2018-07-20 上海超算科技有限公司 一种基于高性能云计算的虚拟化作业调度系统及其实现方法

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110389844A (zh) * 2019-07-12 2019-10-29 辽宁途隆科技有限公司 基于Go语言的消息处理方法及装置、存储介质
CN110389844B (zh) * 2019-07-12 2022-07-19 辽宁途隆科技有限公司 基于Go语言的消息处理方法及装置、存储介质
CN111738404A (zh) * 2020-05-08 2020-10-02 深圳市万普拉斯科技有限公司 模型训练任务处理方法、装置、电子设备和存储介质
CN111738404B (zh) * 2020-05-08 2024-01-12 深圳市万普拉斯科技有限公司 模型训练任务处理方法、装置、电子设备和存储介质
CN111708604A (zh) * 2020-05-28 2020-09-25 北京赛博云睿智能科技有限公司 一种智能运维支撑方法
CN111708605A (zh) * 2020-05-29 2020-09-25 北京赛博云睿智能科技有限公司 一种智能运维支撑方法和支撑系统
CN111897625A (zh) * 2020-06-23 2020-11-06 新浪网技术(中国)有限公司 一种基于Kubernetes集群的资源事件回溯方法、系统及电子设备
CN111897625B (zh) * 2020-06-23 2023-10-20 新浪技术(中国)有限公司 一种基于Kubernetes集群的资源事件回溯方法、系统及电子设备
WO2022095815A1 (zh) * 2020-11-03 2022-05-12 阿里巴巴集团控股有限公司 显存管理方法、装置、设备及系统
CN112463334B (zh) * 2020-12-04 2023-08-18 苏州浪潮智能科技有限公司 一种训练任务排队原因分析方法、系统、设备以及介质
US11775344B1 (en) 2020-12-04 2023-10-03 Inspur Suzhou Intelligent Technology Co., Ltd. Training task queuing cause analysis method and system, device and medium
CN112463334A (zh) * 2020-12-04 2021-03-09 苏州浪潮智能科技有限公司 一种训练任务排队原因分析方法、系统、设备以及介质
CN112612586A (zh) * 2020-12-24 2021-04-06 大唐互联科技(武汉)有限公司 一种基于反应式架构设计连接设备的方法及系统
WO2022143194A1 (zh) * 2020-12-30 2022-07-07 安徽寒武纪信息科技有限公司 一种执行异步任务的方法、设备和计算机程序产品
CN112860400A (zh) * 2021-02-09 2021-05-28 山东英信计算机技术有限公司 一种处理分布式训练任务的方法、系统、设备及介质
CN114116220A (zh) * 2021-11-29 2022-03-01 苏州浪潮智能科技有限公司 一种gpu共享控制方法、gpu共享控制装置及存储介质

Also Published As

Publication number Publication date
CN109828833B (zh) 2020-09-29

Similar Documents

Publication Publication Date Title
CN109828833A (zh) 一种神经网络训练任务的排队系统及其方法
CN1955931B (zh) 在多核处理器内调度可执行事务的方法及多核处理器
US6961865B1 (en) Techniques for resuming a transaction after an error
CN105573840B (zh) 工作流运行期的事件处理方法和装置
CN1914593A (zh) 共享已空闲的处理器执行资源
CN109800067A (zh) 基于云监控的数据库连接优化方法、装置及相关设备
Gupta et al. Lock-free pending event set management in time warp
CN105357042B (zh) 一种高可用集群系统及其主节点和从节点
CN110473100A (zh) 一种基于区块链系统的交易处理方法及装置
CN108920271A (zh) 应用缓存清理方法、装置、存储介质和终端
CN102999384A (zh) 在挂起状态和执行状态下管理进程
Gupta et al. More optimism about real-time distributed commit processing
US20140344312A1 (en) Input-Output Prioritization for Database Workload
CN108595259A (zh) 一种基于全局管理的内存池管理方法
CN108595251B (zh) 动态图更新方法、装置、存储引擎接口和程序介质
CN109683984A (zh) 数据热加载方法、装置、电子设备及计算机可读存储介质
CN112000670B (zh) 一种多线程程序数据统一管理方法、系统及电子设备
CN108268605A (zh) 一种共享空间资源管理方法及系统
CN110162395A (zh) 一种内存分配的方法及装置
CN101030884B (zh) 电信网络资源oss系统中独占性资源的调度方法
CN111125070A (zh) 一种数据交换方法及平台
CN110489232A (zh) 资源隔离方法、装置、电子设备及存储介质
CN103995743A (zh) 基于资源预约的两级混合任务调度方法
CN114820218A (zh) 内容操作方法、装置、服务器及存储介质
CN111597147B (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