APP下载

基于LSTM 的CPU 资源使用情况预测算法的研究

2021-05-12樊文杰

电子设计工程 2021年8期
关键词:使用率预测函数

樊文杰,陈 岚,张 贺

(1.中国科学院大学,北京 100049;2.中国科学院微电子研究所,北京 100029;3.三维及纳米集成电路设计自动化技术北京市重点实验室,北京 100029)

资源预测对于资源监控、资源分配等方面都具有重要意义[1]。为了高效、合理地利用资源,需要对资源进行准确预测,这样能够更好地提高资源利用率,为资源调度做准备。以前的研究表明,CPU 资源使用情况有一定的时间关联性,也就是说基于历史数据的CPU 资源预测可行。基于时间序列的预测法在此类场景中应用较多,常见的模型有自回归滑动平均模型(ARMA)[2]。该模型在时间序列[3]预测方面有一定不足。由于该模型捕捉数据的线性关系,在时间序列变化不稳定、时间跨度较长时,自回归滑动平均模型因其主要依赖历史平均值,预测值总是停留在历史范围内,导致预测效果不佳。因此,自回归滑动平均模型往往用于短期预测,无法进行中长期预测[4]。基于以上问题,考虑到CPU 资源使用情况受多种因素影响,且具有非平稳、不规则的特性[5],该文尝试使用机器学习算法长短期记忆网络来进行CPU预测。长短期记忆网络是一种特殊的RNN[6],能够学习长期依赖性,可以通过非线性计算更好地提取出CPU 资源使用特征,克服CPU 资源不规则的特性。

该文主要工作包括使用长短期记忆网络(LSTM)算法对CPU 资源使用情况进行预测,并对算法进行了优化,使用非饱和激活函数ReLU 函数[7]代替饱和激活函数Tanh 函数[8],可以加快模型的收敛速度。最后,通过实验结果表明,相比自回归滑动平均模型(ARMA)、循环神经网络(RNN)算法和传统LSTM 算法,优化的LSTM 算法在CPU 使用率预测上表现出较好的效果,预测的准确率有所提高。

1 长短期记忆网络(LSTM)模型构建及训练

1.1 CPU资源使用情况数据收集及处理

1)数据采集

使用shell 脚本,从服务器中自动收集CPU 资源使用情况的数据,数据内容为CPU 资源使用率,每隔5 s 收集一次,共收集3 万条数据。

2)数据预处理

考虑到CPU 数据不稳定,且容易存在噪声点,采用滑动平均法[9]对数据做平滑处理。此外为了方便模型训练及准确性评价,对数据进行压缩和平移,完成归一化处理[10]。

1.2 LSTM模型构建

LSTM 模型对RNN 模型[11]进行了改进,用cell 门开关替换了RNN 的单个循环结构,这样能够更加精确地处理时间序列的长期依赖关系[12]。CPU 使用情况随时间的变动属于时间序列类型,可将各个时刻CPU 的状态作为LSTM 模型的输入,进行CPU 使用情况预测分析。

LSTM 模型的具体构建过程如下所示:

步骤1:遗忘门的输入由预处理之后的数据xt与前一时刻隐藏层输出ht-1决定,输出为ft。表达式如下:

Wf为遗忘门权重;bf为遗忘门偏置;σ 为Sigmoid 激活函数。

遗忘门训练的结果是Wf的权重,此外,上一时刻的输出和当前时刻的输入分别为一个向量,通过连接操作将两者连接成为长向量。遗忘门控制模型从cell 状态丢弃信息,因为激活函数输出一个小于1的值,这就意味着对每个维度值进行衰减。

步骤2:预处理之后的数据xt与前一时刻隐藏层输出ht-1经过单元的输入门,然后更新参数,参数更新由Sigmoid 函数来控制,之后再结合ReLU 层产生一个新的候选状态向量,输入门的表达式定义为it,Ct是由和it共同创建的新的状态向量,相关表达式如下:

Wi为输入门的权重;Wc为输入单元状态权重矩阵;bi为输入门偏置项,bc为输入单元状态偏置项,ReLU 为激活函数。

步骤3:隐藏层单元输出值ht由输出门ot和单元状态值Ct计算后得出,表达式如下:

ot为输出门;Wo为权重矩阵;bo为偏置项。

步骤4:根据ht计算出模型的输出值,进而构造模型的均方误差,最后通过Adam 算法[13]最小化目标函数,并不断更新模型参数,使得网络达到最优。

步骤5:通过以上步骤训练完成后,将要预测的时间段作为模型的输入,则模型的输出值即为后一时间段CPU 的预测值。

1.3 激活函数的选择

在深度学习中,常见的饱和激活函数[14]包括Sigmoid 函数和双曲正切函数Tanh 函数。其函数和导数曲线如图1 和图2 所示。

从图中可看出,Sigmoid、Tanh 两个激活函数的导数值在正负饱和区接近于0值,即梯度趋近于0,当梯度消失[15]时,模型学习速度变慢,进而减缓收敛速度[16]。

基于以上两种激活函数存在的问题,该文在激活函数方面采用非饱和激活函数ReLU 函数。ReLU函数的表达式为:

图1 Sigmoid函数和导数曲线

图2 Tanh函数和导数曲线

其函数图像如图3 所示。

图3 ReLU函数曲线

由图像和表达式可知,ReLU 激活函数在正区间的梯度为常数,不会产生梯度消失现象,从而可以加快模型的学习速度和收敛速度,缩短训练周期。

2 长短期记忆网络(LSTM)预测流程

LSTM 算法预测包含6 个步骤,主要流程如图4所示。

图4 预测流程图

1)数据采集:收集服务器上的CPU 资源数据。

2)数据预处理:使用滑动平均法对数据做平滑处理,并且对数据做归一化处理。

3)模型构建:选择合适的隐藏神经元数和层数,选择激活函数、配置训练集与预测集占比等,完成LSTM 模型构建[17]。

4)训练模型:选用大量数据进行模型训练。

5)优化参数:根据各训练模型的预测表现,优化模型各参数[18]。

6)预测模型:通过最优参数生成预测模型,后续用于对资源进行预测。

3 实验结果分析

为了分析LSTM 模型在各激活函数下对CPU 预测的准确率和性能,将采集的3 万条CPU 使用率数据分为30 组,每组各1 000 条数据,每条数据采集间隔5 s。选用Sigmoid、Tanh、ReLU 3 个激活函数进行实验。同时,使用自回归滑动平均模型(ARMA)、循环神经网络(RNN)算法做参照对比。

首先,评估各激活函数预测准确性。在评价各组模型表现时,采用平均相对误差(MRE)进行对比。第n组数据平均相对误差(MRE)的公式为:

其中,h(xi)为预测值,yi为真实值,m为测试集数据长度。

在评估整体函数表现时,使用30 组预测结果平均相对误差的均值进行对比分析。

训练集与测试集比例分别为7∶3、8∶2、9∶1 时,ARMA、RNN 和LSTM 各激活函数预测的平均相对误差的均值()如表1 所示。

表1 各模型不同训练集占比平均相对误差的均值()

表1 各模型不同训练集占比平均相对误差的均值()

从表中可见,ReLU 激活函数平均相对误差较其他算法表现好。其中Tanh 与ReLU 3 种训练集与预测集比例的平均分别为3.47%、2.99%,可知ReLU 激活函数的平均相对误差相比传统LSTM 算法中Tanh 激活函数下降13.75%。

考虑CPU 预测场景的实际意义,对不同函数相对误差的最大值进行分析。不同训练集和测试集比例下各激活函数预测的相对误差的最大值如表2 所示,可以看到30 组数据中,ReLU 函数不仅在准确率的稳定性上表现优异,在极端预测场景,表现也是最佳。

表2 各模型不同训练集占比下相对误差的最大值

除训练集占比影响外,分析各模型在整体数据集长度不同时,平均相对误差的均值()情况,统计数据如表3 所示。

表3 各模型不同数据集长度平均相对误差的均值()

表3 各模型不同数据集长度平均相对误差的均值()

从表中可知,各算法预测效果差距随数据集长度变化不大,即ReLU 在各时间长度下均为最优,其次为Tanh,最差为ARMA。各算法随着数据集时长增加,预测误差有一定上升,这在一定程度上体现出测试数据中,CPU 使用情况与较长时间前使用情况关联性较弱。在实际应用时,需根据具体预测场景选取时间长度。

其次,评估各激活函数训练速度。此处选用各激活函数平均相对误差均值最小的训练预测占比9∶1进行评估,使用各激活函数分别训练10 轮、30 轮、50 轮、70 轮,数据集为1 000 个点(5 s 采集一个数据,1 000 个点共计83 min)。记录完成训练所需时间,如表4 所示。

表4 各激活函数训练时长对比表

从上表可以看出各激活函数在同样训练轮数下,速度没有显著差异。分析激活函数收敛速度,随着训练轮数的增加,各激活函数归一化均方误差变化见图5,选取归一化后均方误差小于0.005 且训练轮次变动比例小于5%作为收敛点,ReLU 激活函数、Tanh 激活函数、Sigmoid 激活函数分别在24 轮、30 轮、50轮收敛。计算可得,ReLU收敛速度比Tanh、Sigmoid分别提高20%、52%。随着训练轮数增加,ReLU 激活函数收敛速度最快。

图5 3个函数归一化均方误差对比图

接下来,评估各激活函数预测CPU 不同变动场景的效果。选取预测误差最小和预测误差最大的两组数据进行预测效果对比。首先,对两组数据进行平稳性检验。

序列的平稳性检验常用的一种方法是图检验法,通过绘制序列时序图和序列自相关图,针对图形展现的特征判定平稳性。其中,自相关图反映了自相关系数随延迟期数k的变化趋势。自相关系数(Autocorrelation Coefficient)的定义如下:

平稳序列具有短期相关性。通过自相关图的变化趋势可以看出,当延迟期数k增加时,自相关系数快速震荡衰减或单调衰减接近0 的是平稳序列,缓慢衰减的则是非平稳序列。对两组数据进行自相关图绘制,分别得到图6 与图7,可以看出,第一组数据的自相关系数下降至0 的速度较第二组数据更快,即第一组数据的平稳性高于第二组数据。

图6 第一组数据自相关图

图7 第二组数据自相关图

对两组数据在不同激活函数下的预测效果进行对比。

第一组对比:其自相关图见图6,其预测效果如图8 所示。该场景下,CPU 使用率变化不大,各激活函数预测效果差距不大。可见在此场景下,ReLU 激活函数预测优势并不显著。

第二组对比:其自相关图见图7,其预测效果如图9 所示。该场景下,CPU 使用率出现大幅上升,ReLU 预测效果显著优于其他激活函数。实际运维监控中,CPU 使用率上升到90%等阈值是关键监控指标,但此场景其他激活函数预测效果较差,无法起到提前预警作用。

图8 第一组数据CPU预测效果对比

图9 第二组数据CPU预测效果对比

总的来说,在CPU 运行相对平稳时,ReLU 激活函数优势不明显,但在CPU 突变场景下,其预测效果明显优于Tanh、Sigmoid。在实际监控场景,使用ReLU 进行CPU 使用率预测有很大的实践意义。同时,在训练集占比方面,如表1 所示,ReLU 函数在训练集与预测集比例为9∶1 时表现最佳,且从图5 可见,ReLU 激活函数在30 轮基本完成收敛,可作为模型训练参考比例与轮数。在该文训练CPU 使用率的30 组数据中,ReLU 激活函数未出现不收敛数据集。

4 结束语

提出了一种基于长短期记忆网络(LSTM)的CPU资源使用情况预测算法,该算法优化了传统LSTM 算法,选用非饱和激活函数ReLU 函数替换饱和激活函数Tanh 函数,提高模型收敛速度。经实验对比,优化的LSTM算法比自回归滑动平均模型(ARMA)、循环神经网络(RNN)算法和传统LSTM 算法预测准确率更高,为实际CPU预测场景提供了一个较好的解决方案。

猜你喜欢

使用率预测函数
无可预测
选修2-2期中考试预测卷(A卷)
选修2-2期中考试预测卷(B卷)
二次函数
第3讲 “函数”复习精讲
二次函数
函数备考精讲
2018年中国网络直播用户规模为3.97亿
不必预测未来,只需把握现在
基于服务学习方法提高青少年安全带使用率