论文阅读-通过云特征增强的深度学习预测云工作负载转折点

论文名称:Cloud Workload Turning Points Prediction via Cloud Feature-Enhanced Deep Learning

摘要

云工作负载转折点要么是代表工作负载压力的局部峰值点,要么是代表资源浪费局部谷值点。预测这些关键点对于向系统管理者发出警告、采取预防措施以实现高资源利用率、服务质量(QoS)和投资收益至关重要。现有研究主要只关注于工作负载未来点值的预测,而没有考虑基于趋势的转折点预测。此外,在预测过程中最关键的挑战之一是,传统的趋势预测方法在金融和工业领域等方面虽然取得了成功,但它们表示云特征的能力较弱,这意味着它们无法描述高度变化的云工作负载时间序列。本文提出了一种基于云特征增强的深度学习的新型云工作负载转折点预测方法。首先,我们建立了一个考虑云工作负载特征的云服务器工作负载转折点预测模型。然后,设计了一个云特征增强的深度学习模型用于工作负载转折点预测。在最著名的谷歌集群上的实验展示了我们的模型与最先进模型相比的有效性。据我们所知,本文是第一篇通过云特征增强的深度学习对云工作负载时间序列的基于转折点的趋势预测进行系统研究的文章。

索引术语——云计算,转折点预测,深度学习,云特征增强,时间序列分析

1 引言

过去十年,云计算的商业使用需求激增,其高可扩展性、灵活性和成本效益特性能够满足新兴的大规模计算需求。云计算现在正日益成为不可或缺的计算基础设施[1],[2],[3],这得益于其高可扩展性、动态资源共享、细粒度资源调度等优点。云工作负载是一个重要的时间序列,由云数据中心执行期间的时间戳、事件类型和机器工作负载的事件记录组成,对于分析云工作负载的波动非常重要。准确预测云工作负载趋势是实现细粒度高资源利用率、服务质量和云数据中心经济利润的关键步骤

趋势预测任务可以分为三类:i) 预测下一个点相对于当前点是上升还是下降[4];ii) 预测下一个趋势段的斜率和持续时间[5];iii) 预测下一个点是否为转折点[6]。然而,随着云工作负载规模的增加,准确预测云工作负载趋势仍然是一个巨大的挑战,因为云数据中心的工作负载呈现出越来越高的变异性和波动性[7],[8],[9]。以谷歌集群追踪数据为例,这是最著名的云工作负载追踪之一,图1展示了工作负载的波动(谷歌云服务集群中服务器编号为207776314的CPU工作负载)。从图1中我们可以看到,工作负载序列随时间持续波动,包括一些代表工作负载压力的局部峰值点或通常代表资源浪费的局部谷值点。这些点被称为云工作负载转折点。然而,现有的云工作负载预测方法更多地关注于未来工作负载点值的预测方法,这些方法生成预测工作负载的单个点的预期值。对于以未来工作负载点值为中心的预测,尽管可以预测未来的工作负载值,但很难推断出动态变化趋势,即是否存在代表工作负载压力的局部峰值或代表资源浪费的局部谷值,因为我们只知道每个点的值,但无法判断最关键的特征是峰值点还是谷值点。即,现有的点值研究更多地关注于特定值,而不是它是谷值点还是峰值点。此外,传统的以工作负载点值为中心的预测基于回归理论、启发式方法或传统神经网络,这需要明显的模式或清晰的工作负载趋势才能进行准确预测。最近,为了处理高度非线性的工作负载,一些深度学习模型已经引起了人们对工作负载预测[10],[11]的日益浓厚的兴趣。

为了应对工作负载预测中的这些挑战,我们提出了CloudTrend——一种通过云特征增强的深度学习进行云工作负载转折点预测的方法。本文的主要贡献总结如下:

  • 据我们所知,我们是第一个在云环境中基于云特征增强的深度学习进行服务器工作负载转折点预测的系统研究。我们的初步工作发表在论文[12]中,展示了一些现有问题和有限的解决方案分析。在本文中,我们通过扩展背景和思想,提供更全面的最近相关工作调查,并深化架构、分析过程和实验的设计,使我们的方法系统化。

  • 考虑到云服务器场景,我们首次对云服务器工作负载转折点预测问题进行建模,包括云工作负载时间序列波动特征云工作负载转折点及相应的工作负载趋势预测。这些模型为成功的云工作负载转折点预测奠定了初步的理论分析基础。

  • 作为CloudTrend的核心,我们设计了一个高效的云特征增强的多任务云工作负载转折点预测算法,命名为FEMT-LSTM,通过基于规则过滤的PLR(分段线性表示算法)和特征增强的LSTM来捕捉和学习工作负载趋势的长期依赖性。它可以捕捉到易变波动中的基本云特征,通过巧妙地引入时间维度来提高预测性能,并且能够很好地适应云环境。

  • 使用来自谷歌的最著名的真实世界工作负载模式进行了广泛的实验,以验证所提出的云工作负载预测方法的有效性。结果表明,我们的方法优于五种经典的基线预测方法。

2 相关工作

在本节中,我们对云工作负载预测中使用的一些经典方法进行分类并简要回顾。然后,我们介绍了用于云时间序列预测的机器学习和深度学习方法。最后,我们总结了相关工作的不足之处。

2.1 云工作负载预测中的分类

云工作负载时间序列分析和预测对于资源利用率分析[13],[14],任务失败分析[15],[16]等非常有用。云工作负载时间序列预测可以分为以点值为中心的预测(或在以下简称为点值预测)和趋势预测,后者更多关注上游或下游预测。

点值预测等同于预测未来某一时间点或多个时间点的工作负载值。Di等人[17]提出了一种基于统计特征的贝叶斯模型,用于预测谷歌云服务集群中服务器的CPU使用情况。Buchaca等人[18]采用了基于循环神经网络的序列到序列模型,以预测共同执行作业对资源的占用情况。在[10]中,Kumar等人提出了一种使用神经网络和自适应差分进化算法的工作负载预测模型。Chen等人[19]将时间序列分析(TSA)和带门控单元(GRU)块的循环神经网络(RNN)集成在一起,用于工作负载值预测。2018年,Zhang等人[20]使用了一种时间序列聚类算法,结合双向长短期记忆网络,以预测服务器的CPU利用率。2019年,Duggan等人[3]提出了一种基于循环神经网络的服务器CPU和网络带宽占用预测模型,以辅助云环境中的虚拟机迁移。对于点值预测,尽管可以预测未来的工作负载值,但很难了解服务器的内部状态和工作负载的动态变化趋势。

趋势预测,如前所述,大致可以分为三种类型:

  • 预测下一个点相对于当前点是上升还是下降。例如,2019年,Deng等人提出了一个知识驱动的时间卷积网络(KDTCN)用于股票趋势预测,该网络结合了知识图研究和股票趋势预测中的价格值[4]。

  • 预测下一个趋势段的斜率和持续时间。例如,在2017年,Lin[5]等人使用了一个时间序列线性分割算法来划分趋势段,然后使用长短期记忆网络和卷积神经网络的混合结构来构建模型,以预测下一个趋势段的斜率和持续时间。

  • 预测下一个点是否为转折点。例如,Xia等人[6]使用了一个时间序列线性分割算法在原始时间序列中标记转折点,然后构建了一个机器学习模型来预测下一个点是否为转折点。然而,他们的特征不适用于云服务器工作负载转折点预测,准确性有待提高

2.2 云工作负载时间序列预测中的机器学习和深度学习方法

在过去的十年中,许多研究使用深度学习算法或基于统计的算法来预测云工作负载。除了上述在第2.1节中提到的方法之外,论文[17]设计了一种基于贝叶斯模型的预测方法,用于预测长期时间间隔内的平均工作负载,以及连续的未来时间间隔。论文[10]提出了一种使用神经网络和自适应差分进化算法的工作负载预测模型。论文[19]提出了一种基于深度学习的云工作负载预测算法,该算法集成了顶层稀疏自编码器和带门控单元块的RNN,以提高预测准确性。论文[11]使用了在线稀疏双向长短期记忆网络,以辅助云环境中的虚拟机迁移。

Ashutosh Kumar Singh等人[21]考虑了预测过程中的量子因素,并提出了一个进化量子神经网络模型,以更好地预测云工作负载。我们提出的方法不仅选择了各种适合的工作负载波动特征,还通过特征增强改进了LSTM,以更准确地捕捉隐含信息。Kee Kim及其团队[22]和[23]设计了一种集成的深度学习方法,用于时间序列预测。论文[24]选择了与图结构紧密匹配的图神经网络(GNN)架构,以预测云计算工作流的负载。论文[25]使用了一个在线云资源预测模型(OCRPM)。

与我们的工作最相似的是Xia[6]在2018年提出的一种转折点预测模型,称为加权支持向量机(WSVM)。WSVM[26]是SVM的修改版本。SVM[27]的主要思想是生成一个分类超平面,将两种类型的数据从最大边界分开。当每个训练实例具有不同的权重时,标准SVM被扩展到加权SVM,使得普通点和转折点对要最小化的损失函数提供不同的贡献。Xia[6]使用了分段线性分割算法来生成虚拟机请求中的断点,然后使用WSVM和基本的窗口化特征来预测虚拟机请求在下一步是否会突然改变。与虚拟机请求的数量相比,服务器工作负载的变化是非线性的且更加易变,这对转折点预测提出了更高的挑战。

2.3 现有方法的不足总结

总的来说,现有方法存在以下不足:

  1. 现有的云预测模型主要集中在点值预测而不是趋势预测上。但正如之前提到的,点值预测并不能处理需求中的峰值或谷值趋势变化;此外,它也不能反映未来时期工作负载的属性,因为它没有捕捉到代表工作负载过程历史动态的趋势变化。

  2. 转折点本质上是波动变化的反映,而现有方法中使用的特征大多是时间窗口内的基本统计特征,如均值和方差,这些特征对于反映云工作负载波动较弱。

  3. 现有的最优转折点预测模型,如WSVM,主要关注预测点附近的单个时间窗口,但它们忽略了沿时间维度可能的系统状态长期变化,这是考虑资源需求实际波动的一个重要特征。

在本文中,我们提出了一种基于云特征增强的多任务LSTM模型的云工作负载转折点预测方法。为了克服上述缺点,我们的模型从根本上关注趋势预测。然后,我们的算法创造性地捕获了四个时间序列云特征,以更好地描述云工作负载波动。此外,我们使用的改进的LSTM模型考虑了历史变化。最后,我们在Google Cloud Service集群跟踪、阿里巴巴开放集群跟踪和属于Grid工作负载档案的HPC跟踪上进行了实验,这些实验提供了丰富和权威的时序信息。与以前的相关研究相比,我们的模型是创新的。

3 问题建模

在本节中,我们建模了如何在云服务器场景下预测云工作负载转折点的问题,包括工作负载时间序列的模型转折点相应工作负载趋势云工作负载的波动特征

3.1 建模云工作负载波动

云环境中的工作负载充满了波动性,高质量的特征将帮助模型捕捉工作负载时间序列的局部趋势特征。在文献[6]中,使用了两种类型的特征来描述虚拟机请求数量的变化:一是虚拟机请求的元信息,包括请求虚拟机服务的用户分布和当前时间窗口中请求的虚拟机类型分布。另一种是观察窗口中的统计特征,包括当前的请求数量、请求数量的平均值和请求数量的方差。在本文中,我们提出了一组基于云转折点的特征,这些特征列在表1中(缩写中的代表字母加粗)。除了三个基本统计特征(当前工作负载、工作负载平均值、工作负载方差)外,我们提出了四个额外的波动特征,以尽可能反映观察窗口附近点的工作负载趋势。我们还绘制了一个皮尔森图来测试它们的相关性。

工作负载趋势。由于云工作负载一直在变化,它经常在指定的特征观察窗口中显示出上升和下降。如果上升点的总量高于下降点,则整个观察窗口可能显示出上升趋势,而当下降点的数量较大时,在观察窗口中出现相反的趋势。上升或下降趋势的变化比例与趋势的强度呈正相关,这反映了不同场景中的不同波动特征(相对于股票分析中的相对强度指数[31])。计算方法如公式(1)所示,其中I(x)是指示函数。如果x为真,则I(x)的值为1,否则为0。frsi是趋势强度指标,等于总的上升趋势。xup和xdown的和代表了全部变化。frsi越接近于1,上升趋势的可能性就越大。当它接近1/2时,意味着两种趋势具有相同的概率。例如,在图2所示的特征观察窗口中,由于xup = xdown = 2d,我们得到frsi = 2d/(2d + 2d) = 1/2,这意味着这个窗口中的上下趋势强度相同。

功能观察窗口。当t=4时,特征观测窗口长度n为4。此窗口中的工作负载值为x1;x2;x3;x4,我们假设x2-x1=x4-x3=1/2(x2-x3)=d。因此,当t=4时,我们可以计算出此时由一组特征组成的特征向量。

工作负载变化的绝对值之和。由于frsi只能衡量观察窗口中的整体趋势强度,当两次变化相等时,它无法反映太多信息。因此,我们计算观察窗口中工作负载变化的绝对值之和fasc作为公式(2)。fasc越大,观察窗口中的工作负载变化就越剧烈;否则,变化就越稳定。例如,在图2中,fasc = d + 2d + d = 4d。

工作负载的二阶差分的平均值。记为fmsdc,公式(3)衡量了工作负载变化的“加速度”,即变化的速度。这个值越大,观察窗口中的工作负载序列变化就越快,即波动就越强

工作负载的线性趋势斜率。我们使用线性函数y = ax + b来拟合窗口中的工作负载,并将直线的斜率a作为特征之一。使用最小二乘法进行拟合,我们的目标是最小化拟合误差。这个值的绝对值越大,观察窗口中的工作负载序列就越陡峭,反映了更强烈的趋势倾向。

考虑到云工作负载的波动,在特征提取之后,我们评估了波动特征之间的相关性。添加多个特征的目的是提高分类准确性。然而,如果特征选择不当,特别是如果选定特征之间的相关性强,分类器的准确性会受到冗余信息产生的影响。我们对Google云服务集群中服务器908054生成的29天CPU使用工作负载序列进行特征提取,并制作了7个特征之间的皮尔森相关系数图。图3是相关图,其中特征观察窗口的长度设置为3和18个时间步(每个时间步为5分钟)。颜色越深,表示的相关性越强。基本上,深色元素位于图的对角线附近,表明本文提出的特征之间没有强相关性

3.2 建模云工作负载转折点

工作负载转折点的正式定义如下:对于给定的工作负载时间序列X = (x1; x2; ... ; xT),T是工作负载时间序列的总长度,其中工作负载转折点是工作负载局部趋势逆转的点。x的值代表工作负载跟踪数据(CPU使用等),将在第5.1节中详细描述。工作负载转折点xi(这里我们假设点xi是一个转折点,i ∈ [1; T])要么是代表系统压力的峰值点,要么是代表系统空闲的谷值点,两侧显示相反的局部趋势。非转折点是最接近它的上一个转折点。整个工作负载时间序列X由转折点和非转折点组成。

云工作负载趋势是连续工作负载点值的时间序列,反映了一段时间内的服务器工作负载状态,趋势的变化反映了状态转换。如第1节简要提到的,与点值预测相比,基于趋势的转折点预测有两个优点:

  • 它不容易受到单点抖动噪声的影响。云环境中的服务器工作负载可能在下一刻时间经历强烈的抖动。如图4所示,如果在时间t0预测时间t1的工作负载值,由于时间t1的抖动,它偏离了现实。基于此时预测的点值的资源分配可能发生多个错误。

  • 它包含丰富的长期状态信息。趋势的转变代表了旧趋势和新趋势的交替,可以反映未来时期的工作负载状态。因此,可以采用更合适的资源配置方法来应对变化。

图5显示了Google云服务集群中服务器编号为908054的CPU工作负载约20小时的变化,其中转折点标记为红色三角形。图6展示了图5的两个典型案例。图6a中标记的点显示了一个典型的谷点,点两侧的虚线代表局部趋势。我们可以观察到左侧显示下降趋势,右侧显示上升趋势。相反,图6b中标记的点显示了一个典型的峰值点,左侧有上升趋势,右侧有下降趋势。图6中显示的两种类型的点是本文所指的转折点。由于局部趋势的反向特征,可以通过左侧的局部趋势符号轻松区分这两个转折点。我们论文的目的是预测即将到来的工作负载点是否是一个转折点。

4 云趋势算法设计

本节介绍基于云特征的云趋势工作负载预处理和基于云特征增强的多任务LSTM预测的整体框架。

4.1 整体框架

本文提出的CloudTrend框架如图7所示,它由两部分组成:一个工作负载预处理模块和一个特征增强的多任务LSTM预测模块。模型的输入是云环境中服务器的追踪数据,这可以是由CPU、内存和其他工作负载组成的时间序列。工作负载预处理模块负责从原始工作负载时间序列中提取波动特征,并生成用于模型训练的标记数据,所有这些数据都被发送到后续的预测模块。用于工作负载转折点预测的特征增强多任务LSTM模块设置为预测转折点并输出相应的预测标签。关键步骤包括以下几点:

  1. 输入云服务器的工作负载追踪数据;
  2. 基于云特征的工作负载预处理;
  3. 执行特征增强的多任务LSTM预测;
  4. 输出云转折点集合。

以下各节将介绍这两个模块的关键步骤和算法。

4.2 基于云特征的工作负载预处理

我们使用监督学习模型预测云服务器工作负载转折点,因此需要包括特征和标签的监督数据。工作负载预处理模块从原始工作负载时间序列生成转折点标签,并同时提取观察窗口中的时间序列波动特征。本节介绍云工作负载时间序列的分割算法、我们的规则过滤转折点标签生成方法和波动特征提取方法。

4.3 将云工作负载时间序列分段以基于分段线性表示建模工作负载趋势

定义工作负载趋势是工作负载转折点预测中的一个关键问题。尽管有很多建模方法,我们选择了一种相对快速的方法,即使用分段线性表示(或分割)算法(PLR)[32],该算法被认为适用于在线预测[26]。时间序列线性分段算法的目标是将给定的时间序列X分割成一系列段

其中。在等式(4)中,Sj是工作负载时间序列的第j段,xij-1和xij是第j段的边界,下标ij的x代表在原始工作负载序列中的位置索引。核心思想是在每个段内拟合一条直线以最小化总拟合误差。简而言之,PLR在每一步使用最小二乘法拟合最佳直线。PLR分段算法通常根据边界分割策略分为三类:滑动窗口自顶向下自底向上[32]。

本文采用自顶向下方法[6]来分割工作负载时间序列,这已被证明是描述局部趋势的好方法。自顶向下分割的复杂度为。[6]仅根据前一片段和当前片段的端点值的大小标记了转折点。然而,PLR仅基于最小拟合误差原则进行边界分割,并不能保证边界点两侧的斜率相反,即趋势相反。因此,本文认为段的边界只是转折点的候选集需要根据两侧端点值的大小进行过滤,以确保两侧有相反的趋势。假设使用PLR分割出三个连续的线段:Sj-1 = {xij-2 ... xij-1}, Sj = {xij-1 ... xij}, Sj+1 = {xij ... xij+1}。xij-1对应于第j段Sj的左边界,xij对应于第j段Sj的右边界。为了更好地理解,我们绘制了相应的分段示意图,如图8所示。这些点的标签在等式(5)和(6)中定义:

在上述等式中,标签1表示转折点;标签0表示正常点(非转折点)。通过计算左右相邻点和点的大小,我们确保该点是正确的峰值或谷值点。

给定历史观察窗口中的工作负载时间序列xt = (xt-w+1, xt-w+2, ... , xt),其中工作负载定义为某一资源的利用率,例如CPU利用率,工作负载转折点预测的目标是学习转折点指示函数yt = f(xt)以判断点xt是否为工作负载时间序列中的转折点,yt ∈ {0, 1},yt = 0表示xt不是转折点,yt = 1表示xt是转折点。w是历史观察窗口的大小(与第4.5节中的特征观察窗口不同),表示用于预测转折点的历史工作负载数据量。示意图如图9所示。

工作量转折点预测示意图。空心点表示已知的当前点xt,虚线表示未知的未来工作负荷趋势。历史观测窗口w的大小设置为3。

总之,定义为局部趋势变化点[26],转折点筛选通常需要线性分段算法(PLR)[32]。我们采用自顶向下方法递归分割工作负载时间序列。为了充分考虑给定时间序列的每一个可能的分割位置,首先,我们设置一个适当的阈值并遍历整个时间序列,除了两端(我们至少需要为两个点拟合一条线)。我们遍历每一个可能的位置,使用当前位置和两端(在后续迭代中为子端)作为新段的端点。然后,我们拟合一条线并使用最小二乘法来最小化拟合误差,这也给出了下一次迭代的最佳位置。如果误差超过阈值,则需要使用自顶向下算法递归分割新段,直到所有段的拟合误差都小于给定的阈值。自顶向下PLR的最终结果是Xseg = {S1, S2 ... Sj ... SN},如等式(4)所示。

4.4 基于过滤规则生成转折点标签

如上一节所述,PLR生成的段边界不一定是转折点。因此,执行无关点的过滤操作是很重要的,但这一步骤经常被现有研究忽略。本文提出了一种基于过滤规则的转折点标签算法,其复杂度为O(n),如算法1所示。过滤规则如等式(5)、(6)和第4.3节所述。

经过PLR分段后,从原始服务器工作负载时间序列X = (x1, x2, ... xT)中获得一系列段Xseg。具体来说,Xseg是一系列向量的序列,由每个段的左右端点组成Xboundary = {<x1, xi1>, ... , <xiN-1, xiN>},就像图8中的示例所示。Xseg是过滤算法的输入,输出Ylabel是每个时刻xi的标记序列。由于第一个段的左端点是起始位置,第1行将此点的标签设置为0;第2行开始遍历可能的段点序列;第3和第4行获取两个连续段的端点,其中前一个段的右端点和下一个段的左端点重合记录为x1。第5至第13行获取三个连续的端点,并通过比较它与其他两点x0和x2的值来判断中间值x1是否为转折点。如果x1是这三个点中的最小值或最大值,则将其标记为转折点;否则,它是非转折点。最后,我们获得每个二进制段组的标签。其他点(X/[Xboundary])被标记为0,从而获得整个工作负载标签序列。

4.5 基于滑动窗口的序列特征提取

如文献[6]、[17]中讨论的,云环境中工作负载的时间序列特征通常在固定大小n的时间窗口内提取,这称为特征观察窗口。在时间t,特征观察窗口中的工作负载数据可以表示为(xt-n+1; xt-n+2 ... ; xt)。这一步骤的目的是从原始数据中提取反映工作负载趋势的构建特征,不同的特征揭示了不同的趋势。因此,我们的模型可以更好地理解工作负载的趋势,并执行更高的预测准确性。在本文中,应用了一种基于窗口的方法来提取工作负载的局部趋势特征。

使用长度为n的特征观察窗口,我们的方法可以从序列(xt-n+1; xt-n+2; ... ; xt)中提取3个基本特征和4个波动特征,其中xt是每个时刻的原始工作负载数据。文献[6]仅使用由xt确定的单个时间窗口内的特征。然而,云计算系统的变化是惯性的,下一时刻的工作负载趋势可能会受到前几个时刻波动特征的影响。一个明智的方法是使用前一段时间w内的特征序列,并考虑原始工作负载序列。我们在此引入历史观察窗口的概念,以定义预测的有效特征序列间隔,w是考虑序列建模(第4.3节)的历史观察窗口大小,它反映了特征对预测的影响范围。应当注意,w不必然等于n,其中n是提取波动特征的特征观察窗口的大小。为了构建训练样本,需要根据w切割特征序列和原始工作负载序列。两个序列每隔w时间步被划分为一个样本。每一步之后,窗口向前滑动一个单位,如图7右端最右侧虚线框的左端所示。

4.6 基于多任务LSTM预测模型通过云特征增强预测转折点

我们首先定义历史观察窗口中的原始工作负载序列X为方程(7):

与原始工作负载序列Xw不同,提取的特征序列Ft包含更丰富的高级波动特征。设特征序列为,其中w代表历史观察窗口的大小,d是特征数量。Ft的每一行是一个特征的序列。例如,,其中Ftmsdc包含所有fmsdc,Ftmsdc反映了工作负载加速度(参见第3.1节)的变化模式。

我们分别对特征序列和原始工作负载序列进行建模,并将这两个特征的建模过程视为独立任务。考虑到LSTM[33]在捕获长期依赖性方面的杰出性能,分别使用两个独立的LSTM网络分别对原始工作负载序列和特征提取序列进行处理。如方程(8)所示,输入xt是时间t的原始工作负载LSTMraw原始序列LSTM编码器;输出hrt是此时刻的隐藏层表示,其中融合了先前的原始序列信息。输入ft是时刻t的特征观察窗口中提取的特征向量LSTMfeature特征LSTM编码器;输出hft是此时刻的隐藏层表示,其中融合了先前的特征序列信息。如图7所示,原始序列LSTM编码器和特征LSTM编码器是相应的部分。

此外,考虑到本文提出的四个波动特征主要衡量工作负载趋势和变化程度,相同的特征值基于不同的原始工作负载值可能揭示不同的含义。例如,当工作负载较重时,frsi的大值可能表明上升趋势接近上限,因此工作负载未来可能显示下降趋势;当工作负载较低时,frsi的大值可能表明工作负载尚未达到最大值,因此它可能会继续上升。不同的原始工作负载值相当于不同的“参考点”,特征值会在这些参考点下添加新的隐藏特征。为了捕获通过两个序列交互生成的隐藏特征并实现特征增强的效果,我们使用另一个LSTM层显式融合每个时间步的原始序列LSTM编码器和特征LSTM编码器的隐藏层输出。结构如图10所示。

如图10所示,hrt-w+1; hrt-w+2 ... hrt是每个时间步骤的原始序列LSTM编码器产生的隐藏层表示,而hft-w+1; hft-w+2 ... hft是特征LSTM编码器在每个时间步骤产生的隐藏层表示。这两种表示被用作另一个LSTM的输入进行特征融合。融合层的每个时间步的输入为。在最后一个时间步,整个序列的隐藏层表示为,其中hrt是原始工作负载序列的隐藏层表示,hft是特征序列的隐藏层表示,而hut是融合层的前置隐藏层表示。最后,使用带有sigmoid激活函数的单层神经网络表示为,得到转折点概率值。

5 实验与结果分析

提出的方法的实验验证分为三个部分:1) 波动特征的有效性实验:为了验证本文提出的转折点波动特征的有效性,首先在[6]中采用的传统机器学习模型上进行了比较实验;2) 特征增强多任务LSTM模型有效性的实验:为了验证本文提出的模型的性能,与传统机器学习模型进行了比较实验;3) 模型简化实验:我们移除额外的特征序列和多任务结构进行实验,验证模型各个模块的有效性。所提出的云工作负载预测模型是基于Intel(R) Core(TM) i7-9750H CPU,时钟速度2.60 GHz,16.0 GB RAM,以及NVIDIA GeForce GTX 1060 with Max-Q Design GPU实现的。实验在Python版本3.6上进行,使用TensorFlow-gpu 1.10.0, Scikit-learn 0.23.1, Keras 2.2.4, Talib 0.4.17, 和 Tsfresh 0.11.2。

5.1 云工作负载追踪数据

为了评估所提出模型的性能,我们在开源的Google云服务集群追踪数据上进行了实验。该追踪数据是Google在2011年发布的,是29天内超过670,000个作业的实际运行追踪日志,包含了在12,500多个节点上大约25百万个任务的信息[16],[28]。系统每5分钟报告每个任务的资源使用情况,包括CPU、RAM等。在本文的实验中,主要考虑了CPU使用情况。给定时间点的服务器工作负载是该特定节点上所有运行任务的总工作负载;因此,我们累计了每个节点上每个时刻所有任务的资源消耗作为工作负载。每个节点共有8352个样本数据点。在本文中,随机选择了ID为207776314 (M1)、908054 (M2)和1237805 (M3)的三个节点作为三个实验数据集。由于每个数据集包含8352个点,如果PLR算法的分割阈值太大,转折点会非常少,无法支持模型的训练。相反,阈值太小将导致最终的转折点过多,失去了转折点表征趋势的效果。在不同阈值0.1, 0.01, 0.001, 0.002, 0.003, 0.0015, 和0.0005的实验中,0.0015结果达到了最佳平衡——分割适当且预测准确。因此,我们的实验中算法的分割和标记阈值为0.0015。PLR的实现来自Keogh[32]等人。之后,每个数据集被划分为训练集、验证集和测试集,按时间顺序排列。前80%的数据用于训练,然后10%的数据用于验证参数,最后10%的数据用于测试。

此外,我们还在属于Grid workload Archive [30]的高性能计算(HPC)网格工作负载和属于Alibaba Open Cluster Trace [29]的Web追踪上进行了实验。对于HPC追踪,我们累积了每个周期内所有作业使用的CPU时间作为工作负载,用作数据集(GA),共有7369个点。对于Ali追踪,我们首先选择了ID为20的节点(ALI)并每10秒提取一次CPU利用率作为实验数据集,共有8628个点,以及属于100个ID的平均数据集(AVE)。类似于Google集群追踪,我们在数据集GA、ALI和AVE上尝试了相同的阈值,并为每个选择了合适的阈值——分别为0.0015、0.0015和0.00005。特别是在数据集AVE上,属于ALI追踪的100个ID的平均值使CPU利用率的幅度和频率降低;因此,我们在这个数据集上使用了更小的阈值0.00005,使分割算法更敏感,以便最终的转折点数量不会太少。PLR的实现和训练与测试数据的划分与Google集群追踪保持一致。

标记训练集的效果如图11a、11b和11c所示。红色三角形代表标记的转折点,蓝色点代表普通点。

5.2 训练方法和评价指标

我们使用小批量随机梯度下降和Adam优化器来训练模型。学习率设置为0.001,批量大小设置为64,如Adam优化器推荐的那样。通过标准反向传播学习参数,损失函数是二元交叉熵:

N是样本总数,yn是样本对应的真实标签,是模型对样本的输出,表示将样本预测为正例的概率。

F1分数被视为模型评估的主要指标,由精确度和召回率计算得出。精确度反映了分类器的分类准确性,表示在所有被预测为正的样本中正确预测的样本比例。召回率反映了分类器的召回能力,表示在所有正样本中被正确预测的样本比例。如下方程(10)所示,精确度和召回率是从三个指标计算得出的:真正例(TP),假正例(FP)和假负例(FN)

5.3 基线算法

在选择基线算法时,我们考虑了三个方面。首先,我们将我们的模型与当前的经典模型,如LR和WSVM进行比较,以验证FETM-LSTM的有效性。其次,我们比较增加波动特征前后的模型,以验证本文中云工作负载波动特征的有效性。我们声称使用表1中列出的所有7个特征作为输入的基本算法被形成为基线-波动(LR-Fluctuant等)。第三,我们对FETM-LSTM的核心是LSTM的模型简化实验,与更基本的LSTM模型进行比较,以验证FETM-LSTM的特征增强特性和多任务结构的有效性。参数和特征观察窗口的设置保持不变。基于上述分析,选择的基线模型如下:

LR-BasicLR-Fluctuant。逻辑回归(LR)是一种广泛用于文本分类、欺诈检测等领域的线性分类方法。LR-Basic使用表1中列出的三个基本特征作为输入。对于此模型中的正则项参数C,我们将搜索范围设置为1 × 10^-4; 1 × 10^-3; 1 × 10^-2; 1 × 10^-1; 0.5; 1; 10; 15; 20; 100; 对于特征观察窗口长度n,我们将搜索范围设置为3, 6, 9, 18,并取最佳F1分数的参数值组合。

WSVM-BasicWSVM-Fluctuant。本文中,使用表1中列出的基本特征作为输入的加权SVM被称为WSVM-Basic。详细内容在第2节中描述。正样本和负样本的权重被设置为训练集中样本数量的倒数比,使用RBF核函数。惩罚参数C和核函数系数gamma的搜索范围与LR相同。

P-LSTMS-LSTM。我们将仅使用原始工作负载序列作为输入的LSTM模型称为P-LSTM模型。为了验证FEMT-LSTM模型的特征增强效果,P-LSTM模型被用作基线。仅使用单独的LSTM进行特征提取的模型被称为S-LSTM,即每个时间步的输入是对应时刻的所有七个特征。S-LSTM也被采用为另一个基线,以验证FEMT-LSTM模型的多任务结构的效果。

在P-LSTM、S-LSTM和FEMT-LSTM中使用的LSTM隐藏层神经元数量被设置为256。特征观测窗口的大小被设定为与WSVM-Fluctuant相同的大小n。历史观测窗口的大小w被设置为5或10。

5.4 实验结果与讨论

在三个数据集上的比较结果如表2和图12所示。FEMT-LSTM在所有六个数据集中获得了最高的F1分数。图12a展示了部分模型的F1分数。代表FEMT-LSTM的深色线显著高于其他模型。与我们的目标模型:WSVM-Basic相比,FEMT-LSTM在六个数据集上平均提高了6.6%,分别提高了6.6%,5.7%,7.6%,6.0%,4.2%,9.5%。此外,我们记录了在运行不同模型时AVE数据集消耗的时间,如表3所示。

5.4.1 波动特征的有效性分析

图12b展示了表2前半部分的四组实验比较,它比较了在添加波动特征前后LR和WSVM的F1值。可以看出,具有波动特征的机器学习模型比仅使用基本特征的模型更好。与WSVM-Basic在六个数据集上比较,添加四个波动特征后,WSVM-Fluctuant的性能分别提高了2.3%,3.0%,2.5%,5.8%,4.1%,0.7%,平均增加了3.1%。在将4个波动特征添加到LR-Basic之后,尽管在M1、ALI和AVE数据集上的表现略低于基本特征的LR(F1分数分别降低了0.4%,0.8%,和0.4%),但在其他三个数据集上分别增加了1.4%,1.3%和18%,因此平均增加了3.2%。所有这些变化表明,我们提出的特征对于转折点预测是有效的。同时,可以发现LR的性能较差。这是因为LR模型是一个简单的线性模型。当特征数量少且样本难以区分时,其效果往往不如使用核函数的WSVM模型。WSVM使用径向基函数作为核函数,将原始输入数据投影到高维特征空间中,以便更好地区分原始样本点。

5.4.2 特征序列的有效性分析

为了说明使用滑动窗口方法提取的特征序列的有效性,图12c展示了P-LSTM和S-LSTM之间的实验比较,它们使用滑动窗口提取序列特征,以及WSVM,它使用单一窗口提取特征。与将特征在单一时间窗口中作为输入的传统机器学习模型相比,将一系列特征作为输入以考虑特征窗口之间的相关性的模型有更好的性能。两个LSTM基线模型,P-LSTM和S-LSTM,在M2和M3数据集上均优于WSVM-Fluctuant,分别在M2上增加了1.8%和2.2%,在M3上增加了3.6%和0.11%。根据图12c中的数据,WSVM-Fluctuant、P-LSTM和S-LSTM在六个数据集上的平均F1值分别为0.5291、0.5216和0.5379。与使用所有7个特征形成特征序列的S-LSTM相比,P-LSTM仅使用原始工作负载序列并且不考虑其他六个特征序列之间的相关性,因此P-LSTM的效果不如S-LSTM。此外,S-LSTM的性能优于WSVM-Fluctuant,这表明使用多个特征窗口并将特征组合成一个序列可能会比仅使用单一窗口提取特征的模型取得更好的结果

5.4.3 简化实验分析

为了说明模型结构的有效性,图12d展示了简化实验的结果。与仅使用平原原始工作负载序列作为输入的P-LSTM相比,FEMT-LSTM在六个数据集上的得分分别提高了10.6%,0.9%,1.4%,0.7%,0.2%,和12.4%,平均增加了4.4%。这表明在集成手工设计的波动特征之后,通过学习特征序列之间的交互关系可以增强模型性能。同时,可以看出FEMT-LSTM模型优于S-LSTM(没有单独的结构),并且在六个数据集上分别提高了5.1%,0.5%,4.9%,0.2%,0.3%,和5.4%点,平均增加了2.7%。因为原始工作负载序列和特征序列有不同的含义,即特征序列是基于原始序列计算得出的,并描述了人为指定指数的变化,通过参考原始序列获取更有效的信息,因此单独建模然后合并它们的策略是有效的

6 结论

本文提出了CloudTrend——一种云工作负载转折点预测方法。CloudTrend采用了基于规则过滤的PLR(分段线性表示算法)和特征增强LSTM的云特征增强深度学习方法。它能够巧妙地通过引入时间维度来捕捉云特征中的重要波动,从而提高性能,并且能够很好地适应云环境。

我们设计了度量标准,并进行了全面研究,以评估我们的方法在广泛的大规模真实世界云工作负载(例如,大规模集群追踪、Web追踪和HPC工作负载追踪)中的性能和开销。实验表明,我们预测方法的核心算法,FEMT-LSTM,至少提高了6.6%的F1分数。与其他现有方法相比,它在捕捉波动特征和长期过去信息方面也表现良好。

总之,CloudTrend的分析和评估结果表明,我们的方法能够解决具有动态和高变化性质的真实世界云工作负载的趋势预测问题。这项工作将帮助其他云研究人员和实践者设计新的基于时间序列分析的预测方法,以自动扩展云资源。将CloudTrend应用于大规模资源管理和资源自动扩展平台是我们未来的工作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/375401.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

选择大语言模型:2024 年开源 LLM 入门指南

作者&#xff1a;来自 Elastic Aditya Tripathi 如果说人工智能在 2023 年起飞&#xff0c;这绝对是轻描淡写的说法。数千种新的人工智能工具被推出&#xff0c;人工智能功能被添加到现有的应用程序中&#xff0c;好莱坞因对这项技术的担忧而戛然而止。 甚至还有一个人工智能工…

【网站项目】038汽车养护管理系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

sql实现将某一列下移一行

问题 实现如下图所示的 max_salary 下移一行 方法&#xff1a;使用开窗函数 select max_salary, max(max_salary) over(order by max_salary asc rows between 1 PRECEDING and 1 PRECEDING) max_salary_plus from jobs

电商小程序02数据源设计

上一篇我们讲解了电商小程序的需求分析&#xff0c;分析了需要具备的功能并且绘制了系统原型。有了原型之后下一步的事情就是根据原型来设计数据源。 数据源就像盖房子打地基一样&#xff0c;地基打不好&#xff0c;楼可能就盖不高&#xff0c;盖起来要再想调整就比较困难。 …

使用Qt创建项目 Qt中输出内容到控制台 设置窗口大小和窗口标题 Qt查看说明文档

按windows键&#xff0c;找到Qt Creator &#xff0c;打开 一.创建带模板的项目 新建项目 设置项目路径QMainWindow是带工具栏的窗口。 QWidget是无工具栏的窗口。 QDuakig是对话框窗口。创建好的项目如下&#xff1a; #include "widget.h"// 构造函数&#xff…

Windows系统安装Flink及实现MySQL之间数据同步

Apache Flink是一个框架和分布式处理引擎&#xff0c;用于对无界和有界数据流进行有状态计算。Flink的设计目标是在所有常见的集群环境中运行&#xff0c;并以内存执行速度和任意规模来执行计算。它支持高吞吐、低延迟、高性能的流处理&#xff0c;并且是一个面向流处理和批处理…

03 动力云客项目之登录功能后端实现

创建项目 使用Spring initializr初始化项目 老师讲的是3.2.0, 但小版本之间问题应该不大.

14.0 Zookeeper环球锁实现原理

全局锁是控制全局系统之间同步访问共享资源的一种方式。 下面介绍zookeeper如何实现全民锁&#xff0c;讲解他锁和共享锁两类全民锁。 排他锁 排他锁&#xff08;Exclusive Locks&#xff09;&#xff0c;又被称为写锁或独占锁&#xff0c;如果事务T1对数据对象O1加上排他锁…

2023年09月CCF-GESP编程能力等级认证C++编程一级真题解析

一、单选题(共15题,共30分) 第1题 我们通常说的“内存”属于计算机中的( )。 A:输出设备 B:输入设备 C:存储设备 D:打印设备 答案:C 第2题 以下C++不可以作为变量的名称的是( )。 A:redStar B:RedStar C:red_star D:red star 答案:D 第3题 C++表达式…

Linux C/C++ 原始套接字:打造链路层ping实现

在C/C中&#xff0c;我们可以使用socket函数来创建套接字。我们需要指定地址族为AF_PACKET&#xff0c;协议为htons(ETH_P_ALL)来捕获所有传入和传出的数据包。 可以使用sendto和recvfrom函数来发送和接收数据包。我们需要构建一个合法的链路层数据包&#xff0c;在数据包的头…

C++ //练习 4.23 因为运算符的优先级问题,下面这条表达式无法通过编译。根据4.12节中的表(第147页)指出它的问题在哪里?应该如何修改?

C Primer&#xff08;第5版&#xff09; 练习 4.23 练习 4.23 因为运算符的优先级问题&#xff0c;下面这条表达式无法通过编译。根据4.12节中的表&#xff08;第147页&#xff09;指出它的问题在哪里&#xff1f;应该如何修改&#xff1f; string s "word"; stri…

树莓派4b连接WQ9201外置无线网卡命令行配置详解

树莓派4B连接WQ9201无线网卡 接线方式 蓝色的线来连接树莓派和WQ9201demo板&#xff0c;USB接树莓派的USB接口&#xff0c;microUSB一端接demo板靠近天线部分的microUSB口。 驱动和固件准备 驱动直接放在树莓派系统的任意目录&#xff0c;目前配置则是将驱动放在树莓派的主目…

【漏洞复现】电信网关配置管理系统SQL注入漏洞

Nx01 产品简介 电信网关配置管理系统是一个用于管理和配置电信网络中网关设备的软件系统。它可以帮助网络管理员实现对网关设备的远程监控、配置、升级和故障排除等功能&#xff0c;从而确保网络的正常运行和高效性能。 Nx02 漏洞描述 电信网关配置管理系统存在SQL注入漏洞,攻…

【华为云】云上两地三中心实践实操

写在前面 应用上云之后&#xff0c;如何进行数据可靠性以及业务连续性的保障是非常关键的&#xff0c;通过华为云云上两地三中心方案了解相关方案认证地址&#xff1a;https://connect.huaweicloud.com/courses/learn/course-v1:HuaweiXCBUCNXI057Self-paced/about当前内容为华…

《动手学深度学习(PyTorch版)》笔记7.4

注&#xff1a;书中对代码的讲解并不详细&#xff0c;本文对很多细节做了详细注释。另外&#xff0c;书上的源代码是在Jupyter Notebook上运行的&#xff0c;较为分散&#xff0c;本文将代码集中起来&#xff0c;并加以完善&#xff0c;全部用vscode在python 3.9.18下测试通过&…

苹果macbook电脑删除数据恢复该怎么做?Mac电脑误删文件的恢复方法

苹果电脑删除数据恢复该怎么做&#xff1f;Mac电脑误删文件的恢复方法 如何在Mac上恢复误删除的文件&#xff1f;在日常使用Mac电脑时&#xff0c;无论是工作还是娱乐&#xff0c;我们都会创建和处理大量的文件。然而&#xff0c;有时候可能会不小心删除一些重要的文件&#x…

Stata学习(1)

一、五大窗口 Command窗口&#xff1a;实现人机交互 来导入一个自带数据&#xff1a; sysuse是导入系统自带的数据&#xff0c;auto导入该数据的名称&#xff0c;后面的clear是清除之前的数据 结果窗口&#xff1a;展示计算结果、查找功能 在Edit的find可以实现查找功能&#…

企业飞书应用机器人,使用python发送图文信息到群

企业飞书应用的自动化&#xff0c;需要创建企业应用&#xff0c;应用开通机器人能力&#xff0c;并获取机器人所需的app_id与app_secret&#xff08;这一部分大家可以在飞书的控制台获取&#xff1a;https://open.feishu.cn/api-explorer/&#xff09; 文章目录 步骤1&#xff…

第 383 场 LeetCode 周赛题解

A 边界上的蚂蚁 模拟 class Solution { public:int returnToBoundaryCount(vector<int> &nums) {int s 0;int res 0;for (auto x: nums) {s x;if (s 0)res;}return res;} };B 将单词恢复初始状态所需的最短时间 I 枚举&#xff1a;若经过 i i i 秒后 w o r d w…

c语言--指针运算

目录 一、指针-整数二、指针-指针2.1条件2.2两个指针指向同一块空间代码2.2.1运行结果 2.3两个指针指向不同块空间代码2.3.1运行结果 2.4总结 三、指针的关系运算3.1代码3.1.1运行结果3.1.2分析 一、指针整数 用数组举例&#xff1a; 因为数组在内存中是连续存放的&#xff0c…