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

基于LSTM的CPU资源负载情况预测方法与流程

2021-11-09 22:47:00 来源:中国专利 TAG:

基于lstm的cpu资源负载情况预测方法
技术领域
1.本发明涉及深度学习和cpu资源负载技术领域,具体涉及一种基于lstm的cpu资源负载情况预测方法。


背景技术:

2.服务器网络环境复杂,各类应用系统资源需求不同,有些服务会消耗大量的物理资源和虚拟资源,可能会造成cpu资源的激增,最终导致系统异常、宕机的状况。
3.现有的cpu资源异常告警方法存在如下问题:
4.(1)常见的资源告警依托于准实时告警,当资源占用率超过一定阈值时进行告警,系统管理员通常只能在收到告警之后进行故障排查与修复,此类告警滞后性高,被动性强。
5.(2)基于时间序列的分析方法,大多数采用基于时间序列的预测法自回归滑动平均模型(arma),该模型由自回归模型(ar模型)与滑动平均模型(ma模型)为基础混合构成,是研究时间序列的重要方法。自回归滑动平均模型本质上只能捕捉线性关系,并且要求数据是稳定的。在时间序列变化不稳定、时间跨度较长时,自回归滑动平均模型因其主要依赖历史平均值,预测值总是停留在历史范围内,导致预测效果不佳。因此自回归滑动平均模型往往用于短期预测,无法进行中长期预测。
6.因此,亟需一种cpu资源负载情况预测方法,用于提前预警cpu资源负载情况,从而帮助系统管理员提前开展资源调度等工作,高效利用地cpu资源,防止故障发生。


技术实现要素:

7.(一)要解决的技术问题
8.鉴于上述问题,本发明的主要目的在于提供一种基于lstm的cpu资源负载情况预测方法,以期至少部分地解决上述提及的技术问题中的至少之一。
9.(二)技术方案
10.根据本发明的一个方面,提供了一种基于lstm的cpu资源负载情况预测方法,包括:
11.构建lstm算法模型;
12.对所述lstm算法模型进行训练;以及
13.利用训练好的lstm算法模型进行cpu资源负载情况预测。
14.进一步的,在对lstm算法模型进行训练时,采用非饱和激活函数relu函数作为激活函数;其中,relu激活函数的表达式为:
[0015][0016]
进一步的,在对lstm算法模型进行训练时,采用hyperopt进行模型参数调整。
[0017]
进一步的,在对所述lstm算法模型进行训练之前,还包括:
[0018]
获取cpu资源使用率训练数据;
[0019]
对所述cpu资源使用率训练数据进行数据平滑与归一化处理;
[0020]
利用数据平滑与归一化处理后的数据构建训练集与测试集,以对所述lstm算法模型进行训练。
[0021]
进一步的,在利用训练好的lstm算法模型进行cpu资源负载情况预测之前,还包括:
[0022]
获取cpu资源使用率待预测数据;
[0023]
对所述cpu资源使用率待预测数据进行数据平滑与归一化处理。
[0024]
进一步的,采用滑动平均法对数据做平滑处理,滑动平均法公式为:
[0025]
f
t
=(a
t-1
a
t-2
a
t-3


a
t-n
)/n
[0026]
式中,t为当前时刻,a
t-1
为上一时刻的数据,n为滑动平均的个数;
[0027]
所述归一化处理即通过对数据进行压缩与平移,以达到使数据绝对值落在1以内,归一化公式为:
[0028][0029]
式中,x为当前数据,x
*
为归一化后的数据,max和min分别为这组数据的最大值和最小值。
[0030]
进一步的,在对lstm算法模型进行训练时,采用dropout方法降低层间过拟合程度,并采用adam方法作为最优化方法;其中,adam方法的计算公式为:
[0031][0032]
式中,θ
t
为adam方法的输出,α表示学习率,θ
t-1
为待更新参数,m
t
为偏一阶矩估计;v
t
为偏二阶矩估计;和为矩估计的指数衰减率;ε为正数。
[0033]
进一步的,在对lstm算法模型进行训练时,采用均方误差对训练数据的输出值同真实值进行误差计算,其中,均方误差公式为:
[0034][0035]
式中,m为数据集个数,h(x
i
)为输出值,yi为真实值。
[0036]
进一步的,在对lstm算法模型进行训练时,以预测误差最小为目标函数,采用贝叶斯优化方法对lstm神经网络隐藏层数目、学习率、训练次数、遗忘率dropout进行参数组合寻优。
[0037]
进一步的,在利用训练好的lstm算法模型进行cpu资源负载情况预测时,采用平自相关系数进行平稳性分析,其中,自相关系数的定义为:
[0038][0039]
式中,k为阶数,为原始序列的均值,x
i
对应被拆分的原始序列的第i项,x
i k
对应
被拆分的原始序列移动k步后的序列的第i项。
[0040]
(三)有益效果
[0041]
从上述技术方案可以看出,本发明一种基于lstm的cpu资源负载情况预测算法至少具有以下有益效果其中之一:
[0042]
(1)本发明基于lstm的cpu资源负载情况预测方法,能够提前预警cpu资源负载情况,从而帮助系统管理员提前开展资源调度等工作,高效利用地cpu资源,防止故障发生。
[0043]
(2)本发明使用深度学习算法长短期记忆网络(lstm)实现对cpu资源负载情况的预测,lstm模型能够通过非线性计算提取出cpu资源负载特征,这样可以有效解决cpu资源使用率不平稳的带来的预测难题。
[0044]
(3)本发明在传统的lstm算法上做了优化,在激活函数方面,使用非饱和激活函数relu函数代替饱和激活函数tanh函数,由此可以加快模型的收敛速度,提高模型的预测准确率。
[0045]
(4)本发明使用hyperopt自动调参,进一步提高了模型准确率。
附图说明
[0046]
构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。
[0047]
在附图中:
[0048]
图1为本发明cpu资源负载情况训练和预测阶段流程图。
[0049]
图2为本发明sigmoid函数和导数曲线。
[0050]
图3为本发明tanh函数和导数曲线。
[0051]
图4为本发明relu函数曲线。
[0052]
图5为本发明第一组数据自相关图。
[0053]
图6为本发明第二组数据自相关图。
[0054]
图7为本发明第一组数据cpu预测效果对比。
[0055]
图8为本发明第二组数据cpu预测效果对比。
[0056]
图9为本发明三个函数归一化均方误差对比图(对数坐标)。
具体实施方式
[0057]
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明作进一步的详细说明。
[0058]
基于以上问题,考虑到cpu资源负载情况受多种因素影响,且具有非平稳、不规则的特性,本发明使用非线性模型深度学习算法长短期记忆网络(lstm)来进行cpu预测。
[0059]
为便于理解,此处先简单介绍长短期记忆网络和机器学习模型。
[0060]
长短期记忆网络,通常称为“lstm”,是一种特殊的循环神经网络(rnn),能够学习长期依赖性。长短期记忆网络(lstm)对循环神经网络(rnn)进行了改进,引入了记忆单元(memory cell)和门(gate)的机制,可以比普通的循环神经网络(rnn)更好地存储和访问历史序列信息。长短期记忆网络(lstm)精心设计了“门”结构(遗忘门、输入门、输出门),来控制记忆单元的信息流,主要消除或者增加信息到细胞状态的能力,使得长短期记忆网络
(lstm)能够记住长期的信息。由于长短期记忆网络(lstm)中包含时间记忆单元,特别适用于处理和预测时间、序列时间和序列间隔,所以非常适合cpu资源负载情况的预测。
[0061]
机器学习模型,包括本发明所用的lstm算法,调参复杂度高,工作量大。常见的调参方法有两种:网格搜索和随机搜索。网格搜索速度慢,但可搜索整个搜索空间,随机搜索很快,但可能会错过搜索空间中的重要点。
[0062]
本发明基于lstm的cpu资源负载(负载情况)预测方法,包括:
[0063]
构建lstm算法模型;
[0064]
对所述lstm算法模型进行训练;以及
[0065]
利用训练好的lstm算法模型进行cpu资源负载情况预测。
[0066]
通过使用深度学习算法长短期记忆网络(lstm)实现对cpu资源负载情况的预测,lstm模型能够通过非线性计算提取出cpu资源负载特征,这样可以解决cpu资源使用率不平稳的带来的预测难题。
[0067]
在对lstm算法模型进行训练时,本发明采用非饱和激活函数relu函数作为激活函数,可以加快模型的收敛速度,提高模型的预测准确率,由此解决了因tanh激活函数性质带来的收敛速度较慢等问题。
[0068]
此外,在对lstm算法模型进行训练时,为了实现动态调参,提高参数有效性,本发明选用贝叶斯优化来调整算法参数,具体使用hyperopt进行分布式调参,解决了机器学习调参难度大的问题,进一步提高了模型准确率。
[0069]
在一具体实施例中,本发明提供一种基于lstm的cpu资源负载情况预测方法,通过收集一段时间内的cpu资源负载情况的数据,构建lstm模型,对cpu资源进行准确预测,这样能够更好地提高cpu资源利用率,为cpu资源调度做准备。
[0070]
概括而言,本实施例基于lstm的cpu资源负载情况预测算法,包括训练阶段和预测阶段,训练好的模型经过模型部署的操作后能够实现预测功能。具体而言,如图1所示,所述训练阶段包括以下步骤:
[0071]
a1,cpu资源使用率训练数据收集;
[0072]
a2,数据平滑与归一化处理;
[0073]
a3,构建训练集与测试集;
[0074]
a4,构建lstm算法模型并对模型进行训练。
[0075]
所述预测阶段包括以下步骤:
[0076]
b1,cpu资源使用率待预测数据收集;
[0077]
b2,数据平滑与归一化处理;
[0078]
b3,模型预测;
[0079]
b4,预测结果输出。
[0080]
步骤a1,cpu资源使用率训练数据收集:使用shell脚本,从服务器中自动收集cpu资源负载情况的数据,数据内容为cpu资源使用率,利用cpu资源使用率数据进行模型训练从而对cpu资源负载情况预测。
[0081]
步骤a2,对收集到的数据进行平滑与归一化处理:首先,考虑到cpu数据不稳定,且容易存在噪声点,采用滑动平均法对数据做平滑处理。其次,为了方便模型训练及准确性评价,对数据进行归一化处理,即通过对原始数据进行压缩与平移,以达到使数据绝对值落在
1以内。其中,滑动平均法公式为:
[0082]
f
t
=(a
t-1
a
t-2
a
t-3


a
t-n
)/n
ꢀꢀ
(1)
[0083]
其中:t为当前时刻,a
t
为当前时刻的数据,a
t-1
为上一时刻的数据,依次类推,a
t-n
为上n时刻的数据,n为滑动平均的个数;
[0084]
归一化的公式为:
[0085][0086]
其中,x为当前数据,x
*
为归一化后的数据,max和min分别为这组数据的最大值和最小值。
[0087]
步骤a3,构建训练集与测试集:将收集到的cpu资源负载情况的数据(cpu资源使用率数据)按照一定比例划分为训练集与测试集,并根据预测效果调整比例参数。
[0088]
步骤a4,构建lstm算法模型并对模型进行训练:构建模型具体是利用keras深度学习框架,构建具有遗忘门、输入门、输出门为核心模块的lstm模型结构。所述步骤a4包括:
[0089]
a4.1,遗忘门的输入由预处理之后的当前时刻数据x
t
与前一时刻隐藏层输出h
t-1
决定,输出为f
t
,f
t
是一个0到1之间的数字,完全舍弃单元状态中的信息由0表示,完全保留单元状态中的信息由1表示。利用σ表示sigmoid激活函数,w
f
表示遗忘门权重,b
f
表示遗忘门偏置,则表达式如下所示:
[0090]
f
t
=σ(w
f
·
[h
t-1
,x
t
] b
f
)
ꢀꢀ
(3)
[0091]
遗忘门中需要注意的是,训练的是一个w
f
的权值,而且上一时刻的输出和当前时刻的输入是一个连接操作。遗忘门决定会从细胞状态中丢弃什么信息,因为sigmoid函数的输出是一个小于1的值,相当于对每个维度上的值做一个衰减。
[0092]
a4.2,预处理之后的数据x
t
与前一时刻隐藏层输出h
t-1
经过单元的输入门,然后更新参数,参数更新由sigmoid函数来控制,之后再结合relu层产生一个新的候选状态向量输入门的表达式定义为i
t
,最后由新的候选状态向量和输入门的表达式i
t
共同创建一个新的当前时刻(t时刻)状态向量c
t
。输入门的权重由w
i
表示,输入单元状态权重矩阵由w
c
表示,输入门偏置项由b
i
表示,输入单元状态偏置项由b
c
表示,激活函数为relu,前一时刻(t-1时刻)状态向量由c
t-1
表示,则i
t
和c
t
表达式如下所示:
[0093]
i
t
=σ(w
i
·
[h
t-1
,x
t
] b
i
)
ꢀꢀ
(4)
[0094][0095][0096]
a4.3,该步经过单元的输出门o
t
结合单元状态值c
t
得出隐藏层单元的输出值h
t
。决定隐藏层单元的输出值由输出门决定,记为o
t
。更新输出的权重矩阵由w
o
表示,更新输出的偏置项由b
o
表示,输出门的输出部分由h
t
决定,其表达式如下所示:
[0097]
o
t
=σ(w
o
·
[h
t-1
,x
t
] b
o
)
ꢀꢀ
(7)
[0098]
h
t
=o
t
*relu(c
t
)
ꢀꢀ
(8)
[0099]
a4.4,根据h
t
计算出模型的输出值,进而构造模型的均方误差,最后通过adam算法最小化目标函数,并不断更新模型参数使得网络达到最优。由于adam算法在更新网络权重方面能够基于训练数据不断迭代地更新,因此本发明选用adam算法最小化目标函数使得网
络达到最优。其中,均方误差公式为:
[0100][0101]
其中,m为数据集个数,h(x
i
)为预测值,y
i
为真实值。
[0102]
adam方法的计算公式为:
[0103][0104]
其中,θ
t
为adam方法的输出,α表示学习率,θ
t-1
为待更新参数,m
t
为偏一阶矩估计,m0=0;v
t
为偏二阶矩估计,v0=0;和为矩估计的指数衰减率;ε为小正数(10-8
数量级)。
[0105]
a4.5,在模型训练过程中,使用hyperopt进行模型参数调整。当模型训练完成后,将模型进行保存,供后续模型部署使用。主要调参流程为:定义参数空间、创建模型工厂、创建分数获取器、动态调参。
[0106]
其中,调参步骤如下:
[0107]
(1)定义目标函数,确定调参最小化的对象,即机器学习模型的验证误差值。
[0108]
(2)确定域空间,限定待搜索的超参数范围。
[0109]
(3)确定调参算法,构造代理模型和选择接下来要评估的超参数值的方法。
[0110]
(4)调参历史数据,存储目标函数评估结果,包含超参数和验证损失。
[0111]
通过以上四个调参步骤,可定位最小模型误差,从而实现模型参数优化。
[0112]
在步骤a4中,构建lstm算法模型时会选用激活函数,在深度学习中,常见的饱和激活函数包括sigmoid函数和双曲正切函数tanh函数,其函数和导数曲线如图2和图3所示。
[0113]
这两种激活函数存在一些缺陷。激活函数的导数在正负饱和区的梯度都会接近于0值,很快造成梯度消失问题,使得在反向传播训练时参数学习速度变慢,最终导致收敛速度变慢。
[0114]
基于以上两种激活函数在深度学习训练过程中存在的普遍问题,本发明在构建lstm模型时选用非饱和激活函数relu。relu激活函数的表达式为:
[0115][0116]
其函数图像如图4所示。
[0117]
由图像和表达式可知,relu激活函数在正区间的梯度为常数,不会产生梯度消失现象,从而可以加快模型的学习速度和收敛速度,缩短训练周期。
[0118]
根据本发明提出的基于lstm的cpu资源负载情况预测算法,发明人评估lstm各激活函数预测cpu不同变动场景的效果。选取预测误差最小和预测误差最大的两组数据进行预测效果对比。首先对数据集进行平稳性分析,平稳性分析采用自相关系数作为评判标准,自相关系数的定义为:
[0119][0120]
其中k为阶数,为原始序列(待判断平稳性的原始数据序列,此处数据为cpu使用率数据)的均值,分母为方差,x
i
和x
i k
分别对应被拆分的两个序列(原始序列和在原始序列基础上移动k步的序列)的第i项。
[0121]
两组数据的自相关图分别如图5和图6所示。由图5和图6可知,第一组数据的平稳性高于第二组数据。发明人对两组数据在不同激活函数下的预测效果进行对比。第一组数据的预测效果如图7所示。该场景下,cpu使用率变化不大,各激活函数预测效果差距不大。可见在此场景下,relu激活函数预测优势并不显著。
[0122]
第二组数据的预测效果如图8所示。该场景下,cpu使用率出现大幅上升,relu预测效果显著优于其他激活函数。实际运维监控中,cpu使用率上升到90%等阈值是关键监控指标,但此场景其他激活函数预测效果较差,无法起到提前预警作用。
[0123]
选取多组数据进行预测实验,计算随着训练轮数的增加,本发明与其他预测算法的归一化均方误差对比,选取归一化后均方误差小于0.005且训练轮次变动比例小于5%作为收敛点。由图9可见,本发明方法随着训练轮数增加,收敛速度最快。
[0124]
总的来说,在cpu运行相对平稳时,relu激活函数优势不明显,但在cpu突变场景下,其预测效果明显优于tanh、sigmoid。因此,在实际监控场景使用relu进行cpu使用率预测有很大实践意义。
[0125]
预测阶段的步骤b1中的cpu资源使用率待预测数据收集和上述训练阶段的步骤a1的收集过程类似。
[0126]
步骤b2数据平滑与归一化处理和上述训练阶段的步骤a2的平滑与归一化处理过程类似。
[0127]
步骤b3,模型预测:将前一段时间cpu的使用率作为模型的输入,输入到训练完成的模型进行预测。
[0128]
步骤b4,预测结果输出:输出的预测结果为后一时间段cpu使用率的预测值。
[0129]
本发明使用深度学习算法优化的长短期记忆网络(lstm)实现对cpu资源负载情况的准确预测,并进行模型自动调参,提高模型收敛速度与预测准确度。通过实验对比,表明在cpu资源负载情况的预测上,与自回归滑动平均模型(arma)和传统的lstm模型相比,优化的lstm模型的预测准确率较高,为实际cpu预测场景提供了一个较好的解决方案。
[0130]
至此,已经结合附图对本发明进行了详细描述。依据以上描述,本领域技术人员应当对本发明有了清楚的认识。
[0131]
需要说明的是,在附图或说明书正文中,未绘示或描述的实现方式,均为所属技术领域中普通技术人员所知的形式,并未进行详细说明。此外,上述对各元件的定义并不仅限于实施例中提到的各种具体结构、形状或方式,本领域普通技术人员可对其进行简单地更改或替换。
[0132]
当然,根据实际需要,本发明还可以包含其他的部分,由于同本发明的创新之处无关,此处不再赘述。
[0133]
类似地,应当理解,为了精简本发明并帮助理解各个发明方面中的一个或多个,在
上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该发明的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面发明的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
[0134]
此外,在附图或说明书描述中,相似或相同的部分都使用相同的图号。说明书中示例的各个实施例中的技术特征在无冲突的前提下可以进行自由组合形成新的方案,另外每个权利要求可以单独作为一个实施例或者各个权利要求中的技术特征可以进行组合作为新的实施例,且在附图中,实施例的形状或是厚度可扩大,并以简化或是方便标示。再者,附图中未绘示或描述的元件或实现方式,为所属技术领域中普通技术人员所知的形式。另外,虽然本文可提供包含特定值的参数的示范,但应了解,参数无需确切等于相应的值,而是可在可接受的误差容限或设计约束内近似于相应的值。
[0135]
除非存在技术障碍或矛盾,本发明的上述各种实施方式可以自由组合以形成另外的实施例,这些另外的实施例均在本发明的保护范围中。
[0136]
虽然结合附图对本发明进行了说明,但是附图中公开的实施例旨在对本发明优选实施方式进行示例性说明,而不能理解为对本发明的一种限制。附图中的尺寸比例仅仅是示意性的,并不能理解为对本发明的限制。
[0137]
虽然本发明总体构思的一些实施例已被显示和说明,本领域普通技术人员将理解,在不背离本总体发明构思的原则和精神的情况下,可对这些实施例做出改变,本发明的范围以权利要求和它们的等同物限定。
[0138]
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
再多了解一些

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

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

相关文献