基于用户组的资源动态分配方法、系统、终端及存储介质与流程

文档序号:20839694发布日期:2020-05-22 17:20阅读:199来源:国知局
基于用户组的资源动态分配方法、系统、终端及存储介质与流程

本发明涉及集群资源分配技术领域,具体涉及一种基于大数据的发型推荐方法、系统、终端及存储介质。



背景技术:

人工智能领域,在进行模型训练时,需要巨大的算力来提高训练速度,越来越多的企业或者科研院所开始采购gpu服务器作为人工智能场景下的基础设施。目前的深度学习框架、经典的算法模型在运行时都需要较多的gpu显存、gpu卡数,通常一次模型训练都会占用一张或或者多张gpu,这会导致gpu是一种紧缺资源,gpu服务器成本较高,企业不可能购买大量的gpu服务器来,来同时满足全部算法人员的gpu资源需求。从资源利用率的角度,基础设施平台运维人员希望分配出去的资源能够被充分利用,提高集群的资源利用率,而使用gpu的算法人员希望获得更多的gpu卡,从而希望训练任务能够使用尽可能少的时间完成,加快模型的迭代速度。当存在不同的算法人员或者不同的部门时,如何能够公平有效的分配资源,是基础设施运维人员面临的一大困难。同时在有些场景下,例如科研人员临时紧急需要一批gpu资源,用于完成模型训练,不希望等待资源的分配,从而能够尽快的输出训练结果,此时平台需要能够支持这种紧急任务的资源分配。



技术实现要素:

针对现有技术的上述不足,本发明提供一种基于用户组的资源动态分配方法、系统、终端及存储介质,以解决上述技术问题。

第一方面,本发明提供一种基于用户组的资源动态分配方法,包括:

设置用户组并设置所述用户组的权重;

采集用户组下的任务信息并根据所述任务信息生成用户组资源需求量;

按所述资源需求量由大到小生成用户组资源分配顺序;

根据当前资源可用量和用户组权重计算用户组资源分配量;

根据所述资源分配顺序和所述用户组资源分配量向用户组分配资源。

进一步的,所述方法还包括:

采集用户组下的任务信息;

将紧急任务从所述用户组的任务移除,并将所述紧急任务添加至紧急队列,所述紧急队列优先分配资源;

将已分配到最小可执行资源的任务移动至所述用户组的任务队列的末尾;

将所述用户组的任务队列的任务按任务由大到小进行先后排序,并将大小相同的任务按创建时间有早到晚进行先后排序。

进一步的,所述方法还包括:

将所述用户组的已分配资源向所述任务队列中的任务依次下发。

进一步的,所述方法还包括:

采集用户组已分配资源量;

判断所述用户组需求资源量是否超过所述已分配资源量:

若是,则将所述用户组加入待分配资源队列;

若否,则将所述用户组从待分配资源队列移除。

进一步的,所述根据当前资源可用量和用户组权重计算用户组资源分配量,包括:

采集集群当前资源可用量;

计算用户组的权重比,所述权重比为所述用户组权重与所有用户组权重和之比;

计算所述当前资源可用量与所述权重比的乘积,并将所述乘积作为所述用户组的资源分配量;

采集所述用户组的历史资源分配量,将所述资源分配量与所述历史资源分配量之和作为已分配资源量。

进一步的,所述方法还包括:

判断用户组的资源分配量是否大于资源需求量:

若是,则为所述用户组分配资源需要量等量的资源,并将资源分配量与资源需求量的差量资源释放。

第二方面,本发明提供一种基于用户组的资源动态分配系统,包括:

分组设置单元,配置用于设置用户组并设置所述用户组的权重;

需求生成单元,配置用于采集用户组下的任务信息并根据所述任务信息生成用户组资源需求量;

顺序生成单元,配置用于按所述资源需求量由大到小生成用户组资源分配顺序;

量值计算单元,配置用于根据当前资源可用量和用户组权重计算用户组资源分配量;

分配执行单元,配置用于根据所述资源分配顺序和所述用户组资源分配量向用户组分配资源。

进一步的,所述系统还包括:

信息采集单元,配置用于采集用户组下的任务信息;

经济处理单元,配置用于将紧急任务从所述用户组的任务移除,并将所述紧急任务添加至紧急队列,所述紧急队列优先分配资源;

任务调度单元,配置用于将已分配到最小可执行资源的任务移动至所述用户组的任务队列的末尾;

队列排序单元,配置用于将所述用户组的任务队列的任务按任务由大到小进行先后排序,并将大小相同的任务按创建时间有早到晚进行先后排序。

第三方面,提供一种终端,包括:

处理器、存储器,其中,

该存储器用于存储计算机程序,

该处理器用于从存储器中调用并运行该计算机程序,使得终端执行上述的终端的方法。

第四方面,提供了一种计算机存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。

本发明的有益效果在于,

本发明提供的基于用户组的资源动态分配方法、系统、终端及存储介质,按照用户组对提交的训练任务划分不同的用户组调度队列,每个用户组的调度队列包含权重、优先级、用户组资源占用集群资源的比值、是否为紧急队列等信息,本发明的资源动态分配策略,会根据以上信息和算法,选择最合适的用户组,并为其分配资源,当可以为用户组进行资源分配时,属于该用户组的第一个深度学习任务才会进入到调度队列。在每个调度周期内,在完成一个任务的调度后,会再次计算选择合适的用户组,从而能够公平的为不同的用户组合理的分配资源。本发明能够保证每个用户能够公平的获得资源,同时基于本发明,当在某些算法人员需要紧急创建训练任务时,可以保证该训练任务首先被调度并分配资源,当不同的部门或者用户同时申请gpu资源进行模型训练时,通过一定的算法计算部门或者用户对资源的饥饿程度,从而优先满足该类部门或者用户的资源需求。

此外,本发明设计原理可靠,结构简单,具有非常广泛的应用前景。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明一个实施例的方法的示意性流程图。

图2是本发明一个实施例的系统的示意性框图。

图3为本发明实施例提供的一种终端的结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

图1是本发明一个实施例的方法的示意性流程图。其中,图1执行主体可以为一种基于用户组的资源动态分配系统。

如图1所示,该方法100包括:

步骤110,设置用户组并设置所述用户组的权重;

步骤120,采集用户组下的任务信息并根据所述任务信息生成用户组资源需求量;

步骤130,按所述资源需求量由大到小生成用户组资源分配顺序;

步骤140,根据当前资源可用量和用户组权重计算用户组资源分配量;

步骤150,根据所述资源分配顺序和所述用户组资源分配量向用户组分配资源。

为了便于对本发明的理解,下面以本发明基于用户组的资源动态分配方法的原理,结合实施例中对集群资源进行动态分配的过程,对本发明提供的基于用户组的资源动态分配方法做进一步的描述。

具体的,所述基于用户组的资源动态分配方法包括:

s1、调度平台搭建阶段,部署kubernetes集群以及自研的业务系统,平台运维人员基于该平台为不同的用户或者部门创建不同的用户组,用户组包含以下属性,如下所示:

s2、属于不同用户组的用户可以提交深度学习的训练任务,训练任务包含请求的资源数量,包括cpu、内存、存储、gpu,其中用户组、用户、深度学习训练任务的关系如下所示,其中一个任务通常包含多个pod(每个pod可以认为是一个或者多个容器)

s3、当多个属于同一用户组的用户同时提交训练任务时(允许指定该训练任务是否为紧急任务),基于以下算法构建用户组的用户组调度队列,即每个用户组的训练任务属于一个优先级队列。该训练任务是否为紧急任务,当该任务为紧急任务时,将该训练任务放到系统内置的紧急任务队列,该紧急任务队列不区分用户组,属于不同用户组的任务都可以放到该紧急任务队列中。

该训练任务是否已经在上一个调度周期完成了最小化pod数量的资源分配,如果已经满足,则将该训练任务放在队列的尾部

训练任务的优先级是否较大,如果较大,则将该训练任务放在队列的头部,如果两个训练任务的优先级相同,则按照训练任务的创建时间排序,创建时间较早的放在队列的头部。

调度周期开始时,首先处理紧急任务队列,判断紧急任务队列中是否存在待调度的任务,当存在时,将任务取出并进行资源的分配,当遍历完紧急任务队列后,如果紧急任务队列中,仍然存在处于pennding状态的任务时,则终止该调度周期,不再处理各用户组队列中的任务。

s4、已经按照用户组对系统中的全部深度学习训练任务进行了分组,在每个调度周期内,按照一定规则选择处理用户组的训练任务,达到用户组公平的资源分配效果,具体的规则如下所示:

采集每个用户组下的任务信息,任务信息包括(cpu需求量、gpu需求量以及内存需求量)统计每个用户组的资源需求量qx。按需求量由大到小生成用户组的资源分配先后顺序。

当一个用户组的历史分配资源量超过用户组资源需求量,则将所述用户组从待分配资源队列移除,不再分配资源。否则,将所述用户组加入待分配资源队列。

用户组的资源分配量:其中,r为待分配用户组的权重,r为所有用户组的权重和,qk为集群当前可用资源量。

则用户组的已分配资源量:qp=qf+ql,其中ql为历史资源分配量。

判断用户组的资源分配量是否大于资源需求量:若是,则为所述用户组分配资源需要量等量的资源,并将资源分配量与资源需求量的差量资源释放。

计算用户组队列的share值:选择三者的最小值,作为该队列的share值

选择share值最小的用户组队列,将该用户组队列中的队头的任务取出,进行调度,选择并分配资源。在选择的训练任务完成资源分配后,重新进行各用户组分配资源的计算,再次选择合适的用户组队列和训练任务。遍历完所有的用户组的全部训练任务。

如图2示,该系统200包括:

分组设置单元210,配置用于设置用户组并设置所述用户组的权重;

需求生成单元220,配置用于采集用户组下的任务信息并根据所述任务信息生成用户组资源需求量;

顺序生成单元230,配置用于按所述资源需求量由大到小生成用户组资源分配顺序;

量值计算单元240,配置用于根据当前资源可用量和用户组权重计算用户组资源分配量;

分配执行单元250,配置用于根据所述资源分配顺序和所述用户组资源分配量向用户组分配资源。

可选地,作为本发明一个实施例,所述系统还包括:

信息采集单元,配置用于采集用户组下的任务信息;

经济处理单元,配置用于将紧急任务从所述用户组的任务移除,并将所述紧急任务添加至紧急队列,所述紧急队列优先分配资源;

任务调度单元,配置用于将已分配到最小可执行资源的任务移动至所述用户组的任务队列的末尾;

队列排序单元,配置用于将所述用户组的任务队列的任务按任务由大到小进行先后排序,并将大小相同的任务按创建时间有早到晚进行先后排序。

图3为本发明实施例提供的一种终端系统300的结构示意图,该终端系统300可以用于执行本发明实施例提供的基于用户组的资源动态分配方法。

其中,该终端系统300可以包括:处理器310、存储器320及通信单元330。这些组件通过一条或多条总线进行通信,本领域技术人员可以理解,图中示出的服务器的结构并不构成对本发明的限定,它既可以是总线形结构,也可以是星型结构,还可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

其中,该存储器320可以用于存储处理器310的执行指令,存储器320可以由任何类型的易失性或非易失性存储终端或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。当存储器320中的执行指令由处理器310执行时,使得终端300能够执行以下上述方法实施例中的部分或全部步骤。

处理器310为存储终端的控制中心,利用各种接口和线路连接整个电子终端的各个部分,通过运行或执行存储在存储器320内的软件程序和/或模块,以及调用存储在存储器内的数据,以执行电子终端的各种功能和/或处理数据。所述处理器可以由集成电路(integratedcircuit,简称ic)组成,例如可以由单颗封装的ic所组成,也可以由连接多颗相同功能或不同功能的封装ic而组成。举例来说,处理器310可以仅包括中央处理器(centralprocessingunit,简称cpu)。在本发明实施方式中,cpu可以是单运算核心,也可以包括多运算核心。

通信单元330,用于建立通信信道,从而使所述存储终端可以与其它终端进行通信。接收其他终端发送的用户数据或者向其他终端发送用户数据。

本发明还提供一种计算机存储介质,其中,该计算机存储介质可存储有程序,该程序执行时可包括本发明提供的各实施例中的部分或全部步骤。所述的存储介质可为磁碟、光盘、只读存储记忆体(英文:read-onlymemory,简称:rom)或随机存储记忆体(英文:randomaccessmemory,简称:ram)等。

因此,本发明按照用户组对提交的训练任务划分不同的用户组调度队列,每个用户组的调度队列包含权重、优先级、用户组资源占用集群资源的比值、是否为紧急队列等信息,本发明的资源动态分配策略,会根据以上信息和算法,选择最合适的用户组,并为其分配资源,当可以为用户组进行资源分配时,属于该用户组的第一个深度学习任务才会进入到调度队列。在每个调度周期内,在完成一个任务的调度后,会再次计算选择合适的用户组,从而能够公平的为不同的用户组合理的分配资源。本发明能够保证每个用户能够公平的获得资源,同时基于本发明,当在某些算法人员需要紧急创建训练任务时,可以保证该训练任务首先被调度并分配资源,当不同的部门或者用户同时申请gpu资源进行模型训练时,通过一定的算法计算部门或者用户对资源的饥饿程度,从而优先满足该类部门或者用户的资源需求,本实施例所能达到的技术效果可以参见上文中的描述,此处不再赘述。

本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中如u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质,包括若干指令用以使得一台计算机终端(可以是个人计算机,服务器,或者第二终端、网络终端等)执行本发明各个实施例所述方法的全部或部分步骤。

本说明书中各个实施例之间相同相似的部分互相参见即可。尤其,对于终端实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例中的说明即可。

在本发明所提供的几个实施例中,应该理解到,所揭露的系统和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,系统或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

尽管通过参考附图并结合优选实施例的方式对本发明进行了详细描述,但本发明并不限于此。在不脱离本发明的精神和实质的前提下,本领域普通技术人员可以对本发明的实施例进行各种等效的修改或替换,而这些修改或替换都应在本发明的涵盖范围内/任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1