1、第 卷第 期计算机应用与软件 年 月 基于 的云资源预测研究史爱武罗良杰何凯(武汉纺织大学云计算与大数据研究中心湖北 武汉 )收稿日期:。湖北省自然科学基金青年项目()。史爱武,副教授,主研领域:云计算,大数据。罗良杰,硕士生。何凯,讲师。摘要云计算资源的负载预测有助于数据中心灵活智能地配置资源,保障数据中心安全平稳运行。该文提出一种基于经验模态分解和时间卷积网络的云资源组合预测模型,使用历史的资源负载预测未来的资源需求。对负载进行经验模态分解,以降低原云资源负载序列的复杂度,得到反映原负载序列趋势和变化信息的本征模态分量和残余分量;将这些分量构造后输入到时间卷积网络中进行建模预测。以 集群数
2、据集中的 负载序列为例,将该模型与常用的云资源预测模型进行对比验证。实验结果发现,相比于长短时记忆网络和时间卷积网络,该模型在平均绝对百分比误差指标上降低了 和 ,预测精度有了明显提升。关键词云计算云资源预测经验模态分解时间卷积网络中图分类号 文献标志码 :(,),()(),(),引言云计算作为一种新型计算模式,在过去十年得到了飞速的发展。它利用虚拟化技术,将包括计算资源、存储资源和网络资源在内的各种资源虚拟化,以按需使用、按量付费的方式为用户提供可扩展的弹性计算服务 。基于虚拟机的虚拟化技术或容器虚拟化技术虚拟出来并提供给用户使用的各种资源,统称为云资源。同时,云计算的发展还催生了众多的大规
3、模数据中心 。目前,数据中心的规模和复杂度仍处于动态增长中,各种形式的软硬件资源还在不断地被添加到云计算系统中。尽管这些数据中心的建立很好地满足了社会的计算需求,但也带来了一些问题和挑战。其中资源管理问题最为突出。譬如,云厂商必须遵守与用户签订的服务等级协议(,计算机应用与软件 年 ),保证提供给用户的服务满足要求。如果资源供应不足就会造成 违约、服务质量(,)降低,进而导致用户流失。而资源供给过剩,虽不会给用户造成影响,但会导致严重的资源浪费,间接造成经济损失。对于一个庞大且复杂的数据中心而言,要想实现灵活的资源配置和管理,保证一定程度上的供需平衡,必须要求数据中心能够预知云资源的变化情况,
4、即要建立一个精准的云资源预测模型。因此,云资源的预测成为了云计算研究领域的一个研究热点。国内外许多学者针对云资源的预测研究提出了多种预测方法。目前使用较广泛的云资源预测模型主要可分为两大类,一类是传统的时间序列预测方法,包括差分自回归滑动平均模型(,)、指 数 平 滑 法(,)等。文献 使用 对云环境下的应用负载进行了预测,取得了不错的预测效果,初步验证了传统的时间序列方法在云资源负载预测中的可行性。但是该文中只对 服务器的请求负载进行了预测分析,对于该方法在 负载、内存负载等一些系统关键指标上的适用性还有待验证。同时,传统的时间序列预测方法大多只能捕捉线性趋势,而云资源负载序列往往都是非线性
5、和非平稳的,导致此类方法的预测精度较低,难以满足大数据时代对预测精度的要求。另一类是机器学习算法。学者们早期主要使用支持向量机(,)、贝叶斯模型 和人工神经网络算法 。相比传统的方法,这些算法的预测精度更高,但是也更为复杂,并且需要大量的历史数据进行训练。后来随着循环神经网络(,)和长短时记忆(,)网络的出现,它们一跃成为当时最优的时间序列预测算法 。直到近两年,文献 研究发现,相比循环神经网络,时间卷积网络(,)在多个时间序列预测问题上表现得更好,因而许多学者开始使用 代替循环神经网络进行时序数据的建模研究。和 等模型相比传统模型虽有着更优的预测效果,但是随着研究的深入,一些研究者发现使用单
6、一模型很难较好地拟合非线性和非平稳的云资源负载序列。于是开始研究用单一模型进行搭配,试图设计出合理的组合预测模型。大量研究结果表明,相比单一模型,组合优化模型可以更好地拟合序列,显著提高预测精度 。除了从模型方面改进预测精度外,还有学者试图把信号分解方法应用于时序数据预测的研究中来改进预测精度。由于时间序列数据大多都具有高度的非线性非平稳等特点,现有方法建立的预测模型难以精准预测。学者们从降低时间序列数据本身的复杂性出发,提出了基于经验模态分解(,)和机器学习或深度学习模型的组合预测模型,并将其应用在多个时间序列预测领域,均取得了精度上的提升。如文献 将改进的 模型应用在了风速预测领域,结果表
7、明该模型在不同时间步长上的预测效果都要优于现有的方法。文献 为了提高电力预测的精度,分别比较了 、在电力预测中的效果,实验结果表明 取得了最好的效果。目前,同属时序数据预测研究的云资源预测领域有关 或 的研究还很少。因此,本文提出了基于经验模态分解和时间卷积网络()的云资源组合预测模型。经验模态分解经验模态分解,也被称为希尔伯特 黄变换,是 等 提出的一种高效且自适应的信号分解方法,特别适合于非线性和非平稳的时频数据分析。它克服了小波分析中基函数无法自适应性的缺点,使用起来更加灵活和简单。可将非线性和非平稳的时间序列分解为一组平均和为零的准周期信号,使信号变得平稳化,减少信号间特征信息的干扰。
8、这些信号被称作本征模态分量(,)和残余分量,可表示为:()()()()式中:()是数据的原始值,每个()表示第 个 分量,()是残差分量。下面简要说明 的分解过程:)根据信号 ()的局部极值求出其上、下包络线的均值。)将原数据序列减去平均包络线后,可得到一个去掉低频的新数据序列 ()。)判断 是否满足以下两个条件:()极值数与过零点的数目相等或最多相差一个;()在任意时刻,其上、下包络线的均值必须是零。若不满足条件,就将当作新的 (),重复以上步骤。最后得到的第一个满足条件的 即为第一个本征模态分量 ,记作 。)将 ()作为新的 (),重复步骤)步骤 ),即可依次得到本征模态分量 ,第 期史爱
9、武,等:基于 的云资源预测研究 ,直到满足给定的终止条件时 分解才停止。时间卷积网络时间卷积网络是融合了卷积神经网络研究中的一些优秀成果而提出的一种简单而高效的网络结构。它和 一样,能够接受任意长度的序列,并将其映射到相同长度的输出序列中,因而适合应用在有时间依赖的序列任务中。时间卷积网络的基本组成部分为因果卷积和空洞卷积。因果卷积因果卷积是保证时间卷积网络能用于序列建模任务的根本原因。其与普通一维卷积不同之处在于,它通过在输入序列前面补充长度为 的零值向量,来使输入与卷积计算输出在维度上保持一致,从而保证在时刻 的输出只与 和 之前的输入有关,即确保不会有未来的信息泄露到过去。空洞卷积普通的
10、因果卷积的接收域与网络层数线性相关,因此如果要提取距离较远的数据,就需要非常深的网络层次。为了解决因果卷积无法获得长期依赖的问题,中加入了空洞卷积,空洞卷积可以在不增加参数量的情况下,呈指数级的增大卷积的感受野。具体地,一个空洞因果卷积层如图 所示,公式表示如下:()()()()()式中:为扩张因子,为滤波器大小,表示过去的方向。多个这样的空洞因果卷积层堆叠起来就组成了 。通过调整不同的滤波器大小与网络层数,可以使感受野能覆盖输入序列中的所有值。为了防止增加网络深度而导致梯度弥散或梯度爆炸,中通过添加残差连接和正则化层来解决该问题,另外还加入了随机失活()来防止过拟合,的典型结构如图 所示。图
11、 卷积核大小为 的空洞因果卷积图 典型结构 基于 的云资源预测模型云资源负载序列大多数都具有非线性和非平稳的特点,导致直接进行预测的效果往往较差。而 特别适合处理这类数据,它可以把原负载序列按其内在特性自适应地分解为若干个不同频率且相对平稳的本征模态分量 和一个残余分量 ,分解后的每个分量相比原序列复杂度更低,使用模型对其拟合也更容易。学术界目前有不少使用 与机器学习或深度学习模型相结合的时序数据预测模型,常见的做法是为分解后得到的各个 和 分量分别拟合一个预测模型,最后再将各分量的预测结果合并得到最终的预测结果。尽管这种将信号分解后分别预测再整合的方式得到了较准确的预测结果,但是由于每有一个
12、分量就要训练一个模型对其拟合,因而时间复杂度较高,更适合对于建模时间要求不高的时间序列进行预测。而云资源负载预测对训练时长的要求相对较高,采用上述方式进行预测是不太适合的。本文针对云资源预测的特点,将此方法进行了改进。对于 分解得到的各个分量,不再单独分别进行拟合预测,而是把它们当作原时序数据提取出来的不同特征,经过处理后输入到一个 中进行建模预测,这样只需训练一个模型即可,在不丢失信息的同时大大减少了建模所需要的时间。具体步骤如下:计算机应用与软件 年()对原序列进行缺失值处理和归一化操作,再采用 将原序列分解为多个 和一个残差项 。()选定时间步长,并据此构造数据。首先将分解后得到的分量按
13、时间顺序排列,然后按照滑动窗口截取的方式,把序列构造成有监督学习的形式。其中输入数据的格式为(?,),其中:为时间步长,表示用多少个观测数据来预测下一个值,为原序列经 分解后得到的分量数。具体地,当滑动窗口的时间步长为 时,构造方式如图 所示。图 数据的构造方案()把构造完成后的训练集数据输入到 中训练模型,使用建立好的 得到最终预测结果。本文提出的 模型的流程见图 。图 基于 的云资源预测模型 实验分析 实验环境与数据集本文提出的模型预测分析在 环境下实现,采用深度学习框架 搭建神经网络模型。数据集为 (),中记录了一个包含 台机器的集群在 天运行中的一些重要数据,包括资源消耗、任务调度等。
14、利用率是工业界改善云计算数据中心的资源配置效率的一个关键指标 ,本文就以机器的 资源负载为例来验证 组合模型对云资源的预测性能。但本文方法并不局限于预测 资源,也可用于预测其他云资源指标。中 资源负载的采样时间间隔为 ,采用均值插补法对缺失值进行处理,每台机器每天有 条数据记录,天共包含 条数据记录。选取其中前 的数据作为训练集,后 作为测试集。此外,为了加快模型收敛速度,本文对数据进行了归一化处理。本文参照文献 将 中的机器按照最高 负载量分成了三类,第一类是低负载型,最高负载为 ,第二类是中等负载型,最高负载为 ,第三类是高负载型,最高负载为 。从三类机器中分别随机选出一台机器来详细分析模
15、型效果,其他机器的处理方式完全类似,只对其进行简要说明。评价指标本文采用均方误差(,)、均方根误差(,)和平均绝对百分比误差(,)三个指标来验证本文所建云计算资源预测模型的有效性。()()()槡()()式中:为第 个云资源负载的真实值,为预测值,表示样本数。参数设置和对比模型本实验中的参数通过经验和反复试验不同的参数组合后确定,采用选定的最优参数进行后续的对比实验。设置 层数为 层,隐层节点数为 ,激活函数为 ,模型学习率为 ,优化算法为 ,滑动窗口的时间步长为 ,设置为 。文献 研究发现,相比 在云资源预测中有着更高的预测精度。为了检验本文提出的云资源预测模型的性能,将本文模型与单一 模型和
16、单一 模型进行对比。实验结果与分析采用上述参数在不同负载类型机器的训练集上进行训练,分别建立 、和 的云资源预测模型,图 图 展示了不同类型机器采用三种模型在测试集上同一天中的预测结果。第 期史爱武,等:基于 的云资源预测研究 图 低负载型机器的预测结果图 中等负载型机器的预测结果图 高负载机器的预测结果可以看到,在 和 两种模型上的预测值和实际值表现出了平移现象,说明预测存在一定的滞后性,而 的预测效果要明显优于另外两者的预测效果。在 模型上的预测值与实际值间并未出现明显的平移现象,预测结果曲线与真实负载曲线之间更加贴合,说明使用 分解后得到的 分量和残差分量进行预测有效地提取出原 资源负载
17、序列的趋势和变化信息。为了更加客观地评估本模型的效果,通过多次实验取平均值,得到各模型在三种类型机器上的预测客观评价指标如表 表 所示。表 各类模型在低负载型上预测性能对比预测模型 表 各类模型在中等负载型上预测性能对比预测模型 表 各类模型在高负载型上预测性能对比预测模型 从表、表和表所展示出的结果可以更加清楚地发现,在三种不同负载类型的机器上,与 模型和 模型相比,本文提出的模型在 、三个指标上的值都有大幅减低,表示预测准确性有了明显提高。同时,为了进一步验证本模型的通用性,又随机选取了多台机器,分别测试了以上三个模型的预测效果。结果表明,、和 三种模型在 指标上的取值范围分别为 、和 ,
18、相比于 和 ,本文提出的模型在 指标上平均降低了 和 。以上结果证明了 模型具有更好的预测效果,其主要原因在于原始 资源负载序列具有高度的时变性、非线性和非平稳性,仅靠单一预测方法建立的预测模型很难达到较好的拟合效果,而本文的组合模型结合了“分而治之”的思想,通过使用 将原始的云资源序列分解为多个较为平稳的 后,再将各个 构造特征向量矩阵后输入到 进行拟合,各个 相比原序列在复杂度上都有所下降,因而最终拟合的效果相比单一预测方法更好。本文理论分析和实验结果都证明,相较于 和 ,有着更为强大的非线性时间序列拟合能力,能取得更准确的预测结果。结语实现云资源负载的精准预测,可以让数据中心在 计算机应
19、用与软件 年进行调度前,提前感知到机器的资源负载变化情况,从而能够更加灵活地配置资源,提高资源的利用率。本文在现有的云资源负载预测算法的基础上,提出了基于 的组合预测模型,并通过实验确定了最优的模型参数。实验结果表明,相较于 和 ,本模型用于云资源负载预测的精度有了明显提升。参考文献 ,():,:,:,():,:,:,():张荣,李伟平,莫同 深度学习研究综述 信息与控制,():,:,徐达宇,丁帅 改进 优化 的云计算资源负载短期预测研究 计算机工程与应用,():谢晓兰,张征征,王建伟,等 基于三次指数平滑法和时间卷积网络的云资源预测模型 通信学报,():,:,():,:,:,:,:,():,
20、:,:(上接第 页)张敏 基于文本挖掘的电商评论情感分析 产业与科技论坛,():王少鹏,彭岩,王洁 基于 的文本聚类在网络舆情分析中的应用研究 山东大学学报(理学版),():陈柯宇,何中市 基于情感词典的酒店评论情感分类研究 现代计算机(专业版),():李胜宇,高俊波,许莉莉 面向酒店评论的情感分析模型 计算机系统应用,():熊伟,郭扬杰 酒店顾客在线评论的文本挖掘 北京第二外国语学院学报,():吴维芳,高宝俊,杨海霞,等 评论文本对酒店满意度的影响:基于情感分析的方法 数据分析与知识发现,():高宝俊,孙含琳,王寒凝 在线评论对酒店订满率的影响研究 旅游学刊,():朱晓晴,胡玉龙,李荣飞,等 基于舆情分析的西安市五星级酒店服务质量评价研究 西安文理学院学报(社会科学版),():,刘胜杰,许亮 基于词嵌入技术的文本表示研究现状综述 现代计算机,():