一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于LSTM和遗传算法的分布式系统资源优化分配方法

2022-05-27 01:51:43 来源:中国专利 TAG:

基于lstm和遗传算法的分布式系统资源优化分配方法
技术领域
1.本发明涉及神经网络、任务调度和优化算法领域,通过神经网络设计了一个时间预测模型,通过时间预测模型和优化算法相结合,运用到资源分配中,使得用户作业能分配到合适的资源量,来达到用户作业执行时间最短的优化目标。


背景技术:

2.在分布式计算环境中,分配给作业的资源量决定了作业的执行速度。研究表明,分配过多的资源给作业不但不能缩短作业的运行时间,反而会增加作业运行节点间的通信开销,导致作业的执行时间变长。因此非常有必要研究分布式系统的资源分配方法,为每个作业分配最合适的资源量。


技术实现要素:

3.本发明要克服现有技术的上述缺点,提供一种基于lstm和遗传算法的分布式系统资源优化分配方法。
4.本发明通过lstm时间预测模型,结合遗传算法来对用户作业进行资源分配。来解决了以往默认调度环境下没有针对用户作业分配资源量大小的缺点。
5.本发明基于lstm和遗传算法的分布式系统资源优化分配方法,包括以下步骤:
6.1)进行基于lstm网络的作业执行时间预测模型的训练。lstm网络的输入为作业的信息,输出信息为作业的运行时间。
7.2)使用遗传算法为批作业中每个作业分配合理的资源量。把遗传算法的适应度函数改为基于lstm的时间预测模型,通过遗传算法的选择,交叉,变异,迭代出适合每个作业的资源量大小。
8.3)使用基于遗传算法的资源分配算法针对不同作业给予不同的资源量。当spark分布式计算框架收到作业时,将根据不同的作业能使用的集群资源量来进行计算,以得到作业最短的处理时间。
9.进一步,步骤1)具体包括:
10.1.1)在集群运行过程中,对用户作业的运行时间影响因素进行分析,最终确定了五个用户作业执行时间的影响因子:作业类型、作业的数据量、作业使用的cpu核数、作业使用的内存大小和作业使用的节点数;
11.1.2)在真实分布式集群中运行不同的作业(描述作业的参数为作业类型、数据量、作业使用的cpu核数、内存大小和节点数),收集作业运行时间,作为时间预测模型的训练和测试数据;
12.1.3)基于lstm的时间预测模型的输入分别是作业类型、作业数据量、作业使用的为作业类型、作业的数据量、作业使用的cpu核数、内存大小和节点数,模型输出为作业的运行时间;
13.模型所采用的损失函数为均方差(mean square error,mse),计算方法如下:
[0014][0015]
其中,yi表示作业的真实运行时间,表示作业的预测执行时间,m是作业样本数量;
[0016]
1.4)进行模型超参数的选择;对于学习率的取值,采用分步实验的方法;首先,针对经典的学习率取值进行实验,用迭代过程中对应的损失值来确定最佳学习率的量级;随后,调整此量级中学习率的数值,进一步进行试验,最终得到最佳的学习率;对于迭代次数,使用不同的迭代次数进行实验,取对应的损失值最小的数据作为最优迭代次数;选取不同的网络层数进行模型运行,取对应的损失值最小的数据作为最优网络层数;选取不同的dropout率进行模型运行,取对应的损失值最小的数据作为最优dropout率;
[0017]
隐藏层节点个数使用下面的经验公式和实验确定;
[0018][0019]
其中nh,ni,no分别代表是神经网络的隐含层节点数、输入层节点数和输出层的节点数。确定隐藏层节点个数的优化搜索算法包括下面几步:
[0020]
(a)确定隐含层节点数的初始取值区间;
[0021]
(b)取值区间缩小;
[0022]
(c)取值区间拓展;
[0023]
(d)确定最优隐藏层节点数。
[0024]
进一步,步骤2)具体包括:
[0025]
2.1)进行染色体编码设计;染色体用以描述集群需要处理的用户作业信息,采用二进制编码;染色体中,每个作业占据相同的位数,分别表示作业类型、作业的数据量、作业使用的cpu核数、内存大小和节点数;
[0026]
2.2)根据需要处理的批作业生成初始种群;按照染色体的产生规则生成个体;因为每个作业的类型和数据量是固定的,因而染色体中所对应的编码取值是确定的,其它各位的编码则为随机生成的0或1;如果此个体不符合应用背景,如内存为0,或者cpu核数为0,则进行舍弃;
[0027]
2.3)使用基于lstm的时间预测模型作为遗传算法的适应度函数;
[0028]
2.4)选择操作是根据适应度函数选择出性能优秀的个体进入下一步的迭代。本文中选择的是轮盘赌选择策略,这是最基本的选择策略之一,种群中的个体被选中的概率与个体相应的适应度函数的值成正比;将种群中所有个体的适应度值进行累加然后归一化,对随机数落在的区域对应的个体进行选取本文中即找出能够使得批作业执行时间较短的资源分配方案;
[0029]
2.5)交叉操作按照一定的概率随机选择两个父代个体的部分结构加以替换重组而生成新个体,是获得优良新个体的重要方法。本文的交叉操作是在保持每一个作业的数据和类型不变的前提下,对染色体的其余部分进行随机交换,交叉是遗传算法中产生新个体的主要方法,所以交叉概率一般取值是比较大的;但是一旦取值过大,也会破坏种群中的良好状态,对进化产生不利的影响;若取值过小的话,会导致产生新个体的速度太慢,本发明中选取了合适的交叉概率使用;
[0030]
2.6)变异是以很小的变异概率随机地改变种群中个体的某些基因的值。根据资源分配的特点,本文中的变异操作规定对染色体中对作业的数据和类型两部分内容以外的编码进行随机变异,对于变异概率:若变异概率取值较大的话,虽然可以产生比较多的新个体,但也可能导致破坏一些好的个体,使得遗传算法的性能接近随机搜索算法的性能;若变异概率取值太小的话,会使得变异;
[0031]
2.7)对步骤2.4)、2.5)和2.6)进行迭代,在迭代一定次数后得到各作业的最优资源分配方案。
[0032]
进一步,步骤3)具体包括:
[0033]
3.1)在真实分布式集群中运行不同作业类型,作业数据量大小,对应不同节点数,内存大小,cpu核数得出作业的运行时间,得到一定的数据量之后构建基于lstm的时间预测模型;;
[0034]
3.2)使用步骤2)中的遗传算法为批作业中的每个作业找到适合的资源分配方案;
[0035]
3.3)在spark集群中为每个作业分配指定的资源分配方案,进行作业的执行。
[0036]
进一步,步骤1)所述的lstm网络的输入为作业的信息,包括作业类型和数据量、需要的内存、cpu核数,以及节点数。
[0037]
本发明主要包括两部分,即基于lstm的时间预测方法和基于遗传算法的资源分配方法。对于时间预测模型,首先基于作业的历史运行数据对lstm时间预测模型进行训练,找到最合适的超参数。时间预测方法能够根据作业的特性和其使用的资源量预测出作业运行时间。基于遗传算法的资源分配方法中,将作业运行时间作为遗传算法的适应度函数。染色体表示作业的信息,即作业类型和数据量、需要的内存、cpu核数,以及节点数,采用二进制编码进行染色体的编码。将需要处理的批作业信息提交后,本发明能够给出各作业的优化资源分配方案,从而达到批作业运行时间最短的优化目标。
[0038]
本发明的优点是:考虑节点间数据传输的消耗,尽可能使用少的节点完成作业;同时针对不同作业的特点,找到作业最合适的资源量分配方案,得到最优执行时间。
附图说明
[0039]
图1是本发明流程图。
[0040]
图2是本发明的时间预测模型。
[0041]
图3时间预测模型学习率为0.1时的均方差。
[0042]
图4时间预测模型学习率为0.01时的均方差。
[0043]
图5时间预测模型不同迭代次数的均方差。
[0044]
图6是本发明的遗传算法。
[0045]
图7是本发明的遗传算法编码方式。
具体实施方式
[0046]
下面结合附图进一步说明本发明。
[0047]
本实施例提出一种针对1g的wordcount作业的基于lstm和遗传算法的分布式系统资源优化分配方法,包括以下步骤:
[0048]
1)使用真实集群对不同类型不同数据量大小的任务进行运算,得到相应任务的执
行时间。建立基于lstm网络的时间预测模型,把历史数据放入到模型当中进行训练,同时对lstm网络参数进行优化,得到适合此历史数据的时间预测模型;
[0049]
2)设计基于集群资源分配的遗传算法,通过对作业编码,种群初始化,把适应度函数用时间预测模型来代替,再经过选择,交叉,变异,通过遗传算法的迭代优化对其进行合理资源量的分配,来得到批作业的最短处理时间。
[0050]
3)对spark默认的调度方法进行修改。在用户提交作业后,使用遗传算法来对任务作业使用的资源量进行分配,让每个作业得到合适的集群资源分配,使得作业执行时间变短。
[0051]
步骤1)提出了基于lstm循环神经网络的用户作业时间预测模型,具体包括:
[0052]
1.1)在集群运行过程中,对用户作业的运行时间影响因素进行分析,最终确定了五个用户作业执行时间的影响因子:作业类型、作业的数据量、作业使用的cpu核数、作业使用的内存大小和作业使用的节点数。
[0053]
1.2)在真实分布式集群中运行不同的作业(描述作业的参数为作业类型、数据量、作业使用的cpu核数、内存大小和节点数),收集作业运行时间,作为时间预测模型的训练和测试数据。
[0054]
1.3)如图2模型的输入x1,x2,x3,x4,x5分别是作业类型、作业数据量、作业使用的cpu核数、作业使用的内存大小和作业使用的节点数量。y是模型的输出。
[0055]
此模型所采用的损失函数为均方差(mean square error,mse),计算方法如下:
[0056][0057]
其中,yi表示作业的真实运行时间,表示作业的预测执行时间,m是作业样本数量。
[0058]
1.4)进行模型超参数选择。在模型建立的过程中,超参数的选取对模型的预测结果好坏起到了非常至关重要的影响。所有在确定最后的训练模型时,需要进行实验的对比来确定模型。本专利对超参数的选择也提出了方法。对于学习率和迭代次数,本专利采用分步实验的方法。首先,针对经典的学习率取值进行实验,用迭代过程中对应的损失值来确定最佳学习率的量级。随后,调整此量级中学习率的数值,进一步进行试验,如图3,4,最终得到最佳的学习率0.02。通过图5确定网络迭代次数为300次。对于网络层数来说,增加网络层数会提高模型的测试精度,但对于lstm来说,一味地增加网络层数会导致模型过于复杂,因此通过测试选择最合适的模型层数为2层。对于隐藏层数和dropout率来说,神经网络中的隐藏层能够帮助网络模型学习数据之间隐藏的关联。隐藏层节点个数过少,会导致模型无法充分发掘各个参数之间的隐性关系,导致预测效果差;若隐藏层节点过多,则容易发生过拟合现象,同时使得网络变得过于复杂,增加训练网络的时间。给出了确定隐藏层节点个数的经验公式:
[0059][0060]
其中nh,ni,no分别代表是神经网络的隐含层节点数、输入层节点数和输出层的节点数。确定隐藏层节点个数的优化搜索算法包括下面几步:
[0061]
(a)确定隐含层节点数的初始取值区间。由公式(2)可知,初始取值区间为[a,b]。
本文中ni=5,no=1因此计算得到a=3,b=16。因此隐含层节点数的初始取值区间为[3,16]。
[0062]
(b)取值区间缩小。通过黄金分割比例公式计算第一个试验点x1=0.618
×
(b-a) a=0.618
×
13 3=11和第二个试验点x2=0.382
×
(b-a) a=0.382
×
13 3=8。通过实验得到,隐藏层节点数为11对应的网络损失误差小于隐藏层为8的对应值,所以将区间缩小为[8,16]。
[0063]
(c)取值区间拓展。使用黄金分割法计算拓展值c,使得16=0.618*(c-a) a,则c=24。因此拓展区间为[16,24]。
[0064]
(d)确定最优隐藏层节点数。结合(b)(c)的结果,确定隐藏层节点的取值区间为[8,24]。在此取值区间进行实验,得到各节点数所对应的mse、mae和mape,如表1所示。可以看到,当隐藏层节点数为24时,网络性能最佳,因此隐藏层节点数取为24。
[0065]
设置dropout率是为了有效降低过拟合现象的发生概率,起到正则化的作用。本发明针对选择了合适的dropout率。通过对比实验确定dropout取值为0.1。
[0066]
步骤2)采用了遗传算法对不同用户作业进行任务资源量分配,具体包括:
[0067]
2.1)进行染色体编码设计。如图7染色体用以描述集群需要处理的用户作业信息,采用二进制编码。染色体中,每个作业占据相同的位数,分别表示作业类型、作业的数据量、作业使用的cpu核数、内存大小和节点数。
[0068]
2.2)根据需要处理的批作业生成初始种群。按照染色体的产生规则生成个体。因为每个作业的类型和数据量是固定的,因而染色体中所对应的编码取值是确定的,其它各位的编码则为随机生成的0或1。如果此个体不符合应用背景,如内存为0,或者cpu核数为0,则进行舍弃。
[0069]
2.3)使用基于lstm的时间预测模型作为遗传算法的适应度函数。
[0070]
2.4)选择操作是根据适应度函数选择出性能优秀的个体进入下一步的迭代。本文中选择的是轮盘赌选择策略,这是最基本的选择策略之一,种群中的个体被选中的概率与个体相应的适应度函数的值成正比。将种群中所有个体的适应度值进行累加然后归一化,对随机数落在的区域对应的个体进行选取本文中即找出能够使得批作业执行时间较短的资源分配方案;
[0071]
2.5)交叉操作按照一定的概率随机选择两个父代个体的部分结构加以替换重组而生成新个体,是获得优良新个体的重要方法。本文的交叉操作是在保持每一个作业的数据和类型不变的前提下,对染色体的其余部分进行随机交换,交叉是遗传算法中产生新个体的主要方法,所以交叉概率一般取值是比较大的。但是一旦取值过大,也会破坏种群中的良好状态,对进化产生不利的影响;若取值过小的话,会导致产生新个体的速度太慢,本发明中选取了合适的交叉概率使用;
[0072]
2.6)变异是以很小的变异概率随机地改变种群中个体的某些基因的值。根据资源分配的特点,本文中的变异操作规定对染色体中对作业的数据和类型两部分内容以外的编码进行随机变异,对于变异概率:若变异概率取值较大的话,虽然可以产生比较多的新个体,但也可能导致破坏一些好的个体,使得遗传算法的性能接近随机搜索算法的性能;若变异概率取值太小的话,会使得变异;
[0073]
2.7)对步骤2.4)、2.5)和2.6)进行迭代,在迭代一定次数后得到各作业的最优资
源分配方案。
[0074]
步骤3)通过spark大数据分布式框架来验证算法系统的有效性,具体包括:
[0075]
3.1)在真实集群中搭建5个节点分别是在master拥有2个cpu内核,5g内存,80g磁盘;slave1拥有2个cpu内核,5g内存,40g磁盘,拥有2个cpu内核,5g内存,80g磁盘;slave3拥有1个cpu内核,5g内存,40g磁盘;slave4拥有1个cpu内核,5g内存,40g磁盘;真实分布式集群中运行基于bigdatabench生成作业不同数据量的wordcount和sort,然后进行实验针对不同节点数,内存大小,cpu核数得出作业的运行时间,得到一定的数据量之后基于步骤1)构建相应的时间预测模型。
[0076]
3.2)将时间预测模型当作步骤2)的遗传算法中的适应度函数,通过遗传算法的迭代得出每个作业适合的作业资源量。
[0077]
3.3)当集群收到作业提交时,先把作业类型和作业数据量提交到遗传算法中运行,结合集群资源量得出最优的资源分配策略,再向spark集群提交相应的作业资源量,如针对1g的wordcount作业,通过本发明的方法可以得出分配master节点的1个cpu内核和3g内存,slave1节点的1个cpu内核和3g内存,slave2节点的1个cpu内核和3g内存,同时运行时间减少了9.89%。
[0078]
本说明书实施例所述的内容仅仅是对发明构思的实现形式的列举,本发明的保护范围不应当被视为仅限于实施例所陈述的具体形式,本发明的保护范围也及于本领域技术人员根据本发明构思所能够想到的等同技术手段。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献