基于深度增强学习的工作流调度方法与流程

文档序号:13760957阅读:2508来源:国知局
基于深度增强学习的工作流调度方法与流程

本发明涉及计算机软件领域,具体地,涉及基于深度增强学习的工作流调度方法。



背景技术:

在分布式计算环境中,工作流调度问题(workflow scheduling)一直以来都是计算机领域内的优化问题之一。工作流调度问题实际上就是给出一个调度方案,将工作流上的任务按照一定的顺序调度到合适执行节点上执行,以达到最小执行代价。其数学模型如下:

一个具体的计算应用可以由一个有向无环图(DAG)G(T,E)来表示,其中T是n个任务集合{t1,t2,...,tn},E是任务之间的依赖关系集合。每一个依赖关系e(i,j)∈E表示任务tj需要在任务ti执行完成之后才能开始执行。给出一个有限的机器集合M,M包含n台节点{m1,m2,...,mn}。令χ表示所有的分配情况集合,对于元素x∈χ一般可以表示成一个|T|×|M|的矩阵,表示一种分配计划,与此同时,假设存在一个代价函数C:χ→[0,+∞],代价函数可以被表示为总执行时间(makespan)长度,那么对于每一组分配有:Cij:M×J→[0,+∞]其中Cij表示任务Ji分配到机器Mj后执行的代价。综上,作业调度问题可以抽象为,求出一组分配解x∈χ使得C(x)最小,也就是说不存在一组分配解y使得C(y)<C(x)。那么,对于作业调度的优化问题,有两个主要方面需要考虑,一个是系统资源的占用率,一个是整个作业执行完成的总时间。

工作流调度问题已经被证明属于NP完全问题,无法找到多项式时间复杂度的解。现有解决NP完全问题通常采用启发式算法、遗传算法或Q学习算法,启发式算法只能算出次优解;遗传算法需要进行数次迭代过程,才可以找到相对比较好的解,整个迭代过程执行时间较长,在大数据实时计算平台上,优化的时间消耗甚至是不可以接受的;Q学习算法在泛化性和性能表现上都不错,但是一旦任务数量级过大,整个状态数目过多,Q值矩阵维数过高导致计算机无法存储整个Q值矩阵(Q(s,a))。



技术实现要素:

本发明克服了现有技术的不足,提供基于深度增强学习的工作流调度方法,解决目前分布式环境下工作流调度方法执行时间长,泛化性差的缺陷,加速保证算法的时间效率,同时增加算法本身的泛化性能,让调度机器能够根据实际场景特征自主学习调度策略。

本发明解决上述问题所采用的技术方案是:基于深度增强学习的工作流调度方法,包括如下步骤:

步骤A)收集实际执行环境中的任务执行DAG工作流有向无环图M张,作为样本池;

步骤B)对每张DAG工作流有向无环图进行MDP马尔科夫决策过程建模,生成任务状态集合S;

步骤C)根据神经网络的训练方法DQN,将M张DAG工作流有向无环图生成的任务状态集合S和对应的已知动作集合A作为输入,代入深度神经网络公式Q(s,a;θi),求得执行任务i时的神经网络参数矩阵θi的值,Q为动作价值函数,s为任务状态集合S中的一个,a为动作集合A中的一个调度方案;

步骤D)判断DAG工作流有向无环图生成的任务状态集合S是否全部依次代入神经网络的训练方法DQN,如果全部代入,则输出最终的神经网络参数矩阵θi的值,如果没有则继续执行神经网络的训练方法DQN。

步骤E)对于新输入的DAG工作流有向无环任务,同样进行MDP马尔科夫决策过程建模,生成初始任务状态S0,代入步骤D)中的深度神经网络公式Q(s,a;θi),其中θi的值为步骤D)中计算得到的值,即可获得最终的动作集合A中的一个调度方案a,并且将这次输入DAG工作流有向无环图的任务状态以及调度结果输入到样本池。

本方案在Q学习算法即深度增强学习的基础上,引入深度神经网络来替代Q(s,a)即Q(s,a,θ)≈Q(s,a)其中θ为神经网络的参数矩阵,θ为神经网络的参数矩阵采用神经网络的训练方法DQN计算得到最小值,而s通过数学建模得到,根据神经网络的训练方法DQN计算得到最小值θ和s代入Q(s,a,θ)公式,即可得到最佳的调度方案a。本方案中的所述的一个具体的深度神经网络如下图2所示,神经网络包含很多层次,每一层次包含若干神经元,一个神经元本质上可以描述为函数,接收上层神经元的输出,经过函数计算,输出给下层神经元。神经元内 部采用的函数,我们称之为激活函数,一般我们采用ReLu(Rectified Linear Units)激活函数,具体如下所示,对于输入向量s,s即为MDP建模中任务状态集合中的一个,我们有

f(θs)=max(0,θs)

对于一层中的一个神经元而言,θ本质上是一个1*n向量。根据神经网络的这种一一映射关系,我们得到θ值后,即可找到对应的Q(s,a,θ)的值,然后根据数学建模得到的s代入得到最佳的调度方案a。该调度方案a使工作流上的任务按照一定的顺序调度到合适执行节点上执行,使执行代价最小。该方法避免出现Q学习算法中因为状态数S和动作集合A可能很大,往往计算机没办法存下的缺陷。

本发明技术方案在调度上即不像普通启发式算法一样采用同一模型对不同的DAG输入进行调度,也不像遗传算法一样,在计算调度结果过程中进行多次迭代执行,消耗大量时间。同时,没有单纯采用Q学习算法,而是采用DQN(Q学习算法结合深度神经网络)来进行工作流调度。由于基于深度神经网络的计算可以通过GPU加速保证算法的时间效率,同时增加算法本身的泛化性能,让调度机器能够根据实际场景特征自主学习调度策略。

进一步优选的,还包括步骤F)当样本池累积到一定程度之后,重复步骤C)对深度神经网络公式Q(s,a;θi)进行再计算,得到新的θi值和新的深度神经网络Q′(s,a;θi)用于后续输入的DAG工作流有向无环图调度计算。

样本池累计到一定程度是指样本池中累计增加的DAG工作流有向无环图的样本数量超过100,就启动一次步骤C)进行计算,训练样本会随机从样本池中取样100张DAG工作流有向无环图进行计算。随着样本池中DAG工作流有向无环图的不断增加,利用神经网络的训练方法DQN,不断的更新θi的值后,再进行计算得到最佳的调度方案,让调度机器能够根据实际场景特征自主学习调度策略。

优选的,步骤C)中根据马尔科夫决策过程推出的神经网络的训练方法DQN步骤如下:

步骤C1)对于每一个时间点t,有马尔科夫过程et=(st,at,rt,st+1),定义存储池D=e1,e2…eN,初始化存储池D大小为N,初始化价值动作函数Q,梯度下降法迭代次数为M次,M为DAG工作流有向无环图张数,初始化任务状态集合 st中的其中的是s1对应的映射函数,则是st对应的映射函数;

步骤C2)当执行一段时间以后,得到对应时间点t的调度方案at,若调度方案只有一个则为at本身,否则得到任务状态集合(t+1)时间点的任务状态集合将此时的存入存储池D;

步骤C3)令i为存储池中DAG工作流有向无环图张数,如果i为循环的最后一张DAG工作流有向无环图,则令yi=ri,ri为回馈函数R(St,at)对应时刻的值;如果i不是循环的最后一张DAG工作流有向无环图,则令ri为回馈函数R(St,at)对应时刻的值,是st对应的映射函数,a′为对应时间点t的调度方案,Υ为衰减系数,衰减系数的取值范围为0-1。

步骤C4)根据梯度下降算法,对深度神经网络的损失函数Lii)=Es,a~p(·)[(yi-Q(s,a;θi))2],迭代M次,即对该损失函数求偏导求得该损失函数的最小值,并将该损失函数的最小值代入公式对θi进行更新,其中α叫做学习率为常量,在这里学习率取值为0.001,直到θi收敛或者迭代完成为止,就可以得到神经网络的参数矩阵θi的值。

步骤B)中对每张DAG工作流有向无环图进行MDP马尔科夫决策过程建模步骤如下:

步骤B1)用二维数组G(T,E)来存储DAG工作流有向无环图,其中T表示DAG工作流有向无环图中的任务节点集合,E表示DAG工作流有向无环图中的边集;

步骤B2)定义(Ti,Tj)∈E表示任务j必须在任务i执行完成之后执行,定义V(Ti,Ti)>0表示任务Ti本身的预估执行时间,定义V(Ti,Tj)表示任务i和任务j如果被分配到不同的节点执行的通信时间,当V(Ti,Tj)=∞说明任务i和任务j之间没有依赖关系;

步骤B3)通过一个N×(N+1)的二维矩阵VN×(N+1)来表示整个工作流的分 配状态S,其中N表示DAG中任务节点的总数,矩阵的最后一列即第N+1列,表示每个任务的分配情况;

步骤B4)定义回馈函数其中t(St)表示任务状态St下的总执行时间。C表示初始状态S0下的总执行时间,

综上,本发明的有益效果是:

本方案在调度上即不像普通启发式算法一样采用同一模型对不同的DAG输入进行调度,也不像遗传算法一样,在计算调度结果过程中进行多次迭代执行,消耗大量时间,采用Q学习算法结合深度神经网络来进行工作流调度,加速保证算法的时间效率,同时增加算法本身的泛化性能,让调度机器能够根据实际场景特征自主学习调度策略。

附图说明

图1是本发明基于深度神经网络运行的流程图;

图2是本发明的Q(s,a,;θ)深度神经网络;

图3是本发明的DAG任务调度图。

具体实施方式

下面结合实施例及附图,对本发明作进一步地的详细说明,但本发明的实施方式不限于此。

本方案中提到的DAG:即工作流有向无环图;MDP:马尔科夫决策过程;

DQN:深度Q值网络,是深度增强学习的核心,本质上是一种深度神经网络,用来替代前面所提到的Q值矩阵。

实施例1:

如图1-3所示,本发明包括基于深度增强学习的工作流调度方法,包括如下步骤:

步骤A)收集实际执行环境中的任务执行DAG工作流有向无环图M张,作为样本池;

步骤B)对每张DAG工作流有向无环图进行MDP马尔科夫决策过程建模,生成任务状态集合S;

步骤C)根据神经网络的训练方法DQN,将M张DAG工作流有向无环图生成的任务状态集合S和对应的已知动作集合A作为输入,代入深度神经网络公式Q(s,a;θi),求得执行任务i时的神经网络参数矩阵θi的值,Q为动作价值函数,s为任务状态集合S中的一个,a为动作集合A中的一个调度方案;

步骤D)判断DAG工作流有向无环图生成的任务状态集合S是否全部依次代入神经网络的训练方法DQN,如果全部代入,则输出最终的神经网络参数矩阵θi的值,如果没有则继续执行神经网络的训练方法DQN。

步骤E)对于新输入的DAG工作流有向无环任务,同样进行MDP马尔科夫决策过程建模,生成初始任务状态S0,代入步骤D)中的深度神经网络公式Q(s,a;θi),其中θi的值为步骤D)中计算得到的值,即可获得最终的动作集合A中的一个调度方案a,并且将这次输入DAG工作流有向无环图的任务状态以及调度结果输入到样本池。

步骤C)中根据马尔科夫决策过程推出的神经网络的训练方法DQN步骤如下:

步骤C1)对于每一个时间点t,有马尔科夫过程et=(st,at,rt,st+1),定义存储池D=e1,e2…eN,初始化存储池D大小为N,初始化价值动作函数Q,梯度下降法迭代次数为(1-M)次,M为DAG工作流有向无环图张数,初始化任务状态集合st中的其中的是s1对应的映射函数,则是st对应的映射函数;

步骤C2)当执行一段时间以后,得到对应时间点t的调度方案at,若调度方案只有一个则为at本身,否则得到任务状态集合(t+1)时间点的任务状态集合将此时的存入存储池D;

步骤C3)令i为存储池中DAG工作流有向无环图张数,如果i为循环的最后一张DAG工作流有向无环图,则令yi=ri,ri为回馈函数R(St,at)对应时刻的值;如果i不是循环的最后一张DAG工作流有向无环图,则令ri为回馈函数R(St,at)对应时刻的值,是st对应的映射函数,a′为对应时间点t的调度方案,Υ为衰减系数,该衰减系数的取值范围在0到1之间。

步骤C4)根据梯度下降算法,对深度神经网络的损失函数Lii)=Es,a~p(·)[(yi-Q(s,a;θi))2],迭代M次,即对该损失函数求偏导求得该损失函数的最小值,并将该损失函数的最小值代入公式对θi进行更新,其中α叫做学习率为常量,在这里学习率取值为0.001,直到θi收敛或者迭代完成为止,就可以得到神经网络的参数矩阵θi的值。

步骤B)中对每张DAG工作流有向无环图进行MDP马尔科夫决策过程建模步骤如下:

步骤B1)用二维数组G(T,E)来存储DAG工作流有向无环图,其中T表示DAG工作流有向无环图中的任务节点集合,E表示DAG工作流有向无环图中的边集;

步骤B2)定义(Ti,Tj)∈E表示任务j必须在任务i执行完成之后执行,定义V(Ti,Ti)>0表示任务Ti本身的预估执行时间,定义V(Ti,Tj)表示任务i和任务j如果被分配到不同的节点执行的通信时间,当V(Ti,Tj)=∞说明任务i和任务j之间没有依赖关系;

步骤B3)通过一个N×(N+1)的二维矩阵VN×(N+1)来表示整个工作流的分配状态S,其中N表示DAG中任务节点的总数,矩阵的最后一列即第N+1列,表示每个任务的分配情况;

步骤B4)定义回馈函数其中t(St)表示任务状态St下的总执行时间。C表示初始状态S0下的总执行时间,

现有工作流调度通常采用如下算法解决:分别为启发式算法、遗传算法和Q学习算法。

第一种采用启发式算法对工作流调度问题进行求解是比较经典的调度算法。List scheduling算法首先会根据一定的算法来计算每个任务的优先级,然后根据优先级决定应该先调度哪个任务后调度哪个任务。基本上,这一类算法分两步进行,第一步求出所有任务的优先级,第二步为待调度的任务分配资源。不同的List scheduling算法采用的优先级计算方法以及资源选择方法都不尽相同。

采用List scheduling算法求解时间复杂度一般在O(n2),速度相对较快。但是算法本身属于启发式算法,只能求出次优解。并且算法泛化性能较差,调度场景一旦发生变化,其算法求出的结果不一定是很好的解。

第二种采用遗传算法在泛化性上对比与普通的启发式算法要好,具有很强的通用性,但其缺点也很明显,遗传算法需要进行数次迭代过程,才可以找到相对比较好的解,整个迭代过程执行时间较长,在大数据实时计算平台上,优化的时间消耗甚至是不可以接受的。

第三种采用Q学习算法(Q-Learning),针对协同工作中的任务调度问题,建立了相应的马尔可夫决策过程模型,在此基础上提出了一种改进的基于模拟退火的Q学习算法。该算法通过引入模拟退火,并结合贪婪策略,以及在状态空间上的筛选判断,显著地提高了收敛速度,缩短了执行时间。利用Q学习算法进行训练求出详细方案见《基于Q学习的任务调度问题的改进研究》(图学学报2012年第3月)。

该方案利用了增强学习的技术,对DAG调度问题进行抽象。算法在泛化性和性能表现上都不错,但是一旦任务数量级过大,整个状态数目过多,Q值矩阵维数过高导致计算机无法存储整个Q值矩阵(Q(s,a))。

深度增强学习是将深度学习与增强学习结合起来从而实现从Perception感知到Action动作的端对端学习的一种全新的算法。深度增强学习在解决决策问题方面有非常好的效果,其具备使机器人实现真正完全自主的学习一种甚至多种技能的潜力。

深度增强学习的理论基础在于马尔科夫决策过程。一个典型的马尔科夫决策过程由一个四元组<S,A,P,R,γ>组成,其中S表示状态集合,A表示动作集合,P表示状态转换的概率矩阵,R表示回馈值,γ为衰减系数,取值范围在0到1。

定义一个决策π(a|s)=P[At=a|St=s]表示状态St选择动作At的概率,定义动作价值函数(action-value)Qπ(s,a)=Eπ[Gt|St=s,At=a]其中Gt表示累积价值, 其中下标t表示时间,k为常数值。Eπ[Gt|St=s,At=a]表示在策略π下状态s做出动作a所获得的累积价值的期望。那么增强学习需要解决的问题就是,在所有的决策中寻找最大价值的动作价值函数即:

Q(s,a)=maxπQπ(s,a);

对上式进行展开可以得到:

Q(s,a)=maxπEπ[Rt|St=s,At=a];

对于这个问题的求解本身可以用动态规划进行求解,将上述式子转换成如下递归方程表示:

Q(s,a)=maxπEs′~ε[R+γmaxa,Q(s′,a′)|s,a];

对于求解这一递归方程,可以采用动态规划的方式,即存储每一个Q(s,a)的值,但在实际上,这个实现是不切实际的,因为状态数S和动作集合A可能很大,往往计算机没办法存下。

所以本方案在Q学习算法即深度增强学习的基础上,引入深度神经网络来替代Q(s,a)即Q(s,a,θ)≈Q(s,a)其中θ为神经网络的参数矩阵,θ为神经网络的参数矩阵采用神经网络的训练方法DQN计算得到最小值,而s通过数学建模得到,根据神经网络的训练方法DQN计算得到最小值θ和s代入Q(s,a,θ)公式,即可得到最佳的调度方案a。本方案中的所述的一个具体的深度神经网络如下图2所示,神经网络包含很多层次,每一层次包含若干神经元,一个神经元本质上可以描述为函数,接收上层神经元的输出,经过函数计算,输出给下层神经元。神经元内部采用的函数,我们称之为激活函数,一般我们采用ReLu(Rectified Linear Units)激活函数,具体如下所示,对于输入向量s,s即为MDP建模中任务状态集合中的一个,我们有

f(θs)=max(0,θs)

对于一层中的一个神经元而言,θ本质上是一个1*n向量。根据神经网络的这种一一映射关系,我们得到θ值后,即可找到对应的Q(s,a,θ)的值,然后根据数学建模得到的s代入得到最佳的调度方案a。该调度方案a使工作流上的任务按照一定的顺序调度到合适执行节点上执行,使执行代价最小。该方法避免出现Q学习算法中因为状态数S和动作集合A可能很大,往往计算机没办法存下的缺陷。

本发明技术方案在调度上即不像普通启发式算法一样采用同一模型对不同的DAG输入进行调度,也不像遗传算法一样,在计算调度结果过程中进行多次迭代执行,消耗大量时间。同时,没有单纯采用Q学习算法,而是采用DQN(Q学习算法结合深度神经网络)来进行工作流调度。由于基于深度神经网络的计算 可以通过GPU加速保证算法的时间效率,同时增加算法本身的泛化性能,让调度机器能够根据实际场景特征自主学习调度策略。

在进行工作流调度时,通过MDP建模过程初始化待调度的DAG的状态S0;将状态S0作为深度神经网络的输入,得到调度策略Q值Q(s,a),选取Q值最大的调度方案,更新DAG状态;断DAG状态是否为调度完所有任务,如果调度完所有任务,输出调度结果,如果没有那么继续迭代过程。

如图3、表1、表2、表3,就是采用本方案所述的方法,将DAG工作流有向无环任务图对应的任务T1~T9分配到4台节点M1~M4上执行:

如说明书附图3所示为DAG任务调度图,圆圈里面代表执行任务以及执行任务需要时间,箭头代表下一步执行的方向,箭头上的数字代表两任务之间的传递时间。例如:任务T1自己执行时间需要时间2秒,执行完毕以后传递到任务T2需要时间4秒,传递到任务T3、T4和T5均需要1秒,传递到T7需要10秒,而T2自己执行完毕需要3秒,执行完毕后再传递到任务T6,以此类推,以此执行,直到执行完任务T9。

在未分配任务之前的状态S0,矩阵VN×N如下表1所示,其中C=66为初始状态S0下的总执行时间,横坐标和纵坐标之间对应的数字代表两个任务之间执行所需要的时间,如坐标T1T1=2代表T1自己执行需要时间2秒,以此类推,M列代表节点是否执行,—1表示还没有执行,1代表已经执行;

当调度任务T1到节点M1之后,任务状态S1图变为,其回馈值为66/66=1,如下表2所示;

接着调度T2到节点M1执行,任务状态S2图为下表3所示,计算回馈值为:66/62=1.06;

由于T1和T2在同一台节点上执行,所以V(T1,T2)值变为0也就是说任务1和任务2执行的通信时间开销变为0。

模型建立完成之后,就有了作为DQN算法的输入Q(s,a),那么对于这样一个确定的模型,通过多次迭代学习我们可以训练我们的深度Q网络,加速保证算法的时间效率,同时增加算法本身的泛化性能,让调度机器能够根据实际场景特征自主学习调度策略。

实施例2:

本实施例在实施例1的基础上优选如下:还包括步骤F)当样本池累积到一定程度之后,重复步骤C)对深度神经网络公式Q(s,a;θi)进行再计算,得到新的θi值和新的深度神经网络Q(s,a;θi)用于后续输入的DAG工作流有向无环图调度计算。

样本池累计到一定程度是指样本池中累计增加的DAG工作流有向无环图的样本数量超过100,就启动一次步骤C)进行计算,训练样本会随机从样本池中取样100张DAG工作流有向无环图进行计算。

随着样本池中DAG工作流有向无环图的不断增加,利用神经网络的训练方法DQN,不断的更新θi的值后,再进行计算得到最佳的调度方案,让调度机器能够根据实际场景特征自主学习调度策略。

以上所述,仅是本发明的较佳实施例,并非对本发明做任何形式上的限制,凡是依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化,均落入本发明的保护范围之内。

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