基于深层LSTM 的分布式负载预测模型
2020-04-25付磊
付磊
(四川大学计算机学院,成都610065)
0 引言
分布式系统,如大规模的高性能计算(HPC)平台,为许多复杂问题提供了高效和快速的解决方案,例如生物学应用、模拟地震和计算天体行星。影响分布式系统性能的主要有以下几个因素:资源异构性、计算实体的不恰当分布以及负载的动态变化等。此外,负载平衡对分布式系统的性能至关重要,负载平衡又分为静态负载平衡和动态负载平衡。静态负载平衡大多基于负载划分实现,它是基于异构资源和负载的初始状态来分布计算实体,但复杂应用的负载往往是动态变化的。由于静态负载平衡策略的局限性,所以诸多不同种类的动态负载平衡策略被提出以防止负载不平衡。
负载预测是动态负载平衡的重要内容,因为动态状态预估和负载预调度都依赖于负载预测,所以负载预测对于分布式系统的性能有非常重要的意义和价值。简而言之,准确的短期负载预测可以显著地优化分布式系统的性能,所以应保证任意时刻负载信息的准确性。在文献[1,2]中,已提出多种支持负载平衡的负载预测技术,并评估了这些负载预测技术的性能和精准度。
时间序列预测(Time Series Forecasting,TSF)是基于历史数据的和当前时刻的状态信息来预测未来的状态和信息。目前时间序列预测在多个领域发挥着重要作用,例如天气预报、石油工业、金融市场和公共交通等。在以往的研究中,为了预测未来值,时间序列预测主要是通过线性统计来实现。然而,这些传统方法大多侧重于理论研究,真正用于解决实际问题的方法却相对较少。近年来,学者们越来越注重实际问题的解决,提出了多种有效的非线性时间序列预测模型,如自回归条件异方差(ARCH)模型[3]、门限自回归模型[4]、递归神经网络[5]等。与线性时间序列预测相比,非线性时间序列预测研究尚处于起步阶段,但非线性时间序列预测相较线性时间序列预测有许多特有的优势。
本文旨在通过提高负载预测精度来优化负载平衡性,进而提高分布式系统的性能。针对负载序列的变化特性,在传统LSTM 网络的基础上,提出了一种基于LSTM 的深层网络模型(Deep LSTM,DLSTM),它包含了多层LSTM 网络,每层网络具有若干个神经单元。该模型的工作原理是:每个LSTM 单元工作在不同的时间步长,以处理所需任务的一部分,然后将其结果传递给下一时刻和下一层网络,直到最后提供输出[6,7]。实验结果表明,该模型具有非常好的负载信息预测精度,能够极好地描述负载序列的总体趋势,其性能优于其他负载预测模型。
1 时间序列预测
为了解决分布式系统性能损失的问题,许多负载均衡系统应运而生。其中一部分负载均衡是依赖负载预测和负载预调度而实现的,所以这部分负载均衡的性能极大程度上取决于所使用的负载预测方法的优劣。时间序列预测是负载预测方法的一种,该方法假设时间序列数据的内部结构之间存在一些隐藏的关联,例如季节差异,趋势变化和自相关等。由于单点的数据价值十分有限,无法体现出数据的变化规律和趋势,所以需要时间序列中的多个数据点作为分析对象,而时间序列通常是按照特定的时间频率采样的。
随着对时间序列分析理论和应用的深入研究,发现大多数应用的时间序列数据都具有时间或者时间序列属性,所以时间序列预测的应用范围不断扩大,已被应用于多个不同的领域,并取得了显著的成果。然而,分布式负载的一些特性导致负载信息的时间序列预测具有一定的挑战性:①负载信息的时间序列数据包括噪声、异常值等;②负载信息的时间序列数据是高维的、非平稳和非线性的,并且可能呈现不同的趋势;③不同时刻间的负载信息不是相互独立的,负载预测值不仅与当前时刻的特征相关,还与历史特征和历史负载值相关。
2 负载预测模型——DLSTM
为了拟合负载震荡,精准地预测未来的负载信息,本文提出了一种基于LSTM 的负载预测模型。在介绍本文提出的模型之前,将介绍原始的LSTM 循环神经网络,因为它是本文提出模型的基础。
2.1 LSTM模型
长短期记忆网络(Long Short-Term Memory,LSTM)模型是循环神经网络(RNN)的变体,Hochreiter 和Schmidhuber[8]提出LSTM 模型,LSTM 通过引入CEC(Constant Error Carrousel)单元解决了RNN 长序列训练过程中梯度消失和梯度爆炸的缺陷,并设计了记忆单元(memory cell)来保存时间序列数据中的长期依赖和关联关系[9]。LSTM 结构的核心思想是循环隐藏层中的细胞状态,细胞状态类似于一条输送带,细胞的状态沿着整个链条运行,只有一些非常细微的线性操作作用其上,使得状态信息变化缓慢,很容易保持不变地流过整个链条。LSTM 网络具有几个称为“门(gate)”的特殊单元,这些单元控制信息流,使得LSTM 能够删除或添加信息到细胞状态。门允许信息有选择地通过,它由一个Sigmoid 神经网络层和一个逐点乘法运算组成。Sigmoid 神经网络层输出0 和1 之间的数字,这个数字描述每个门有多少信息可以通过,0 表示不通过任何信息,1 表示全部信息通过。传统LSTM 网络模型包括三个门:遗忘门(forget gate)、输入门(input gate)、输出门(output gate),如图1 所示。
图1 LSTM结构
遗忘门( ft):顾名思义,用于控制是否遗忘信息,以一定的概率控制是否遗忘上一层的隐藏细胞状态,如公式(1)所示:
输入门(it):用于处理序列当前时刻的输入,即用于确定向细胞状态添加多少新信息。它由两个部分组成:第一部分使用了sigmoid 激活函数确定需要更新的信息,第二部分使用了tanh 激活函数创建新的候选向量C˜t,然后这两部分被组合以更新细胞状态ct。输入门it和细胞状态ct的更新分别是公式(2)和公式(3):
输出门(ot):用于确定网络的输出,隐藏状态ht的更新。它由两部分组成,第一部分是ot,由序列上一时刻的隐藏状态ht-1和序列当前时刻的输入xt以及激活函数sigmoid 得到;第二部分由细胞状态Ct和激活函数tanh 组成,得到一个介于-1 和1 之间的值,最后两部分相乘即为输出。即:
2.2 负载预测模型
深层神经网络对于解决很多复杂问题都非常有效,这一点是被广泛证明的,这就需要网络的深度足够深,或者需要足够多的隐藏层。虽然一些问题可以通过浅层的神经网络来解决,但是浅层的神经网络需要指数级上升的隐藏层来进行计算。研究表明,增加神经网络的深度是提高神经网络全局性能的有效途径[10]。在本文的研究中,浅层结构的神经网络不足以准确地拟合高度非线性和非平稳的负载信息时间序列数据。
考虑到负载信息序列的高度非线性和非平稳性的特点,传统的LSTM 结构需要进行一定的改进以适应负载预测问题。受神经网络深层结构出色能力的启发,以及LSTM 具有处理序列数据具有优良的性能,本文提出了一种面向时间序列的负载预测模型——基于LSTM 的深层模型(Deep LSTM,DLSTM)。在DLSTM体系结构中,隐藏状态不仅会传递到下一时间步,并且还会传递到DLSTM 结构的下一层网络。DLSTM 模型允许每一层的隐藏状态在不同的时间步长运行,DLSTM 的每一层都可以处理任务的一部分,并将其传递到下一层,直到最后一层输出预测值。经实验验证,本文提出的DLSTM 模型能够有效地分析负载振荡的时间序列,并精准地预测未来的负载信息。
3 实验
为了证明本文提出模型DLSTM 的有效性,在真实数据集上验证了该模型,并跟多种时间序列预测模型进行了比较,如:自回归积分移动平均模型(ARIMA)、循环神经网络(RNN)、门控循环单元(GRU)等。本文通过平均绝对误差(MAE)、均方根误差(RMSE)和均方根百分比误差(RMSPE)等不同的度量指标来评估DLSTM 模型的负载预测准确性。通过对比实验发现,提出的DLSTM 模型的各误差度量值是所有对比模型中的全局最小值,说明DLSTM 用于预测负载是相应模型中性能最好的,最适合用来模拟负载的变化并精准的预测负载信息。图2 说明了真实数据和DLSTM 模型预测值之间的关系。
图2 DLSTM预测值与真实值
4 结语
负载均衡有利于系统性能的提升,而负载信息对负载调度和负载均衡至关重要,所以计算节点负载信息的预测问题对负载均衡是有重要意义的。为了解决传统预测模型精度有待提高的问题,本文提出了一个基于LSTM 的深层网络模型(DLSTM),该模型的网络结构是能够学习时间关联性并具有记忆功能的LSTM的深层结构,该模型可以用于大多数时间序列的预测问题。然而在本文中,它是专门在负载信息时间序列应用场景下进行验证的,其性能优于大部分时间序列预测模型。