一种神经网络训练任务的排队系统及其方法技术方案

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

A Queuing System for Neural Network Training Tasks and Its Method

The invention discloses a queuing system for training tasks of neural network and its method. Workquene is the task queue and is responsible for managing the priority strategy of tasks; Resource Factory is responsible for the interaction between task queue and resource cluster; Eventloop is responsible for managing and monitoring the changes of clusters and tasks, matching the runnable tasks, and extracting related tasks from the task queue and putting them into the cluster for execution. TerInformer is a cluster event notification system. Once the cluster has resource-related changes, it can execute a callback function to execute relevant logic. These four components can provide user-mode task management mechanism for the mainstream cluster management system. The invention improves the utilization efficiency of hardware, especially GPU resources, and provides a fine-grained task management mechanism.

【技术实现步骤摘要】
一种神经网络训练任务的排队系统及其方法
本专利技术涉及一种任务排队系统及其方法,特别是一种神经网络训练任务的排队系统及其方法。
技术介绍
人工智能的兴起,特别是自动驾驶等技术的发展,需要海量运算资源,特别是稀缺的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运行任务队列,用户插入相应的任务到队列;步骤二:启动ClusterInfor本文档来自技高网...

【技术保护点】
1.一种神经网络训练任务的排队系统,其特征在于:包含ResourceFactory、EventLoop、WorkQuene和ClusterInformer四个模块,ResourceFactory模块负责任务队列和资源集群的交互;EventLoop模块负责管理监听集群和任务的变化,匹配可运行的任务,并从任务队列中取出相关任务放入集群执行;WorkQuene模块负责管理任务的优先级策略;ClusterInformer模块是集群的事件通知系统,集群一旦有资源相关变化,执行某个回调函数执行相关逻辑。

【技术特征摘要】
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不会被阻塞;而一旦...

【专利技术属性】
技术研发人员:任如意康茂银樊晶李磊顾翊黄义庭
申请(专利权)人:上海帆一尚行科技有限公司
类型:发明
国别省市:上海,31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1