机房里的未卜先知!PAKDD2021 第二届阿里云智能运维算法大赛启动

赛题介绍

在当今大规模数据中心中,内存类故障问题频发(尤其是内存故障引发的非预期宕机问题),会导致服务器甚至整个IT基础设施稳定性、可靠性的下降,最终对业务SLA带来负面影响。

近十年,工业界和学术界开展了一些关于内存故障预测相关的工作,但对工业级大规模生产环境下的内存故障预测的研究却很少。大规模生产环境业务错综复杂、数据噪声大以及不确定因素多,因此,能否提前准确预测内存故障已经成为大规模数据中心和云计算时代工业界需要研究和解决的重要问题之一。

本次大赛聚焦解决大规模生产系统中的内存故障预测问题,需解决数据噪声、正负样本不均衡、稀疏矩阵处理等技术问题,同时也要保障预测算法长期稳定有效。

本次大赛共分为竞赛和论文两个环节,每个环节独立设置评比流程和奖金。

赛题对象

大赛面向全社会开放,个人、高等院校、科研单位、企业、创客团队等人员均可报名参赛,组队上限 3 人。

注:

1)大赛组织机构单位中涉及题目编写、数据接触的人员禁止参赛。

2)阿里云员工,可参与排名,但不参与评奖及领取奖金。

赛事时间

初赛(A/B榜)(2021年1月29日-2021年3月25日,UTC+8)

  • 开放组队注册报名:1月29号

  • 开放A榜竞赛数据集:2月3号

  • 开放系统测评:2月8号

  • 开放B榜竞赛数据集:3月22号

复赛(2021年3月29日—2021年4月20日,UTC+8)

决赛答辩(4月29日(暂定),UTC+8)

  • 通知时间节点:4月23号

  • 提交答辩PPT截止时间:4月27日18:00前

  • 决赛入围选手设备联合调试:4月28日

  • 预计答辩时间:4月29日

线下论坛((暂定),UTC+8)

赛事奖金

决赛激励

  • 冠军:1支队伍,奖金USD 15,000

  • 亚军:1支队伍,奖金USD 8,000

  • 季军:1支队伍,奖金USD 5,000

(上述奖项以决赛的最终得分排名决定)

  • 最佳论文奖:2支队伍,奖金USD 1,000

(用于奖励优秀竞赛论文,具体论文评分规则后续给出)

阿里云招聘绿色通道

优秀参赛选手,阿里云招聘同等条件优先考虑。

论文环节

PAKDD2021 WORKSHOP(5月11日-5月14日,UTC+8)

  • 由于Covid-19疫情的影响,PAKDD2021 WORKSHOP计划线上举行, 预计总时长3个半小时,每个论文录用选手的分享时长为15分钟(10分钟介绍, 5分钟问答), 全程英文(PPT、演讲都需要英文)。

  • 论文录用的选手都需要参会分享,否则取消论文发表机会。

  • 相关参会费用由主办方承担。

Call for papers(2021年2月03日—2021年4月30日,UTC+8)

本次竞赛计划向选手征集优秀的竞赛论文, 创建本次比赛的论文集, 具体的关键时间节点如下:

  • 论文投稿开通日期,2021年2月3日。

  • 论文初稿截止日期,2021年4月24日。

  • 论文录用通知日期,2021年4月30日。

论文要求:

  • 篇幅8-10页,单栏格式,具体Latex模版见:http://www.springer.de/comp/lncs/authors.html 。

  • Paper中需要引用内存故障预测的数据集来源,地址为:待定。

  • 线下论文评审,我们会通过Emails的方式组织论文评审,每篇论文的审稿人为2-3人, 单盲。

  • 所有参加比赛的选手都可投稿。

注意点:

  • 计划和Springer合作一同创建论文集。

  • 论文集至少需要收录8篇选手论文,否则会存在形成不了论文集的风险。

  • 若有时间点和论文集的变动,会第一时间告知参赛选手。

获奖注意事项

  • 若有线下论坛(视疫情),则竞赛获奖且受邀队伍必须参加。

  • 若进入决赛的队伍不参加PAKDD2021会议的workshop,出于交流分享的精神,主办方有权将该队伍方案在workshop范围内进行分享和讨论。

  • 不能以任何形式恶意扰乱比赛秩序。

  • 上述若有一处不符合要求,举办方有权取消获奖资格及奖金。

注:提交格式、数据明细和评价细节见赛题说明

重要时间节点如下:

报名方式

截止报名及组队变更时间:2021 年 3 月 21 日10:00(UTC+8)。

参赛队伍 1-3 人组队参赛,每位选手只能加入一支队伍。

确保报名信息准确有效,否则会被取消参赛资格及激励。

报名方式:用淘宝或阿里云账号登入天池官网,完成个人信息注册,即可报名参赛。

Baseline

向下滑动查看完整baseline

import pandas as pd
import numpy as np
import os
from sklearn import svm


kernel_log_data_path = 'memory_sample_kernel_log_round1_a_train.csv'
failure_tag_data_path = 'memory_sample_failure_tag_round1_a_train.csv'
PARENT_FOLDER = 'data' # 数据存放目录


# 计算每个agg_time区间的和
def etl(path, agg_time):
    data = pd.read_csv(os.path.join(PARENT_FOLDER, path))
    # 降低时间精度 向上取整
    data['collect_time'] = pd.to_datetime(data['collect_time']).dt.ceil(agg_time)
    group_data = data.groupby(['serial_number','collect_time'],as_index=False).agg('sum')
    return group_data


# 设置聚合时间粒度
AGG_VALUE = 5
AGG_UNIT = 'min'
AGG_TIME = str(AGG_VALUE)+AGG_UNIT


# 示例仅使用了kernel数据
group_min = etl(kernel_log_data_path, AGG_TIME)


failure_tag = pd.read_csv(os.path.join(PARENT_FOLDER,failure_tag_data_path))
failure_tag['failure_time']= pd.to_datetime(failure_tag['failure_time'])


# 为数据打标
merged_data = pd.merge(group_min,failure_tag[['serial_number','failure_time']],how='left',on=['serial_number'])
merged_data['failure_tag']=(merged_data['failure_time'].notnull()) & ((merged_data['failure_time']
-merged_data['collect_time']).dt.seconds <= AGG_VALUE*60)
merged_data['failure_tag']= merged_data['failure_tag']+0
feature_data = merged_data.drop(['serial_number', 'collect_time','manufacturer','vendor','failure_time'], axis=1)


# 负样本下采样
sample_0 = feature_data[feature_data['failure_tag']==0].sample(frac=0.1)
sample = sample_0.append(feature_data[feature_data['failure_tag']==1])


# svm模型训练
clf = svm.SVC()
clf.fit(sample.iloc[:,:-1],sample['failure_tag'])


# 测试数据
group_data_test = etl('memory_sample_kernel_log_round1_a_test.csv', AGG_TIME)
group_min_sn_test = pd.DataFrame(group_data_test[['serial_number','collect_time']])
group_min_test = group_data_test.drop(['serial_number', 'collect_time','manufacturer','vendor'], axis=1)


# 模型预测
res = clf.predict(group_min_test)
group_min_sn_test['predict']=res


# 保存结果
group_min_sn_test=group_min_sn_test[group_min_sn_test['predict']==1]
group_min_sn_res = group_min_sn_test.drop('predict',axis=1)
group_min_sn_res.to_csv('memory_predit_res_svm.csv', header=False, index=False)


# 主要思路:
# 以5分钟为一个聚合窗口,计算kernel_log每列的和作为特征,如果机器在5分钟内故障,则标为正样本,剩下的作为负样本,做适量的负样本下采样,训练svm分类模型,输出结果。


# 上述代码 score= 17.1429 ,功能完整,结构清晰,只用了最简单的SVM,继续探索吧!


# 可能的优化方向:
# 1. 相关参数调优
# 2. 打标方法改进
# 3. 目前只用了kernel数据,增加mce和address的特征
# 4. 更多算法,loss等的尝试
# 5. 复杂/衍生特征挖掘


Baseline地址:https://tianchi.aliyun.com/notebook-ai/detail?spm=5176.12586969.1002.3.16614f95F7RNVd&postId=181304

竞赛群

为方便大家对比赛进程的最新了解,特建立了竞赛交流群,会邀请相关方向大佬在群里答疑,发布并解读 baseline。也方便大家组队、技术讨论,比赛的最新信息也会第一时间同步到群里!

直接扫码加入!

若后期群满200人,请扫下方二维码拉你入群。

备注:运维大赛

戳原文,来报名,赢大奖!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值