目录
目录README.md
云计算智能运维原理和实验说明文档

选取开源数据集,开展智能运维实验

数据集:

AIOps开源数据集GAIA

实验内容:

GAIA数据集任务一、二

  • 任务 1:指标异常检测

    对于具有异常行为的给定指标,数据集为每个时间点序列提供标签(0 表示正常,1 表示异常)。 通过算法准确判断时间序列数据中的正常数据点和异常数据点。数据集中,有不同类型的数据类型,例如周期性数据、固定数据、具有变化点的数据等。参与者需要准确识别上述不同数据类型下的异常值。 使用数据:./data/GAIA/companion_metric_detection

  • 任务 2:指标预测

    在收集用于预测的目标指标之前,参与者需要估计是否可以预测指标以及在多大程度上可以预测。 在我们的数据集中,有不同类型的数据类型,例如周期性数据、线性数据、平稳数据、具有变化点的数据等。 这里的指标预测任务是,对于来自硬件监控或业务监控的给定客户感兴趣的指标属于上述数据集,参与者需要进行时间序列预测,并尽可能准确地预测他们的未来,给定历史数据集和可能影响预测的任何未来事件的知识。
    使用数据:使用数据:./data/GAIA/companion_metric_forecast

GAIA数据集说明

GAIA来源介绍

GAIA(智能运维领域通用公开数据集,Generic AIOps Atlas)是用于分析如异常检测,日志分析,故障定位等操作问题的公开数据集。GAIA数据集中包含两个来源的数据:

  • Mirco_SS:源于一类二维码登录的相关数据,包括metrictracebusinessrun四类数据。
  • companion Data:来自与云智慧合作的一些企业的实际应用数据,包括metric_detectionmetric_forecastlog三类数据。

GAIA数据文件结构

companion Data数据的根目录为./data/GAIA/。在本次实验中,根据需要,仅使用了companion Data数据中的metric_detectionmetric_forecast两类,对应体目录如下:

./data/GAIA/companion_metric_detection文件数据说明:

  • 数据由若干csv文件组成,每个文件中包含3列,分别对应了时间戳(timestamp)、该时间下的值(value)、是否异常(label)

./data/GAIA/companion_metric_forecast文件数据说明:

  • 数据由若干csv文件组成,每个文件中包含2列,分别对应了时间戳(timestamp)、该时间下的值(value)

每个目录下包括7个子目录,对应了7种类型的KPI。对应子目录下为若干文件,分别表示在某个时间下对应KPI的值。

实验中使用的平台信息

硬件平台:Intel i7-13700HX、4060laptop、32GB主存

操作系统:Windows 11 22H2 下的 WSL2 Ubuntu 22.04

编译环境:

  • Python 3.8.10:AutoGluon 0.8.2[^1]、scikit-learn 1.2.2、panda 0.3.1、numpy 1.24.2

实验选用的人工智能训练方法

本实验使用AutoML框架autogluon[^1]进行机器学习来训练模型,该框架是由Amazon的研究团队提出的。

autogluon通过系统地综合多个模型并叠加分层,在模型选择、超参数选择上能够取得极好的预测效果。该方法的作者称autogluon能够在Kaggle比赛上以4小时的训练时间,取得前1%的成绩。

训练和测试

在异常指标检测任务(任务1)中,实际上宁可出现错误的异常报告,也要减少漏报。为了贴合实际需求,应当尽可能的提高召回率(recall, R值)。此外,我们还使用了正确率和精准率来衡量训练效果

在KPI预测任务(任务2)中,我们使用模型预测的R2系数和均方根误差来衡量预测效果。

召回率(recall):值表示对于样本中的正例,有多少是能够被成功预测的。本问题中表示所有的异常中,成功预报的概率。

正确率(accuracy):在所有样本中预测正确的个数。本问题中表示对于该数据是否异常判断正确的概率。

精准率(precision):在预测为真的样本中,确实为真的概率。本问题中表示对于报告异常的数据中确实存在异常的概率。

训练和测试说明

对于不同的KPI类型使用同样的模型和方法进行训练。 训练中,我们稍作了数据处理,利用了当前时间点之前的数据。

例如预测时间20000时的KPI是否异常,我们将会在训练中将使用20000、19980、19960、19940、19920、19900时的KPI数值作为其特征来进行预测。

运行说明

相关代码位置为./src/AIOps Experiments,在命令行中执行如下指令运行任务1的训练代码:

python task1.py

该命令可以后加参数 --task=XX1时执行任务1,为2时执行任务2,默认将依次执行。

该代码将重新训练,训练后的模型将保存在./AutogluonModels中,可以将代码中:

predictor=TabularPredictor(label=label, verbosity=0).fit(train_data)

部分替换为:

predictor = TabularPredictor.load('./AutogluonModels/********') 

来实现使用已经训练完成的模型

结果说明

在运行和测试中,其训练效果的各项指标极好(也充分体现了autogluon的优越性)。

在任务一中,召回率可高达99%,精准度大于99%等 在任务二中,其R2极为接近1,表示我们的训练模型的预测效果近似于函数效果。

开发智能运维原型演示系统

Gradio是一个用于快速构建交互式应用程序的开源Python库。它可以帮助开发者轻松地将机器学习模型集成到用户友好的界面中,从而使模型更易于使用和理解。本实验中的演示系统基于gradio开发,详细信息请前往官网了解。

安装gradio

通过以下命令即可方便地完成gradio的安装:

pip install gradio==3.23 -i  https://pypi.python.org/pypi

运行说明

在浏览器中打开命令行中给出的端口后,输入为数据集的路径。以本实验中的测试数据为例,在本项目的根目录中启动脚本时,可以通过在输入窗口中输入 ./data/GAIA/companion_metric_detection/changepoint_data 向模型传入数据,点击summit,输出窗口中会给出结果。 可换行输入多组数据集的路径,输出窗口会给出每组数据的结果,同时将所有数据绘制成一张折线图。

参考文献

[^1]: N. Erickson et al., “AutoGluon-Tabular: Robust and Accurate AutoML for Structured Data.” arXiv, Mar. 13, 2020. doi: 10.48550/arXiv.2003.06505.

关于

分布式计算环境课程实验作业——大作业6 云计算智能运维原理与实验

43.4 MB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

©Copyright 2023 CCF 开源发展委员会
Powered by Trustie& IntelliDE 京ICP备13000930号