掌桥专利:专业的专利平台
掌桥专利
首页

资源分配方法、资源分配装置、电子设备及存储介质

文献发布时间:2023-06-19 12:13:22


资源分配方法、资源分配装置、电子设备及存储介质

技术领域

本公开涉及人工智能技术领域,尤其涉及一种资源分配方法、资源分配装置、电子设备及计算机可读存储介质。

背景技术

随着互联网的高速发展,由互联网创造的数据规模也在呈爆炸式增长,集群和分布式的大数据平台应运而生。这些平台在运行多个任务时,往往会出现运行任务的队列竞争系统中有限资源的情况。因此,很有必要对系统资源进行合理分配。

现有的资源分配方法,通常是采用特定的调度器,来实现集群资源的分配管理。但是,现有的调度器,通常需要通过系统或人为设置一定的规则,导致任务队列在运行任务的过程中,资源分配情况较为死板,不能进行灵活的更新,重要的任务可能会需要较长的时间,从而对整体任务运行的效率造成影响。

因此,如何采取有效、合理的资源分配方法,以使得任务队列高效的运行任务,是现有技术亟待解决的技术问题。

需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。

发明内容

本公开提供了一种资源分配方法、资源分配装置、电子设备及计算机可读存储介质,进而至少在一定程度上克服现有的资源分配方法分配效率低、难以保证分配的合理性的问题。

本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。

根据本公开的一个方面,提供一种资源分配方法,包括:确定多个任务队列的初始资源配额,使每个所述任务队列采用对应的初始资源配额运行任务;当满足第一预设条件时,获取至少一个所述任务队列的资源使用状态数据;利用最新的强化学习模型对所述资源使用状态数据进行处理,得到资源分配动作数据,并采用所述资源分配动作数据调节所述多个任务队列的资源配额;当满足第二预设条件时,获取至少一个所述任务队列的任务运行状态数据;根据所述任务运行状态数据确定奖励值,并通过所述奖励值更新所述强化学习模型。

在本公开的一种示例性实施例中,所述确定多个任务队列的初始资源配额,包括:根据每个所述任务队列的重要级确定每个所述任务队列的初始资源配额。

在本公开的一种示例性实施例中,所述根据所述任务运行状态数据确定奖励值,包括:当根据所述任务运行状态数据确定存在提前完成的任务或运行失败的任务时,基于该任务所属任务队列的重要级计算所述奖励值。

在本公开的一种示例性实施例中,所述第一预设条件包括以下任意一种或多种:到达第一预定周期时间;任意所述任务队列的资源使用率超过第一预设阈值;任意所述任务队列中增加新的任务。

在本公开的一种示例性实施例中,所述获取至少一个所述任务队列的资源使用状态数据,包括:获取每个所述任务队列的资源使用状态数据;所述利用最新的强化学习模型对所述资源使用状态数据进行处理,得到资源分配动作数据,包括:以每个所述任务队列的资源使用状态数据为一行,将所述多个任务队列的资源使用状态数据转换为资源使用状态矩阵;将所述资源使用状态矩阵输入最新的强化学习模型,输出对应的资源分配动作数据。

在本公开的一种示例性实施例中,所述第二预设条件包括以下任意一种或多种:到达第二预定周期时间;进行m次调节资源配额,m为第一预设次数;任意所述任务队列的资源使用率在连续n次调节资源配额中均超过第二预设阈值,n为第二预设次数。

在本公开的一种示例性实施例中,所述通过所述奖励值更新强化学习模型,包括:基于所述奖励值、当前的所述资源使用状态数据、上一次调节资源配额时的资源使用状态数据以及上一次调节资源配额的资源分配动作数据,采用贝尔曼方程更新所述强化学习模型的价值函数。

在本公开的一种示例性实施例中,所述价值函数包括神经网络,当更新所述强化学习模型的价值函数时,更新所述神经网络的参数。

在本公开的一种示例性实施例中,所述资源分配动作数据包括:为一个所述任务队列增加预设资源配额,为另一个所述任务队列减少预设资源配额;或者保持各所述任务队列当前的资源配额。

根据本公开的一个方面,提供一种资源分配装置,包括:资源确定模块,用于确定多个任务队列的初始资源配额,使每个所述任务队列采用对应的初始资源配额运行任务;第一数据获取模块,用于当满足第一预设条件时,获取至少一个所述任务队列的资源使用状态数据;资源调节模块,用于利用最新的强化学习模型对所述资源使用状态数据进行处理,得到资源分配动作数据,并采用所述资源分配动作数据调节所述多个任务队列的资源配额;第二数据获取模块,用于当满足第二预设条件时,获取至少一个所述任务队列的任务运行状态数据;模型更新模块,用于根据所述任务运行状态数据确定奖励值,并通过所述奖励值更新所述强化学习模型。

在本公开的一种示例性实施例中,资源确定模块包括,资源配额确定单元,用于根据每个所述任务队列的重要级确定每个所述任务队列的初始资源配额。

在本公开的一种示例性实施例中,模型更新模块包括:奖励值计算单元,用于当根据所述任务运行状态数据确定存在提前完成的任务或运行失败的任务时,基于该任务所属任务队列的重要级计算所述奖励值。

在本公开的一种示例性实施例中,所述第一预设条件包括以下任意一种或多种:到达第一预定周期时间;任意所述任务队列的资源使用率超过第一预设阈值;任意所述任务队列中增加新的任务。

在本公开的一种示例性实施例中,第一数据获取模块包括:状态数据获取单元,用于获取每个所述任务队列的资源使用状态数据;资源调节模块包括:矩阵转换单元,用于以每个所述任务队列的资源使用状态数据为一行,将所述多个任务队列的资源使用状态数据转换为资源使用状态矩阵;动作数据输出单元,用于将所述资源使用状态矩阵输入最新的强化学习模型,输出对应的资源分配动作数据,并采用所述资源分配动作数据调节所述多个任务队列的资源配额。

在本公开的一种示例性实施例中,所述第二预设条件包括以下任意一种或多种:到达第二预定周期时间;进行m次调节资源配额,m为第一预设次数;任意所述任务队列的资源使用率在连续n次调节资源配额中均超过第二预设阈值,n为第二预设次数。

在本公开的一种示例性实施例中,模型更新模块包括:价值函数更新单元,用于根据所述任务运行状态数据确定奖励值,基于所述奖励值、当前的所述资源使用状态数据、上一次调节资源配额时的资源使用状态数据以及上一次调节资源配额的资源分配动作数据,采用贝尔曼方程更新所述强化学习模型的价值函数。

在本公开的一种示例性实施例中,所述价值函数包括神经网络,当更新所述强化学习模型的价值函数时,更新所述神经网络的参数。

在本公开的一种示例性实施例中,所述资源分配动作数据包括:为一个所述任务队列增加预设资源配额,为另一个所述任务队列减少预设资源配额;或者保持各所述任务队列当前的资源配额。

根据本公开的一个方面,提供一种电子设备,包括:处理器;以及存储器,用于存储所述处理器的可执行指令;其中,所述处理器配置为经由执行所述可执行指令来执行上述任意一项所述的方法。

根据本公开的一个方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项所述的方法。

本公开的示例性实施例具有以下有益效果:

确定多个任务队列的初始资源配额,使每个任务队列采用对应的初始资源配额运行任务,当满足第一预设条件时,获取至少一个任务队列的资源使用状态数据,利用最新的强化学习模型对资源使用状态数据进行处理,得到资源分配动作数据,并采用资源分配动作数据调节多个任务队列的资源配额,当满足第二预设条件时,获取至少一个任务队列的任务运行状态数据,根据任务运行状态数据确定奖励值,并通过奖励值更新强化学习模型。一方面,通过强化学习模型为任务队列进行资源分配,相比于现有技术或相关技术中人为进行队列资源分配的方式,分配过程简单、高效,且分配结果较为准确;另一方面,本示例性实施例通过设置第一预设条件,获取任务队列的资源使用状态数据,确定资源分配动作数据,进行资源分配,并设置第二预设条件及时更新模型,以优化模型在队列资源分配中的应用,可以适用于多种应用场景,且能够为多个任务队列合理分配资源,使得任务在运行过程中能够一直保持高效且稳定的状态,在尽可能避免任务失败的前提下,小任务尽快执行,大任务拥有充足资源。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1示意性示出本示例性实施例中一种资源分配方法的流程图;

图2示意性示出强化学习中智能体与环境的交互示意图;

图3示意性示出本示例性实施例中一种资源分配方法的子流程图;

图4示意性示出本示例性实施例中一种任务队列进行资源分配过程的示意图;

图5示意性示出本示例性实施例中另一种资源分配方法的流程图;

图6示意性示出本示例性实施例中一种强化学习模型更新过程的流程图;

图7示意性示出本示例性实施例中一种资源分配装置的结构框图;

图8示意性示出本示例性实施例中一种用于实现上述方法的电子设备;

图9示意性示出本示例性实施例中一种用于实现上述方法的计算机可读存储介质。

具体实施方式

现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。

在相关技术中,通常会采用两种现有的集群资源管理技术:Yarn(Yet AnotherResource Negotiator,另一种资源协调者)调度器和Mesos调度器。

其中,Yarn调度器,包括三种类型,分别是FIFO(First Input First Output,先进先出)调度器,Capacity(容量)调度器和Fair(公平)调度器,具体各调度器的资源分配方式如下:

FIFO调度器是把任务按照提交的顺序排成一个队列,该队列是一个先进先出队列,在进行资源分配的时,先给队列中最前的任务进行资源分配,待其资源满足需求后再为下一任务分配资源,以此类推。

Capacity调度器是通过人为的方式,在任务运行前为队列分配资源,例如两个队列,设置A队列可使用60%资源,设置B队列可使用40%资源,此后,这个资源配额不再变化。Capacity调度器还有个弹性分配机制,空闲的资源可以被分配给任何队列。当多个队列出现争用的时候,则会按照比例进行平衡。

Fair调度器是一种动态资源调度器。它可以对所有的队列应用公平分配的资源。例如当只有一个队列A时,它可占用所有的资源;当新加入一个队列B,变成两个队列时,Fair调度器会慢慢释放队列A的资源,然后A,B各自占用一半的资源。

然而,采用FIFO调度器时,可能会出现集群资源被大的任务长时间占用,导致小任务等待时间过长;或者集群资源被多个小任务占用,使得大任务得不到充足的资源,造成饥饿;采用Capacity调度器时,为小任务专门设置一个队列会预先占用一定的集群资源,导致大任务的执行时间会落后于使用FIFO调度器时的时间;采用Fair调度器时,由于对所有任务一视同仁,导致其并不能适用于任务重要程度要高低的场景,应用范围受到了限制。

而Mesos调度器,使用了DRF(Dominant Resource Fairness,主导资源公平)算法。其思想是资源较多时,资源分配应该由用户的dominant share(主导份额的资源)决定,dominant share是在所有已经分配给用户的多种资源中,占据最大份额的一种资源。如果考虑单资源,该算法就退化成max-min fairness算法,即首先将资源平均分配或者按权重分配好,然后按从用户需求从小到大进行分配,需求小的用户得到了高于自身需求的资源,便把这个差值拿出来对剩下的用户进行相同方式的分配。但是,由于Mesos调度器是静态分配,不能根据任务实际运行情况动态修改资源分配,因此,也不能在应用场景下,灵活进行资源分配。

基于此,本公开的示例性实施例首先提供了一种资源分配方法,资源可以包括但不限于:计算资源、存储资源、网络资源等。其中,计算资源可以包括多种设备,例如CPU(central processing unit,中央处理器)、GPU(Graphics Processing Unit,图形处理器)、NPU(Neural-network Processing Unit,嵌入式神经网络处理器)、TPU(tensorprocessing unit,张量处理器)等;存储资源可以包括内存、硬盘等;网络资源可以是带宽形式,也可以是定期补充的流量形式。通常,一项任务的运行需要多种资源,本示例性实施例可以为其分配一种或多种资源。本实施例方法的应用场景可以是:在平台或系统中,为加入队列的应用自动分配合理的资源,以使各个队列能够高效、准确的运行任务。

下面结合附图1对本示例性实施例做进一步说明,如图1所示,资源分配方法可以包括以下步骤S110~S140:

步骤S110,确定多个任务队列的初始资源配额,使每个任务队列采用对应的初始资源配额运行任务。

其中,初始资源配额是指任务队列原始被分配的资源大小,其可以由人为自定义进行设置,也可以由系统为各任务队列默认一初始值,具体初始资源额度的大小设置,本公开对此不做具体限定。在本示例性实施例中,可以采用集中式调度的方式,使用一个处理器作为专门的调度器,所有获取的任务都可以先达到这个中心调度器,然后按照一定的初始资源配额运行任务。

在一示例性实施例中,上述确定多个任务队列的初始资源配额,可以包括:

根据每个任务队列的重要级确定每个任务队列的初始资源配额。

在实际应用中,每个任务的重要程度是不相同的,如果将重要的和不重要的任务都放进一个任务队列中,再为每个任务队列都分配同样的资源运行任务,不仅会花费较多的时间,且由于任务运行缺乏针对性,导致难以快速准确运行重要任务。因此,本示例性实施例首先可以将多个任务队列分为多个类型,例如重要任务队列、较重要任务队列和普通任务队列等,再根据各队列的类型,为其分配不同的初始资源配额,例如根据每个任务队列的重要程度(即重要级),确定为重要队列分配50%的初始资源配额,为较重要队列分配30%的初始资源配额,为普通队列分配20%的初始资源配额等。

步骤S120,当满足第一预设条件时,获取至少一个任务队列的资源使用状态数据。

其中,任务队列的资源使用状态数据,是指能够反映任务队列当前资源使用的情况,例如内存使用率,CPU(central processing unit,中央处理器)占用率,IO(inputoutput,输入输出)使用率,任务数量,总等待时间,总响应时间,当前占用配额等。在本示例性实施例中,任务运行时可以具有多种状态,即任务队列的资源使用状态数据可以有多个维度。因此,为了便于后续计算与处理,可以为任务队列建立资源使用状态数据的向量,例如对至少一个任务队列使用word embedding(词嵌入)的方法生成对应的向量。向量中的各个维度可以表示,任务队列当前资源使用的情况,例如内存使用率,CPU占用率,IO使用率,任务数量,总等待时间,总响应时间,当前占用配额等数据。

在实际应用中,为了能够更好的应用于各个场景中,在不同条件下,对各个任务队列的资源进行灵活调整与分配,本示例性实施例还可以设置第一预设条件的机制,当满足第一预设条件时,即触发获取任务队列的资源使用状态数据,以进行后续对各个任务队列进行资源分配的步骤。具体的,在一示例性实施例中,上述第一预设条件可以包括以下任意一种或多种:

(1)到达第一预定周期时间;

(2)任意任务队列的资源使用率超过第一预设阈值;

(3)任意任务队列中增加新的任务。

当满足上述一种或多种第一预设条件时,可以获取资源使用状态数据,以便进行后续步骤。具体的,考虑到任务队列中的任务运行一段时间后,各任务队列的任务运行情况可能有所不同,因此可以设置第一预设条件(1),使得可以周期性调节各个任务队列的资源配额,例如设置第一预定周期时间为5秒,则可以周期性每5秒获取一次任务队列的资源使用状态数据;在任务运行过程中,如果某一任务队列中资源使用率超过一定程度,对该任务队列的运行情况也会造成影响,因此,可以根据资源使用率设置第一预设阈值,当某一任务队列的资源使用率超过该第一预设阈值时,可以重新对各任务队列的资源进行分配,即第一预设条件(2);第一预设条件(3)则是考虑到,如果有新的任务加入时,为了能够对各个任务队列之间的资源进行更好平衡处理,使加入新任务时,各个任务队列任然能够合理高效的运行任务。

步骤S130,利用最新的强化学习模型对资源使用状态数据进行处理,得到资源分配动作数据,并采用资源分配动作数据调节多个任务队列的资源配额。

其中,强化学习模型是机器学习的一个分支,强调如何基于当前的环境进行行动,以取得最大化的预期效果,即有机体如何在环境的奖励或惩罚刺激下,逐步形成对刺激的预期,产生能够最大化利益的习惯性行为。强化学习与有监督和无监督的学习不同,它的互动主要基于环境和智能体之间的互动,环境无需为智能体提供标签或数据,而是给它一定的刺激,让它的行为发生一定的改变。

强化学习模型中有4个要素:(1)状态,可以用State或S表示;(2)行为,可以用Action或A表示,行为能给智能体带来效益和让智能体来到新的状态;(3)即时奖励,可以用Reward或者R表示,描述执行一个行为后得到来自环境的反馈,可以是正面的也可以是负面的;(4)策略,可以用Policy或者π表示,描述智能体对状态到行为的映射。强化学习模型的训练过程是智能体与环境进行实时交互,并通过动作影响环境的过程,其目的是为了找到一个最优策略,使智能体获得尽可能多的来自环境的奖励,例如在本示例性实施例中,环境可以是资源分配场景,智能体可以是资源分配终端如调度器,状态可以是各队列的资源使用情况,动作可以是进行资源分配,策略可以是进行怎样的资源分配,奖励可以是给队列评较高的分或赋予较高的重要程度等。

图2示出了强化学习中智能体与环境的交互示意图,其中,智能体210即为执行决策的个体,例如资源分配的调度器或其他终端设备,环境220则表示与执行决策的个体所处的场景,如进行资源分配的调度器在为多个队列分配资源的场景下。强化学习模型的训练过程可以是,在每个时间步,智能体210在当前资源使用状态下根据观察(Observation)确定下一步的资源分配动作(Action),智能体210在环境220中进行不断的交互,基于环境220给智能体210的反馈(Reward),更新智能体的行为策略,直到使智能体210获取来自环境220的最佳反馈。

最新的强化学习模型是指最近一次进行模型更新后的模型,即最近一次完成模型训练后的模型,其可以是上一次执行完成资源分配动作后更新的模型,也可以是一段时间之前更新的模型等。在本示例性实施例中,资源分配动作数据是指可以反映上述资源分配动作的数据,其实质上是对各任务队列进行怎样资源分配的数据,或对任务队列具体分配多少资源的动作数据,例如任务队列A、B、C,初始资源配额分别为50%、30%、20%,资源分配动作数据可以是40%、35%、25%,则可以根据资源分配动作数据调节各任务队列的资源配额;也可以是对任务队列中的资源进行增加、减少或不变的动作数据。

在一示例性实施例中,上述资源分配动作数据可以包括:

为一个任务队列增加预设资源配额,为另一个任务队列减少预设资源配额;或者

保持各任务队列当前的资源配额。

其中,预设资源配额可以认为是对任务队列进行资源分配的可调节资源配额,举例说明,在A、B、C三个队列中任意选择两个队列,对其中一个队列进行固定数量配额的增加或减少,相应的另一个队列就减少或增加相同配额,固定数量配额即本示例性实施例中的预设资源配额。例如:选择A,B两个队列,对A队列增加2%配额或者减少2%配额,相应的B队列就会在之前的基础上失去2%配额或者获得2%配额。资源分配动作还可以选择不变化当前的资源配额。基于此,资源分配动作数据可以包含7种动作:A增加B减少,A减少B增加,A增加C减少,A减少C增加,B增加C减少,B减少C增加,不变化。

步骤S140,当满足第二预设条件时,获取至少一个任务队列的任务运行状态数据。

其中,任务运行状态数据可以是指任务队列中任务运行的时间,任务是否提前完成,或者队列中是否含有运行失败的任务等。在本示例性实施例中,对于强化学习模型的更新,以及对任务队列的资源分配,可以是两个并行的过程,即在进行队列资源分配的同时,不影响强化学习模型的更新,并且在每次进行队列资源分配时,可以使用最新更新的强化学习模型对资源使用状态数据进行处理,得到资源分配动作数据。第二预设条件即为用于判断是否触发进行模型更新的条件。

具体的,在一示例性实施例中,第二预设条件包括以下任意一种或多种:

(1)到达第二预定周期时间;

(2)进行m次调节资源配额,m为第一预设次数;

(3)任意任务队列的资源使用率在连续n次调节资源配额中均超过第二预设阈值,n为第二预设次数。

当满足上述一种或多种第二预设条件时,可以获取任务运行状态数据,以进行后续模型更新的步骤。在本示例性实施例中,可以从三个方面设置第二预设条件,其一,从时间方面考虑,周期性更新强化学习模型,当到达第二预设周期时间时,则触发获取至少一个任务队列的任务运行状态数据;其二,从调节资源配额的次数考虑,即当进行资源配额调节的次数超过一定数量时,可以触发获取至少一个任务队列的任务运行状态数据,例如动态进行任务队列的资源分配,到达500次后,将这500次的资源分配过程产生的数据,作为样本更新强化学习模型;其三,从资源使用率的方面考虑,当任务一个任务队列的资源使用率在连续n次的资源配额的调节过程中,均超过第二预设阈值时,可以认为当前使用的强化学习模型可能在当前资源配额的分配中不是非常合适,可以触发获取至少一个任务队列的任务运行状态数据,以对模型进行更新。

步骤S150,根据任务运行状态确定奖励值,并通过奖励值更新强化学习模型。

强化学习的基本思想是通过与环境的不断交互,通过接收反馈信息,更新行为策略,从而确定环境的最佳反馈。当在环境中穷尽了所有的状态和行为后,它能找到每个状态下最好的行为,也就是找到了最佳决策。在本示例性实施例中,即通过获取的任务运行状态确定奖励值,并通过奖励值更新强化学习模型,例如在强化学习模型的训练过程中,当到达统计窗口时,如果任务队列中有任务成功完成了并且运行时间比预期时间短,则给予较高的奖励值,如果有任务失败时,则给予较低的奖励值。需要说明的是,在本示例性实施例中,在进行强化学习模型的更新时,还可以通过奖励值、状态矩阵以及历史分配动作数据,对强化学习模型进行更新。

具体的,在一示例性实施例中,步骤S150中通过奖励值更新强化学习模型,可以包括:

基于奖励值、当前的资源使用状态数据、上一次调节资源配额时的资源使用状态数据以及上一次调节资源配额的资源分配动作数据,采用贝尔曼方程更新强化学习模型的价值函数。

通常,价值函数可以反映当前的状态与行为之间的价值。本示例性实施例可以通过贝尔曼方程,更新强化学习模型的价值函数。可以通过以下公式获取价值函数Q(s,a):

Q(s,a)=r+γmax

价值函数Q(s,a)可以表示当前资源使用状态数据的价值函数值可以由当前的奖励值r加权组合下一个资源使用状态数据的价值函数值迭代得到。其中,s表示任务队列中的当前的资源使用状态数据,a表示当前任务队列的资源分配动作数据,r表示当前的奖励值,s'是指资源使用状态数据s在进行了资源分配动作数据a之后,到达的新的资源使用状态数据,a'是指资源使用状态数据s'下令价值函数最大的动作。

在一示例性实施例中,如图3所示,上述步骤S120中,获取至少一个任务队列的资源使用状态数据,可以包括以下步骤:

步骤S310,获取每个任务队列的资源使用状态数据;

进一步,步骤S130可以包括:

步骤S320,以每个任务队列的资源使用状态数据为一行,将多个任务队列的资源使用状态数据转换为资源使用状态矩阵;

步骤S330,将资源使用状态矩阵输入最新的强化学习模型,输出对应的资源分配动作数据,并采用资源分配动作数据调节多个任务队列的资源配额。

为了对所有任务队列的资源进行合理调节,增加整体任务运行的平衡性,在本示例性实施例中,可以获取每个任务队列的资源使用状态数据。例如A、B、C三个任务队列,则可以分别获取A、B、C这三个任务队列的内存使用率,CPU占用率,IO使用率,任务数量,总等待时间,总响应时间,当前占用配额,以每个任务队列的资源使用状态数据为一行,建立对应的向量,再根据各任务队列的资源使用状态数据的向量,生成资源使用状态矩阵,以该矩阵作为强化学习模型的输入,并输出对应于该资源使用状态矩阵的资源分配动作数据。资源使用状态矩阵中每一个行向量都能反映该行对应的任务队列的资源使用状态。在本示例性实施例中,资源使用状态矩阵列向量的数量,即各任务队列对应的向量的维度可以根据具体情况进行自定义调整。

图4示意性示出了A、B、C三个任务队列资源分配的过程示意图,其中,任务队列A410、任务队列B 411、任务队列C 412三个任务队列分别具有初始资源配额60%、20%、20%,t1、t2表示各任务队列中需要运行的任务,本示例性实施例中t1、t2仅作为示例性示意,并不限于两个任务。首先分别确定任务队列A、B、C的资源使用状态数据所对应的向量V1、V2以及V3,x1、x2、x3分别表示多个维度下的数据,如内存使用率,CPU占用率,IO使用率,任务数量,总等待时间,总响应时间,当前占用配额等,需要说明的是,此处x1、x2、x3仅为示意性实例,并不限于向量维度为3;并基于此,将V1、V2、V3作为矩阵的行向量,确定任务队列A、B、C的资源使用状态矩阵;将资源使用状态矩阵输入强化学习模型420后,可以得到资源分配动作数据,最后,根据资源分配动作数据对各任务队列进行资源配额的更新。可以发现,任务队列A 430增加了2%的资源配额,变成62%,任务队列B 431保持20%的资源配额,任务队列C 432减少了2%的资源配额,变成了18%。

图5示意性示出本示例性实施例中另一种资源分配方法的流程图,具体可以包括以下步骤:

步骤S510,确定多个任务队列的初始资源配额,使每个任务队列采用对应的初始资源配额运行任务;

步骤S520,判断是否满足第一预设条件;

如果满足第一预设条件,则执行步骤S530,获取至少一个任务队列的资源使用状态数据;

并执行步骤S540,利用最新的强化学习模型对资源使用状态数据进行处理,得到资源分配动作数据;

步骤S550,采用资源分配动作数据调节多个任务队列的资源配额;

步骤S560,判断是否满足第二预设条件;

如果满足第二预设条件,则执行步骤S570,获取至少一个任务队列的任务运行状态数据;

并执行步骤S580,根据任务运行状态数据确定奖励值,并通过奖励值更新强化学习模型。

其中,在步骤S520之后,如果不满足第一预设条件,则可以不执行步骤S530以及后续资源配额的调整步骤,继续进行执行步骤S520,判断当前状态是否满足第一预设条件。在步骤S550之后,可以返回步骤S520,继续进行第一预设条件的判断步骤,以进行之后的资源调节过程。在步骤S560之后,如果不满足第二预设条件,则可以不执行对强化学习模型更新的步骤,继续执行步骤S560,判断当前状态是否满足第二预设条件,以确定是否进行对强化学习模型进行更新。在步骤S580之后,可以将更新后的强化学习模型作为最新的模型应用与步骤S540之中。

图6示意性示出本示例性实施例中一种资源分配方法中,对强化学习模型进行更新的流程图,具体可以包括以下步骤:

步骤S610,获取每个任务队列的资源使用状态数据;

步骤S620,以每个任务队列的资源使用状态数据为一行,将多个任务队列的资源使用状态数据转换为资源使用状态矩阵;

步骤S630,将资源使用状态矩阵输入最新的强化学习模型,输出对应的资源分配动作数据;

步骤S640,当满足第二预设条件时,获取至少一个任务队列的任务运行状态数据,并根据任务运行状态数据确定奖励值;

步骤S650,基于奖励值、当前的资源使用状态数据、上一次调节资源配额时的资源使用状态数据以及上一次调节资源配额的资源分配动作数据,采用贝尔曼方程更新强化学习模型的价值函数。

在本示例性实施例中,可以将进行资源调节的历史过程的相关数据,例如资源使用状态矩阵、资源分配动作数据、以及奖励值组合在一起,添加至存储器中,当满足第二预设条件时,例如当进行了500次资源调节时,可以从存储器中抽取历史数据作为样本数据,进行强化学习模型的训练。

基于上述说明,在本示例性实施例中,确定多个任务队列的初始资源配额,使每个任务队列采用对应的初始资源配额运行任务,当满足第一预设条件时,获取至少一个任务队列的资源使用状态数据,利用最新的强化学习模型对资源使用状态数据进行处理,得到资源分配动作数据,并采用资源分配动作数据调节多个任务队列的资源配额,当满足第二预设条件时,获取至少一个任务队列的任务运行状态数据,根据任务运行状态数据确定奖励值,并通过奖励值更新强化学习模型。一方面,通过强化学习模型为任务队列进行资源分配,相比于现有技术或相关技术中人为进行队列资源分配的方式,分配过程简单、高效,且分配结果较为准确;另一方面,本示例性实施例通过设置第一预设条件,获取任务队列的资源使用状态数据,确定资源分配动作数据,进行资源分配,并设置第二预设条件及时更新模型,以优化模型在队列资源分配中的应用,可以适用于多种应用场景,且能够为多个任务队列合理分配资源,使得任务在运行过程中能够一直保持高效且稳定的状态,在尽可能避免任务失败的前提下,小任务尽快执行,大任务拥有充足资源。

在一示例性实施例中,步骤S130中,根据任务运行状态确定奖励值,可以包括:

当根据任务运行状态数据确定存在提前完成的任务或运行失败的任务时,基于该任务所属任务队列的重要级计算奖励值。

在强化学习模型的训练过程中,可以建立一价值函数,价值函数可以包括队列任务的资源使用状态数据,以及资源分配动作数据。并通过价值函数对所有可能的资源分配动作数据进行评分,以确定哪一资源分配动作数据可以得到更好的结果。随着迭代次数的增加,不同状态下的资源分配动作数据的评分趋于稳定,此时,即可以确定哪个资源分配动作数据是比较好的。确定了资源分配动作数据后,当根据任务运行状态确定存在提前完成的任务或运行失败的任务时,基于该任务所属任务队列的重要级计算奖励值,例如,如果任务队列中有任务成功完成了并且运行时间比预期时间短,可以设置最近一次价值函数得到100×任务队列重要级系数(设置A、B、C任务队列的重要性系数分别为:A队列任务为1,B队列任务为0.6,C队列队列任务为0.3)分;当有任务队列失败时,设置最近一次价值函数得到-100×任务重要级系数分。其中,任务队列的重要级系数可以根据需要进行自定义设置,本公开对此不做具体限定。

在一示例性实施例中,价值函数包括神经网络,当更新强化学习模型的价值函数时,更新神经网络的参数。

在本示例性实施例中,根据强化学习模型DQN(Deep Q-Learning)建立的价值函数中可以包括神经网络,则价值函数可以表示为Q(s,a,θ),其中,s表示任务队列中的资源使用状态数据,a表示当前任务队列的资源分配动作数据,θ表示神经网络模型中的参数,强化学习模型每轮训练迭代过程中θ是固定不变的,当s确定时,可以根据价值函数对当前资源分配动作数据进行评分,根据评分确定哪一资源分配动作是较好的结果,例如上述资源分配动作数据包括:A增加B减少,A减少B增加,A增加C减少,A减少C增加,B增加C减少,B减少C增加,不变化,这7种情况时,可以分别对这7种动作进行评分,确定其中较好的资源分配动作数据。本示例性实施例中,在强化模型的训练过程中,当更新强化学习模型的价值函数时,可以更新神经网络的参数。

另外,本示例性实施例的强化学习模型,还可以使用策略epsilon-Greedy(ε-贪婪)算法,根据该算法生成的数字,决定是选择评分最高的资源分配动作数据还是在多个资源分配动作数据中随机选择一个。其中,epsilon-Greedy算法是可以让策略既能沿着已知的好的方向执行,也能在未知的方向中进行尝试已期望发现更好的。本示例性实施例可以强化模型训练的迭代初期让策略尽可能探索,即尽可能尝试每一个资源分配动作数据。

在本示例性实施例中,可以将每次执行完成资源分配动作数据后观察到的任务队列资源使用状态矩阵表示为s,使用的资源分配动作数据表示为a,下次进行资源分配时观察到的资源使用状态矩阵表示为s',得到的奖励评分表示为r,基于此,生成一个四元组(s,s',a,r)存放到存储器中,并动态进行500次资源分配,随机从存储器中选出500个作为样本,在进行神经网络参数更新时,采用experience replay(经验回放)算法进行随机抽样,并使用随机批量梯度下降法对Q(s,a,θ)中的θ进行更新。

本公开的示例性实施例还提供了一种资源分配装置。参照图7,该装置700可以包括:资源确定模块710,用于确定多个任务队列的初始资源配额,使每个任务队列采用对应的初始资源配额运行任务;第一数据获取模块720,用于当满足第一预设条件时,获取至少一个任务队列的资源使用状态数据;资源调节模块730,用于利用最新的强化学习模型对资源使用状态数据进行处理,得到资源分配动作数据,并采用资源分配动作数据调节多个任务队列的资源配额;第二数据获取模块740,用于当满足第二预设条件时,获取至少一个任务队列的任务运行状态数据;模型更新模块750,用于根据任务运行状态数据确定奖励值,并通过奖励值更新强化学习模型。

在一示例性实施例中,资源确定模块包括,资源配额确定单元,用于根据每个任务队列的重要级确定每个任务队列的初始资源配额。

在一示例性实施例中,模型更新模块包括:奖励值计算单元,用于当根据任务运行状态数据确定存在提前完成的任务或运行失败的任务时,基于该任务所属任务队列的重要级计算奖励值。

在一示例性实施例中,第一预设条件包括以下任意一种或多种:到达第一预定周期时间;任意任务队列的资源使用率超过第一预设阈值;任意任务队列中增加新的任务。

在一示例性实施例中,第一数据获取模块包括:状态数据获取单元,用于获取每个任务队列的资源使用状态数据;资源调节模块包括:矩阵转换单元,用于以每个任务队列的资源使用状态数据为一行,将多个任务队列的资源使用状态数据转换为资源使用状态矩阵;动作数据输出单元,用于将资源使用状态矩阵输入最新的强化学习模型,输出对应的资源分配动作数据,并采用资源分配动作数据调节多个任务队列的资源配额。

在一示例性实施例中,第二预设条件包括以下任意一种或多种:到达第二预定周期时间;进行m次调节资源配额,m为第一预设次数;任意任务队列的资源使用率在连续n次调节资源配额中均超过第二预设阈值,n为第二预设次数。

在一示例性实施例中,模型更新模块包括:价值函数更新单元,用于根据任务运行状态数据确定奖励值,基于奖励值、当前的资源使用状态数据、上一次调节资源配额时的资源使用状态数据以及上一次调节资源配额的资源分配动作数据,采用贝尔曼方程更新强化学习模型的价值函数。

在一示例性实施例中,价值函数包括神经网络,当更新强化学习模型的价值函数时,更新神经网络的参数。

在一示例性实施例中,资源分配动作数据包括:为一个任务队列增加预设资源配额,为另一个任务队列减少预设资源配额;或者保持各任务队列当前的资源配额。

上述装置中各模块/单元的具体细节在方法部分的实施例中已经详细说明,未披露的细节内容可以参见方法部分的实施例内容,因此此处不再赘述。

本公开的示例性实施例还提供了一种能够实现上述方法的电子设备。

所属技术领域的技术人员能够理解,本公开的各个方面可以实现为系统、方法或程序产品。因此,本公开的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。

下面参照图8来描述根据本公开的这种示例性实施例的电子设备800。图8显示的电子设备800仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。

如图8所示,电子设备800以通用计算设备的形式表现。电子设备800的组件可以包括但不限于:上述至少一个处理单元810、上述至少一个存储单元820、连接不同系统组件(包括存储单元820和处理单元810)的总线830、显示单元840。

其中,存储单元存储有程序代码,程序代码可以被处理单元810执行,使得处理单元810执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施方式的步骤。例如,处理单元810可以执行图1所示的步骤S110~S150,也可以执行图3所示的步骤S310~S330等。

存储单元820可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)821和/或高速缓存存储单元822,还可以进一步包括只读存储单元(ROM)823。

存储单元820还可以包括具有一组(至少一个)程序模块825的程序/实用工具824,这样的程序模块825包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。

总线830可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。

电子设备800也可以与一个或多个外部设备1000(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备800交互的设备通信,和/或与使得该电子设备800能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口850进行。并且,电子设备800还可以通过网络适配器860与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器860通过总线830与电子设备800的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备800使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。

通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开示例性实施例的方法。

本公开的示例性实施例还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施方式中,本公开的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在终端设备上运行时,程序代码用于使终端设备执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施方式的步骤。

参考图9所示,描述了根据本公开的示例性实施例的用于实现上述方法的程序产品900,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本公开的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。

计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。

可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言的任意组合来编写用于执行本公开操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。

此外,上述附图仅是根据本公开示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。

应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的示例性实施例,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其他实施例。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由权利要求指出。

应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限。

相关技术
  • 资源分配方法、资源分配装置、电子设备及存储介质
  • 资源播放和资源分配方法、装置、电子设备及存储介质
技术分类

06120113212937