返回列表

2024天池云原生编程挑战赛 赛道一参赛攻略 一只羊

2024天池云原生编程挑战赛-赛道1:构建多模态模型,生成主机观测指标 | 532202

开始: 2024-08-07 结束: 2024-08-26 云计算与云原生 数据算法赛
2024天池云原生编程挑战赛 · 赛道一参赛攻略 · 基于多源数据融合的高效资源预测
🏆 2024天池云原生编程挑战赛 · 赛道一 👥 一只羊 📍 广东省 👍 2 👁️ 468

2024天池云原生编程挑战赛 赛道一参赛攻略 一只羊

基于多源数据融合的高效资源预测 · Log Parsing + 特征融合 + LightGBM

参赛攻略:基于多源数据融合的高效资源预测

背景介绍:
在云计算时代,对云资源的监控和优化是至关重要的。因此,此次比赛的目标是构建一个模型,能够根据机器上运行的不同类型的任务,预测云主机在不同资源(如CPU、内存、网络、磁盘等)上的监控指标。这些指标对于理解系统性能、优化资源分配和预防系统故障都至关重要。

这个比赛提供了不同模态的数据,包括节点配置信息、节点资源监控指标、任务事件序列数据、网络类型的故障注入数据。而我们面临的任务是一个回归预测任务,即根据给定时间段的任务序列数据,预测该时间段内各个节点在不同资源上的监控指标数值。最后通过计算各个指标真实值和预测值之间的误差衡量预测精度。

核心挑战:
在介绍我们的方法之前,我们首先来分析下赛题提供的数据,挖掘其中的挑战。

  • 从提供的任务负载数据上,我们可以发现,主办方运行的任务事件类别多样,命令复杂多变(问题)。这增加了我们挖掘不同类型任务的特征的难度(挑战)。为了应对这一挑战,我们采用了基于日志自动化模版提取的思路,设计了任务事件命令的特征自动提取方法。
  • 其次,我们可以发现不同类型的任务事件,数量非常不均衡(问题),这增加了我们训练一个有效模型的难度(挑战)。为了应对这一挑战,我们对数量过多的故障注入事件进行下采样,减少含有故障事件的监控时间点的数量。
  • 最后,我们发现,在同一时间点的任务事件数量、类型不一,这增加了我们进行任务序列特征处理的难度(挑战),因此我们对任务事件序列进行了特征融合。

解决方案:
我们采用了一个多模态的模型。在模型训练前,我们首先对各个任务事件进行特征提取,针对不同类型任务,采用不同方法提取任务命令的关键参数作为特征。此外,我们还考虑时间序列数据,提取时间相关的特征。然后我们进行任务事件序列提取,关联监控时间点和任务事件,提取发生在同一时间的任务事件序列。最后我们将同一时间的任务事件序列进行任务事件特征融合和特征选择,针对各个监控指标各训练一个LightGBM模型。

在任务事件特征提取方面,我们区分了命令模式固定的任务事件和命令模式随机的任务事件。
命令模式固定的任务事件,包括CPU、内存、磁盘、故障注入任务。我们发现,虽然这些任务事件,他们的命令模式相对固定,但是模式数量不同、任务类型数量多,逐一进行模式挖掘、匹配,需要消耗大量人工时间。因此,我们使用Log Parsing的方式,将任务命令当作日志,自动提取任务命令的模版,得到对应的数值特征。
针对命令模式随机的任务事件,主要是网络负载命令。这些任务命令多为列表,列表中元素数量不同、元素格式不同。因此,我们主要提取了列表的统计特征。
我们发现某些监控指标,如内存KBBuffers指标,随时间变化呈现出特定的规律。因此,我们采用了时间序列分析方法,计算从任务开始到当前时间点的时间差,以此作为时间特征。
在对各个任务命令进行特征提取后,我们需要获得发生在同一时间的所有任务事件,即提取任务事件序列。这一步的目的是将监控时间点与任务事件关联起来。

在构建我们的模型之前,特征预处理是一个至关重要的步骤。这一步确保了我们的数据不仅干净、一致,而且能够有效地支持模型学习。我们的特征提取主要包括三个关键步骤:任务事件特征融合、特征选择和下采样。

  • 首先由于任务事件序列的长度不一致,而模型难以处理变长序列的输入。因此,我们采用了特征融合技术。具体来说,我们将同一时间点的所有任务事件特征进行聚合,比如通过累加或平均等方法,以生成固定长度的特征向量。
  • 其次,在特征提取过程中,我们可能会得到大量的特征,但并非所有特征都对预测任务有实质性的帮助。有些特征可能是冗余的,甚至可能引入噪声,影响模型的性能。为了识别和保留最有用的特征,我们采用了基于皮尔逊相关系数的方法进行特征选择。皮尔逊系数能够量化特征与目标变量之间的线性相关性。我们计算每个特征与监控指标之间的皮尔逊系数,并设置一个阈值。只有那些相关性超过阈值的特征才会被保留。这种方法帮助我们构建了一个更加精简和高效的特征集。
  • 最后,在任务事件数据集中,我们发现,由于故障注入类型的任务非常频繁,在全量数据上训练这一模型,可能会过度拟合这些事件,而忽视了其他重要的信息。为了平衡不同类型任务事件的代表性,我们实施了下采样策略。具体来说,我们减少了在训练数据中故障注入类型事件的数量,使得模型能够更加关注那些信息丰富但数量较少的任务事件。

通过这些特征预处理步骤,我们确保了模型输入的质量和一致性,为后续的模型训练和预测打下了坚实的基础。这些方法不仅提高了模型的预测准确性,也增强了模型对新情况的适应能力。

在特征预处理之后,我们进入了模型训练阶段。这个阶段的目标是利用我们准备的数据来训练一个预测模型。由于提供的数据样本特征稀疏,使用基于树型的算法可以直接处理稀疏特征,而不需要进行额外的预处理或填充;而由于LightGBM在与其他基于树型的算法,训练效率高,因此,我们选择使用LightGBM作为我们的预测模型。

技术亮点:

  • 首先我们采用了基于Log Parsing的任务事件特征自动化提取方法,这大大提高了数据处理的效率和准确性。
  • 其次,我们利用皮尔逊系数进行特征与监控指标相关性的挖掘,这种方法帮助我们保留了对预测最有帮助的特征,从而提高了模型的预测效率。
  • 我们使用基于树的模型,这不仅提供了特征重要性评估,帮助我们理解了模型是如何做出预测的,以及各任务对资源利用率的影响。