1.基于LSTM和遗传算法的分布式系统资源优化分配方法,其特征在于,包括以下步骤:
1)进行基于LSTM网络的作业执行时间预测模型的训练;LSTM网络的输入为作业的信息,其中,作业的信息包括作业类型和数据量、需要的内存、CPU核数,以及节点数,输出信息为作业的运行时间;
2)使用遗传算法为批作业中每个作业分配合理的资源量;把遗传算法的适应度函数改为基于LSTM的时间预测模型,通过遗传算法的选择,交叉,变异,迭代出适合每个作业的资源量大小;
3)使用基于遗传算法的资源分配算法针对不同作业给予不同的资源量;当Spark分布式计算框架收到作业时,将根据不同的作业能使用的集群资源量进行计算,以得到作业最短的处理时间;
步骤1)具体包括:
1.1)在集群运行过程中,对用户作业的运行时间影响因素进行分析,最终确定了五个用户作业执行时间的影响因子:作业类型、作业的数据量、作业使用的CPU核数、作业使用的内存大小和作业使用的节点数;
1.2)在真实分布式集群中运行不同的作业,描述作业的参数为作业类型、数据量、作业使用的CPU核数、内存大小和节点数,收集作业运行时间,作为时间预测模型的训练和测试数据;
1.3)基于LSTM的时间预测模型的输入分别是作业类型、作业数据量、作业使用的CPU核数、内存大小和节点数,模型输出为作业的运行时间;
模型所采用的损失函数为均方差(Mean Square Error,MSE),计算方法如下:其中,yi表示作业的真实运行时间, 表示作业的预测执行时间,m是作业样本数量;
1.4)进行模型超参数的选择;对于学习率的取值,采用分步实验的方法;首先,针对经典的学习率取值进行实验,用迭代过程中对应的损失值来确定最佳学习率的量级;随后,调整此量级中学习率的数值,进一步进行试验,最终得到最佳的学习率;对于迭代次数,使用不同的迭代次数进行实验,取对应的损失值最小的数据作为最优迭代次数;选取不同的网络层数进行模型运行,取对应的损失值最小的数据作为最优网络层数;选取不同的Dropout率进行模型运行,取对应的损失值最小的数据作为最优Dropout率;
隐藏层节点个数使用下面的经验公式和实验确定;
其中nh,ni,no分别代表是神经网络的隐含层节点数、输入层节点数和输出层的节点数;
确定隐藏层节点个数的优化搜索算法包括下面几步:
(a)确定隐含层节点数的初始取值区间;
(b)取值区间缩小;
(c)取值区间拓展;
(d)确定最优隐藏层节点数。
2.根据权利要求1所述的基于LSTM和遗传算法的分布式系统资源优化分配方法,特征在于:步骤2)具体包括:
2.1)进行染色体编码设计;染色体用以描述集群需要处理的用户作业信息,采用二进制编码;染色体中,每个作业占据相同的位数,分别表示作业类型、作业的数据量、作业使用的CPU核数、内存大小和节点数;
2.2)根据需要处理的批作业生成初始种群;按照染色体的产生规则生成个体;因为每个作业的类型和数据量是固定的,因而染色体中所对应的编码取值是确定的,其它各位的编码则为随机生成的0或1;如果此个体不符合应用背景,当内存为0,或者CPU核数为0,则进行舍弃;
2.3)使用基于LSTM的时间预测模型作为遗传算法的适应度函数;
2.4)选择操作是根据适应度函数选择出性能优秀的个体进入下一步的迭代;选择轮盘赌选择策略,这是最基本的选择策略之一,种群中的个体被选中的概率与个体相应的适应度函数的值成正比;将种群中所有个体的适应度值进行累加然后归一化,对随机数落在的区域对应的个体进行选取,即找出能够使得批作业执行时间较短的资源分配方案;
2.5)交叉操作按照一定的概率随机选择两个父代个体的部分结构加以替换重组而生成新个体,交叉操作是在保持每一个作业的数据和类型不变的前提下,对染色体的其余部分进行随机交换;
2.6)根据资源分配的特点,变异操作规定对染色体中对作业的数据和类型两部分内容以外的编码进行随机变异;
2.7)对步骤2.4)、2.5)和2.6)进行迭代,在迭代一定次数后得到各作业的最优资源分配方案。
3.根据权利要求1所述的基于LSTM和遗传算法的分布式系统资源优化分配方法,特征在于:步骤3)具体包括:
3.1)在真实分布式集群中运行不同作业类型,作业数据量大小,对应不同节点数,内存大小,CPU核数得出作业的运行时间,得到一定的数据量之后构建基于LSTM的时间预测模型;
3.2)使用步骤2)中的遗传算法为批作业中的每个作业找到适合的资源分配方案;
3.3)在Spark集群中为每个作业分配指定的资源分配方案,进行作业的执行。