首页> 中国专利> 一种支持不规则时间间隔的虚拟机工作负载预测方法

一种支持不规则时间间隔的虚拟机工作负载预测方法

摘要

本发明公开了一种支持不规则时间间隔的虚拟机工作负载预测方法。对虚拟机工作负载历史数据进行预处理;构建支持不规则时间间隔数据处理的N‑LSTM模型,将预处理得到的数据输入到N‑LSTM模型中对N‑LSTM模型进行训练;得到训练好的N‑LSTM模型;对虚拟机工作负载待测数据进行预处理,将预处理得到的待测数据输入到已经训练好的N‑LSTM模型中,N‑LSTM模型输出虚拟机工作负载预测结果。本发明实现了准确使用历史数据中的时间间隔信息,设计了一个能将不规则的时间间隔与请求记录有效结合进行学习的深度学习模型,以得到最优的预测结果。

著录项

  • 公开/公告号CN109542585A

    专利类型发明专利

  • 公开/公告日2019-03-29

    原文格式PDF

  • 申请/专利权人 山东大学;

    申请/专利号CN201811354400.7

  • 申请日2018-11-14

  • 分类号

  • 代理机构济南圣达知识产权代理有限公司;

  • 代理人黄海丽

  • 地址 250101 山东省济南市高新区舜华路1500号

  • 入库时间 2024-02-19 08:51:16

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-08-12

    专利权的转移 IPC(主分类):G06F 9/455 专利号:ZL2018113544007 登记生效日:20220729 变更事项:专利权人 变更前权利人:山东大学 变更后权利人:山东鲲鹏机电科技有限公司 变更事项:地址 变更前权利人:250101 山东省济南市高新区舜华路1500号 变更后权利人:250116 山东省济南市槐荫区绿地国际花都A1地块1-2-106

    专利申请权、专利权的转移

  • 2020-06-16

    授权

    授权

  • 2019-04-23

    实质审查的生效 IPC(主分类):G06F9/455 申请日:20181114

    实质审查的生效

  • 2019-03-29

    公开

    公开

说明书

技术领域

本公开涉及云计算负载预测领域,特别是涉及一种支持不规则时间间隔的虚拟机工作负载预测方法。

背景技术

云计算通过虚拟化技术,使得应用程序可直接在虚拟机上运行,每台物理机上又可同时容纳多个虚拟机。应用程序能以独立的方式共享物理机上的资源,而在大多数情况下,虚拟机的负载几乎不影响共存的虚拟机的性能。虚拟化技术有效地增加了物理机的利用率。数据中心可以提供灵活的资源配置,以适应工作量需求。

虚拟机工作负载预测问题是云计算服务中的一个重要问题。由于物理服务器的增加需要一定时间,在物理服务器使用率达到一定阈值时,能够提前预测需增加的物理服务器数量,从而为物理服务器的部署提供时间窗口,对于云服务提供商为用户提供具有高质量的服务具有重要意义。

针对上述问题,需要利用用户申请虚拟机的历史数据,来对未来用户对虚拟机的请求做出预测。业界已经有一些对工作负载进行预测的模型和方法,目前的研究主要使用递归神经网络(Recurrent Neural Network,简称RNN),通过深度学习预测未来用户对虚拟机的请求。

目前存在的问题是:现有模型可能存在梯度消失或不能处理不规则时间间隔等。在云数据中心中,某一时间段内的虚拟机请求量即为这段时间的虚拟机负载。时间间隔是虚拟机工作负载中的一个重要属性。其对预测情况的影响主要体现在同规格虚拟机易出现同时刻进行多次请求的情况或按照某一固定的时间间隔连续请求的情况。

发明内容

为了解决现有技术的不足,本公开提供了一种支持不规则时间间隔的虚拟机工作负载预测方法,它首先将历史负载数据进行预处理,然后使用一个能够处理时间间隔的N-LSTM模型,(Long Short-Term Memory,长短期记忆网络,简称LSTM),结合虚拟机请求的时间间隔,以固定长度的时间段为单位对历史数据进行学习,对未来时间段内的虚拟机请求进行精准预测。

第一方面,本公开提供了一种支持不规则时间间隔的虚拟机工作负载预测方法;

一种支持不规则时间间隔的虚拟机工作负载预测方法,包括:

对虚拟机工作负载历史数据进行预处理;

构建支持不规则时间间隔数据处理的N-LSTM模型,将预处理得到的数据输入到N-LSTM模型中对N-LSTM模型进行训练;得到训练好的N-LSTM模型;

对虚拟机工作负载待测数据进行预处理,将预处理得到的待测数据输入到已经训练好的N-LSTM模型中,N-LSTM模型输出虚拟机工作负载预测结果。

在一些可能的实现方式中,对虚拟机工作负载历史数据进行预处理的具体步骤为:

虚拟机工作负载历史数据,包括若干条虚拟机工作负载数据,每一条虚拟机工作负载数据包括:虚拟机型号和虚拟机响应请求的时间;针对每个型号的虚拟机,计算每天该型号虚拟机的所有请求的平均时间间隔;得到关于每个型号虚拟机的连续T天内,每天的平均请求时间间隔序列;

数据缺失值处理:取缺失值数据所在日期的前T-1天内的平均请求时间间隔的均值作为缺失数据的取值;

数据异常值处理:计算前T-1天内平均请求时间间隔的均值,如果第T天的平均请求时间间隔的取值大于前T-1天内平均请求时间间隔的均值的两倍,则将第T天的平均请求时间间隔的取值视为异常值,将异常值替换为前T-1天内平均请求时间间隔的均值。

所述虚拟机工作负载历史数据的获取来源是:云数据中心的日志文件。

某一时间段内的虚拟机请求量即为这段时间的虚拟机工作负载,具体的,由于所有虚拟机请求均为针对单机型的单台虚拟机请求,虚拟机请求量既为请求虚拟机的数量,亦为虚拟机请求的次数。

在一些可能的实现方式中,构建支持不规则时间间隔数据处理的N-LSTM模型,

N-LSTM模型,包括:依次连接的组合层、LSTM层和预测层;

所述组合层,包括若干个组合单元;所述LSTM层,包括若干个依次串联的LSTM单元;

每个组合单元均与每个LSTM单元一一对应连接;每个组合单元都将自身的输出值送入对应的LSTM单元;依次串联的LSTM单元中,前一个LSTM单元的输出值作为下一个LSTM单元的输入值;最后一个LSTM单元的输出值送入预测层;预测层输出预测结果。

在一些可能的实现方式中,每个组合单元负责接收输入值,每个组合单元的输入值,包括:每个型号虚拟机连续T天内每天的平均请求时间间隔△t和每个型号虚拟机连续T天内每天的请求量X;每个组合单元负责将两个输入值合并后得到当前状态s;每个组合单元的输出值s送入对应的LSTM单元;每个LSTM单元接收对应组合单元的输出值s后,每个LSTM单元对组合单元的输出值s和前一个LSTM单元的隐藏状态进行处理;最后一个LSTM单元得到虚拟机工作负载历史数据的隐藏状态,将隐藏状态送入预测层,预测层输出预测结果。

在一些可能的实现方式中,每个型号虚拟机连续T天内每天的平均请求时间间隔△t:

△t={△t1,△t2,…,△tT};

其中,△ti={△ti1,△ti2,…,△tiN},△tin表示第i天第n种型号虚拟机的平均请求时间间隔。

在一些可能的实现方式中,每个型号虚拟机连续T天内每天的请求量X:

X={x1,x2,…,xT};

其中,xi={xi1,xi2,…xiN},xin表示第i天第n种型号虚拟机的请求量。

在一些可能的实现方式中,每个组合单元负责将两个输入值合并后得到当前状态s;s={s1,s2,…,sT};

通过两个权重矩阵Ws和Us将第i个单位时间的xi和△ti组合成一条信息:

si=[relu(Wsxi+bi);sigmoid(Us△ti+bt)]

其中Ws∈Rm×|N|、Us∈Rm×|N|、bi∈Rm和bt∈Rm均是待学习的参数。m是设定的状态表示向量。

在一些可能的实现方式中,每个LSTM单元对组合单元的输出值s和前一个LSTM单元的隐藏状态进行处理的具体步骤为:

首先是遗忘门:

如果为首个LSTM单元则工作记忆h0为零向量,则计算工作记忆h0与权重矩阵Uf的得到的第一乘积,计算当前输入si与权重矩阵Wf的第二乘积,然后将第一乘积、第二乘积和偏置bf进行求和,最后使用sigmoid激活函数对求和结果进行处理,得到一个属于[0,1]之间的输出值;

如果为非首个LSTM单元,则计算前一个LSTM单元的隐藏状态hi-1与权重矩阵Uf的得到的第三乘积,计算当前输入si与权重矩阵Wf的第四乘积,然后将第三乘积、第四乘积和偏置bf进行求和,最后使用sigmoid激活函数对求和结果进行处理,得到一个属于[0,1]之间的输出值;

遗忘门:fi=σ(Wfsi+Ufhi-1+bf);

其次,通过计算输入门ii来获得神经元记忆中待更新的信息;通过计算候选记忆C*来将历史记忆和当前信息进行合并;

输入门:ii=σ(Wisi+Uihi-1+bi);

候选记忆:C*=tanh(Wcsi+Uchi-1+bc);

再次,更新当前神经元记忆:把之前的神经元记忆Ci-1与遗忘门fi相乘,确定要遗忘的信息,将候选记忆C*与输入门ii相乘,确定要更新的信息;将要遗忘的信息和要更新的信息进行求和得到当前神经元记忆Ci

当前神经元记忆:Ci=fi*Ci-1+iiC*

最后,通过计算输出门oi确定有用信息,输出有用信息的隐藏状态hi

输出门:oi=σ(Wosi+Uohi-1+bo);

隐藏状态:hi=oi*tanh(Ci);

其中Wf,Uf,bf遗忘门的网络参数,Wi,Ui,bi是输入门的网络参数,Wo,Uo,bo是输出门的网络参数,所有网络参数均通过训练获得。

在一些可能的实现方式中,将LSTM层的最后一个LSTM单元的隐藏状态hT放入预测层进行最后的预测:

其中Wp∈Rm×|N|和bp∈R|N|是待训练的参数;是一个N维的向量,每一维的数值为对应虚拟机的预测工作负载。

在一些可能的实现方式中,将预处理得到的数据输入到N-LSTM模型中对N-LSTM模型进行训练的具体步骤为:

步骤a:组合层:将预处理后的虚拟机请求量X和平均请求时间间隔△t,将第i天的虚拟机请求量xi和平均请求时间间隔△ti作为对应第i个组合单元的输入,将经过合并操作之后得到合并信息si

步骤b:LSTM层:将合并信息si作为LSTM层的第i个LSTM单元的输入;由于LSTM层的LSTM单元是依次串联的,所以,首个LSTM单元的输入值仅仅包括合并信息s1,但是,非首个LSTM单元的输入值还包括前一个LSTM单元的输出值,最后一个LSTM单元输出包含所有历史信息的总状态hT

步骤c:预测层:将hT作为最终预测层的输入,经过预测层的运算得到预测值;

步骤d:通过有监督的训练调整模型:按照损失函数计算预测值与真实值之间的差别,使用Back Propagation算法调整模型每层的参数;参数调整后重复步骤a-步骤d,直到得到一组最优的参数,最优的参数对应的模型即为训练好的模型。

在一些可能的实现方式中,使用均方误差来计算预测值与真实值之间的差别,损失函数如下:

其中为每个训练用例的预测工作负载,yj为每个训练用例的真实工作负载。通过最小化损失函数loss的方法来训练模型的参数。

与现有技术相比,本公开的有益效果是:

本发明通过对云数据中心的日志文件进行分析处理,实现对有不规律时间间隔的时序数据需求的获取,改进负载处理方法,提高虚拟机工作负载方法的综合效率;

本发明在负载预测过程中,将虚拟服务器数量和时间间隔同时考虑进去,有区别性的进行虚拟机工作负载预测,为物理服务器的部署提供时间窗口,对于云服务提供商为用户提供具有高质量的弹性服务具有重要意义。

附图说明

构成本申请的一部分的说明书附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。

图1为本公开的N-LSTM模型架构图;

图2为本公开的LSTM单元结构图。

具体实施方式

应该指出,以下详细说明都是例示性的,旨在对本申请提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本申请所属技术领域的普通技术人员通常理解的相同含义。

需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本申请的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。

在云计算中,由于对外提供的虚拟机类型多、用户需求量大,要有效减少虚拟机的分配与部署工作所需时间,需要对未来虚拟机负载情况进行提前预测。针对该问题,本发明使用工作负载历史数据,提出一种支持不规则时间间隔的虚拟机工作负载预测方法。该方法主要包括一个对历史负载数据预处理的方法和一个基于LSTM的新型虚拟机请求预测模型N-LSTM。

一条虚拟机负载数据包括虚拟机型号、虚拟机响应请求的时间。需要说明的是,某一时间段内的虚拟机请求量即为这段时间的虚拟机负载。

具体的,一个历史负载数据预处理的方法,包括以下三个步骤:

a.对初始数据进行下述处理,获得适用于本模型的数据集:

定义N为虚拟机规格数;D为目标预测的单位时间长度;T表示目标预测的时间段长度;虚拟机的请求量X={x1,x2,…,xT},其中xi={xi1,xi2,…xiN},xin表示第i个单位时间第n种规格的虚拟机的请求量;平均请求间隔△t={△t1,△t2,…,△tT},其中△tj={△tj1,△tj2,…,△tjN},△tjn表示第j个单位时间第n种虚拟机的平均请求间隔。例如:以“天”为单位,对3种虚拟机进行未来7天的虚拟机工作负载情况进行预测(即N=3,D为“天”,T=7)。则请求量X={x1,x2,…x7},平均请求间隔△t={△t1,△t2,…△t7},其中xi={xi1,xi2,…,xi3},△ti={△ti1,△ti2,…,△ti3}。

b.数据缺失值处理:

由于不同时间段内的数据具有差异性,相同时间段内的数据具有连贯性,取缺失数据的前T-1个单位时间数据的均值作为缺失数据的取值。即数据缺失的第i个单位时间补充值为

c.数据异常值处理:

在未经预处理的数据中,存在某些时间段的负载量往往远大于其周围时间段的负载量的情况,此时的数据值即为异常值,需要对数据异常值进行处理,即降噪处理。本发明采用的降噪方法为:计算前T-1个单位时间内所有变量的均值,若存在某一变量的取值远大于均值的两倍,则将该变量的取值赋为均值。即,若

经以上三步处理的数据即可作为输入数据传入N-LSTM模型中。

具体的,基于LSTM的新型虚拟机请求预测模型N-LSTM架构图如图1所示。

N-LSTM模型将时间间隔信息并入标准LSTM架构,以便能够捕捉虚拟机请求提出的时间间隔对虚拟机负载量的影响,输入序列由不同规格虚拟机的请求量和不同规格虚拟机的平均请求间隔组成。

N-LSTM模型需要两个输入,即X和△t。这两部分信息经过组合层合并后得到当前状态s。合并后的信息中既包含了当前时间段之内的请求数目X的信息,又包含了请求发送的一部分时间信息△t。因此能更好的表示当前时间段内请求的整体状态。然后将s送入LSTM中进行处理,得到包含有历史信息的隐藏状态。使用隐藏状态作为预测层的输入进行预测。

N-LSTM模型共分为组合层、LSTM层和预测层,具体的:

组合层通过两个矩阵Wa和Wb将第i个单位时间的xi和△ti组合成一条信息,具体公式如下:

si=[relu(Wsxi+bi);sigmoid(Us△ti+bt)]

其中Ws∈Rm×|N|,Us∈Rm×|N|和bi∈Rm,bt∈Rm是需要学习的参数。m是人为设定的状态表示向量的大小。

接下来将得到的状态信息si送入到LSTM中进行处理,LSTM能够很好的处理具有时间顺序的数据。LSTM单元结构如图2。

首先是遗忘门,上一LSTM单元的工作记忆hi-1(如果为第一个LSTM单元则为零向量)与当前输入si分别乘以权重矩阵Uf和Wf,加上偏置bf,然后使用sigmoid(σ)激活函数,得到一个元素属于[0,1]之间的输出。

遗忘门:fi=σ(Wfsi+Ufhi-1+bf);

接下来要确定当前输入si中的哪些信息会输入到神经元记忆中。其中输入门ii决定我们将要更新的神经元记忆中的信息;候选记忆C*则是将历史记忆和当前信息合并。

输入门:ii=σ(Wisi+Uihi-1+bi);

候选记忆:C*=tanh(Wcsi+Uchi-1+bc);

然后就是更新当前神经元记忆。把之前的神经元记忆Ci-1与遗忘门fi相乘,遗忘掉需要遗忘的信息;将候选记忆C*与输入门ii相乘,确定要更新的信息。两者求和得到当前神经元记忆Ci

当前神经元记忆:Ci=fi*Ci-1+iiC*

最终我们确定LSTM单元要输出值,模型中只有最后一个LSTM单元具有输出,在其余LSTM单元中只作为隐藏状态发挥作用。通过计算输出门oi确定有用信息。

输出门:oi=σ(Wosi+Uohi-1+bo);

隐藏状态:hi=oi*tanh(Ci);

其中Wf,Uf,bf遗忘门的网络参数,Wi,Ui,bi是输入门的网络参数,Wo,Uo,bo是输出门的网络参数,所有网络参数均通过训练获得。

将LSTM层处理后的最后一个LSTM单元的隐藏状态hT放入预测层进行最后的预测:

其中Wp∈Rm×|N|和bp∈R|N|是待训练的参数;是一个N维的向量,每一维的数值为对应虚拟机的预测工作负载。

根据Hinton提出的训练方法,训练过程如下:

a.组合层。将处理后的请求量X和时间间隔△t作为组合层的输入,经过合并操作之后得到合并信息s。

b.LSTM层。将合并信息s作为LSTM层的输入。按时间顺序将每个单位时间的信息si输入不同LSTM单元中,最后一个单位时间的信息sT输入后可以得到包含所有历史信息的总状态hT

c.预测层。将hT作为最终预测层的输入,经过预测层的运算即可得到预测值。

d.通过有监督的训练调整模型。按照损失函数计算预测值与真实值之间的差别,使用BP算法调整模型每层的参数。

参数调整后重复这一过程直到得到一组最优的参数,并保留下来。

预测的过程就是对新的请求量X和时间间隔△t使用模型训练后的最优参数重复训练过程中的a、b、c步骤即可得到待预测时间段内的预测负载。

使用均方误差来计算预测值与真实值之间的差别,损失函数如下:

其中为每个训练用例的预测工作负载,yj为每个训练用例的真实工作负载。通过最小化损失函数loss的方法来训练模型的参数。

以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号