陈冬林,林文健,黄莉莉
(武汉理工大学 湖北省电子商务大数据工程技术中心,湖北 武汉 430070)
云计算对于计算资源的公共化和开放化具有重要意义,但偏低的利用率一直是云计算资源管理方面的难题。研究显示,目前,各类云计算资源利用率不足50%,大量计算资源处于闲置状态[1]。而维持较多云计算资源的正常运转一方面需要消耗大量电力资源,另一方面基础设施的管理和维护也会产生较高的人力资源成本。云计算资源偏低的利用率已然造成了社会资源的巨大浪费。
提升云计算资源利用率的有效方法是对资源的负荷量进行精准预测,通过解析云计算资源使用状况的历史数据,探寻负荷量变化的内在规律,预测未来一段时间内云计算资源的负荷量。云服务供应商可以根据预测结果动态调整资源配置,为用户提供不同服务等级(Service-Level Agreement,SLA)的云计算资源,降低自身电力资源和人力资源成本。
鉴于云计算资源利用率偏低的现状及其负荷预测能够带来巨大收益,云计算资源负荷的准确预测问题已经引起学术工作者和云计算行业的广泛关注[2]。近年来,国内外学者对如何有效提高云计算资源负荷预测的精度和稳定性进行了探索和研究,研究方法主要分为序列分析类和机器学习类。云计算负荷预测的序列分析方法有:自回归模型[3]、Holt-Winters模型[4]、经验模态分解(EMD)[5]等。随着对云计算资源负荷预测要求的不断提高,序列分析类方法在预测精度和复杂环境下的预测稳定性问题逐渐凸显。机器学习的兴起使云计算资源的负荷预测进入新的领域,采取的主要方法有神经网络模型、支持向量机方法、粒子群优化算法等。Kumar等[6-7]基于BP神经网络对云数据中心的工作负载进行预测;Nhuan等[8-9]基于长短期记忆神经网络构建云数据中心工作量预测模型,对历史负荷数据的时间序列进行分析,实现预测的高精确度;孟煜等[10]提出一种云服务用户并发量区间预测模型,利用梯度下降粒子群优化的支持向量机作为主要预测方法。
现有云计算资源负荷预测的研究中,缺乏对时序因素的考虑,未能基于当前的时间节点对云计算资源负荷进行考量,难以把握云计算资源负荷的动态时序特征。基于上述分析,笔者提出一种引入时序因素的BP神经网络与长短期记忆网络相结合的BPNN-LSTM组合模型,对云计算资源负荷进行预测,以期在不同时间维度上获得更好的预测精度。
本文以BP神经网络(Back Propagation Neural Network,BPNN)和长短期记忆网络(Long Short Term Memory networks,LSTM)为理论基础,对不同时间维度的云计算资源负荷进行预测。
BP神经网络[11]是一种信号正向传递、误差逆向传播的多层前馈神经网络,广泛应用于函数逼近、模式识别等领域。BP神经网络的拓扑结构包括输入层、隐含层和输出层,每层均由神经元联结组成。BP神经网络的正向计算过程中,信息由输入层输入,经各隐含层的处理和计算,由输出层输出处理结果。误差的逆向传播中,计算输出层处理结果的误差,反向传播误差信号,采用梯度下降的方式修正各神经元间联结的权值,实现网络优化。
LSTM网络[12]是一类可以处理数据长期依赖问题的特殊神经网络,克服了BP神经网络求解过程中的梯度消失或梯度爆炸问题。LSTM的隐含层不再是普通的神经元,而是用于增加或删除细胞状态(cell state)中信息的三重门结构,其网络结构如图1所示。
LSTM的前向计算过程中,每一个记忆细胞(cell)的运算均由输入门(input gate)、遗忘门(forget gate)、输出门(output gate)控制,每个门依据激活函数的判断逻辑决定是否将运算结果向下传递。当前状态下,输入门it控制输入数据xt新生成的信息是否可以加入到当前细胞状态ct;遗忘门ft控制上一时刻细胞状态ct-1的信息是否可以加入到当前细胞状态;输出门οt基于输入门和遗忘门更新后的细胞状态,输出隐藏状态ht。LSTM误差的反向误差传播程与BP神经网络类似,通过计算误差,按照时间和网络层级两个方向反向传播误差信号,更新权值梯度,优化联结权值。
针对引言中提出的问题,提出引入时序因素的BPNN-LSTM组合预测模型,具体框架如图2所示。首先,基于云计算负荷历史数据匹配相应的时序数据,经过对数据的清洗和数据归一化处理,得到增强数据集,作为组合模型的输入数据;再拆分输入数据,形成BPNN模型的训练数据和测试数据,确定BPNN网络结构和权值、阈值参数,训练网络,对测试数据进行预测,计算预测误差;然后,基于BPNN误差,再次匹配时序数据,并进行归一化处理,作为LSTM网络的输入数据,确定LSTM网络结构和权值、阈值参数,进行训练和预测,得到BPNN残差预测值;最后,加总BPNN预测结果和LSTM残差预测结果,得到最终的云计算资源负荷预测值。
以xi(i∈(1,n+k))表示第i个时间节点的云计算资源负荷历史数据,以x1,x2,…,xn构建第1个时间节点到第n个时间节点的历史数据,以x2,x3,…,xn+1构建第2个时间节点到第n+1个时间节点的历史数据,依此类推,构建云计算资源负荷历史数据矩阵
(1)
基于企业用户云服务需求的时序特征,引入时序因素的日期属性Di(单位:d,i∈(1,n+k))和时间属性Ti(单位:h,i∈(1,n+k)),匹配云计算资源负荷历史数据矩阵,构建数据集X和待预测数据集Y。
(2)
经数据清洗和归一化处理后,得到增强数据集(X,Y),作为组合模型的输入数据。
拆分输入数据(X,Y)为训练数据集(Xtrain,Ytrain)和测试数据集(Xtest,Ytest),构建输入层、第一层隐含层、第二层隐含层、输出层的四层网络结构,采用随机函数生成的方式初始化权值和阈值参数。选取sigmoid函数为BPNN神经网络的激活函数,函数表达式为
(3)
对训练数据集进行正向预测,设置比对预测结果Ypredict和实际负荷数据Ytest的损失函数为均方误差平方根函数
(4)
依据梯度下降规则调整权值,将输出层的反传误差信号经第二层隐含层、第一层隐含层传递计算,最终传至输出层。通过误差的反向传播,修正各个节点之间的连接权值,实现网络优化。
网络训练完成后,代入测试数据集Xtest,计算BPNN预测结果YBP与实际负荷数据Ytest的残差E,并将其传向LSTM网络。
基于BPNN预测残差E,再次匹配时序数据Di和Ti, 经归一化处理,作为LSTM网络的输入数据。输入数据经输入门、遗忘门、输出门的运算,生成当前细胞状态保留信息ot和隐藏状态的输出ht,并将输出数据向下一时刻传递,最终得到残差预测结果E′。
最终预测结果YBP_LSTM为BPNN预测结果和LSTM残差预测结果之和,即
YBP_LSTM=YBP+E′
(5)
采用平均绝对百分比误差(Mean Absolute Percentage Error,MAPE)评价模型预测结果,函数表达式为
(6)
本文使用的数据是Wikipedia网站2012年1月1日至2015年12月31日每日24小时的云计算资源负荷数据[13](并发量数据),图3(a)和图3(b)描述了该网站云计算资源负荷的周数据和日数据。
如图3所示,云计算资源负荷量在月度上有较为明显的变化规律,周与周之间的变化规律基本一致。在一周的时间维度上,可以看出工作日的负荷量明显高于周末的负荷量,初步判断,日期属性在一定程度上会影响云计算资源负荷。在日变化曲线上可以看出,负荷量高峰出现在每日的约18:00—22:00,低谷期则出现在每日的约0:00—7:00,判断时间属性与云计算资源负荷有较强的相关性。
经测算,云计算资源负荷量与日期因素、时间因素的Pearson相关性检验均在0.01的水平上显著相关。其中,日期因素的Pearson相关系数为0.485,与云计算资源负荷量中等强度相关;时间因素的Pearson相关系数为0.715,与云计算资源负荷量强相关。结合曲线变化趋势分析和Pearson相关性检验结果可知,用户对云计算资源的需求与时序因素相关性较大。
基于2015年1月1日至11月1日的7 319条云计算负荷数据,匹配时序数据,经数据清洗和归一化处理,作为模型的训练集;基于2015年月11月2日至11月3日的48条云计算负荷数据,匹配时序数据,经数据清洗和归一化处理,作为模型的测试集。设置BPNN为4层网络结构,包含两层隐含层,设置输入层24个神经元,输出层1个神经元。因隐含层神经元个数对实验结果有较大影响,为提高预测精度,基于文献[2]的方法,对BPNN第一层隐含层和第二层隐含层的节点数进行实验,实验结果如图4所示。由实验结果可选择使得预测误差最小的神经元个数方案,最终确定BPNN第一层隐含层神经元个数为13个,第二层隐含层神经元个数为8个。
综合考虑预测精度和预测时间,设置BPNN训练步长为25 000,学习率为0.095;设置LSTM训练规模batch_size为40,迭代次数为1 000。BPNN-LSTM组合模型的预测结果如图5(a)所示。由图5可知,所提出的组合模型具有良好的预测效果,在48小时的时间维度上较好地拟合了云计算资源负荷,与真实的负荷变化趋势基本一致。BPNN-LSTM组合模型预测的平均误差率为3.524%,误差曲线如图5(b)所示。虽然有部分点的误差率超过10%,但大部分误差基本控制在-5%~5%之间,拟合效果较好。
为检验所提出的模型在不同时间维度上预测效果的稳定性,分别对未来24 h、48 h、168 h、720 h的云计算资源负荷进行预测,预测结果如图6所示。模型在预测时间维度为24 h、48 h、168 h和720 h上预测误差分别为4.228%、3.524%、4.735%和3.978%,总体预测精度较高,且具有较好的稳定性。
为综合考察所提出的BPNN-LSTM预测模型和其他预测模型的预测精度及在不同时间维度上预测效果的稳定性,基于相同数据集,采用本文所提出的引入时序因素的BPNN-LSTM模型、普通的BPNN-LSTM模型、GA-BP模型、BPNN模型、LSTM模型对未来24 h、48 h、168 h、336 h和720 h的云计算资源负荷进行预测。表1记录了不同模型在不同时间维度上的误差率数据。
表1 各模型不同时间维度上预测的误差率 %
实验结果显示:(1)引入时序因素的BPNN-LSTM模型在预测误差上明显低于其他模型,且在不同时间维度上预测误差也均维持在4.8%以下,预测效果较为稳定;(2)BP-LSTM模型和GA-BP模型总体预测误差在6%~9%之间,预测效果一般且不稳定;(3)BPNN模型和LSTM模型总体误差为8%~12%,预测效果较差。
图7更加直观地反映了各个模型的预测效果。GA-BP模型和普通的BP-LSTM模型仅从模型角度优化,未能考虑云服务需求受时序因素的影响,难以准确把握云计算资源负荷特征,因而在预测精度和预测稳定性上存在劣势。单一的BPNN模型和LSTM模型不具备对预测结果的二次优化,且未能充分考虑对云计算资源负荷具有重要影响的时序因素,因而预测效果较差。
综合上述分析,笔者提出的引入时序因素的BP-LSTM组合预测模型在不同时间维度下的预测精度更高且更具稳定性。
针对当前云计算资源负荷预测精度低、难以准确把握历史数据时序特征的问题,提出了一种基于BPNN-LSTM的云计算资源负荷组合预测模型,引入时序数据构建增强数据集,采用LSTM网络对BPNN网络的预测残差进行修正。采用Wikipedia网站的云计算资源负荷数据进行数值实验,对不同时间维度下的负荷量进行预测。实验结果表明,笔者提出的基于BPNN-LSTM的云计算资源负荷组合预测方法行之有效,能够对不同时间维度下的云计算资源负荷进行精准预测。
后续研究工作主要聚焦于将所提出模型与不同类型的云计算实例相结合,在不同时间维度下对多实例的云计算资源负荷进行预测,以提高该方法的普适性。