乐趣区

关于modelarts:ModelArts的雪中送炭让我拿下CCF-BDCI华为Severless工作负载预测亚军

摘要: 中国计算机学会大数据与计算智能大赛 (CCF BDCI) 华为 Severless 工作负载预测亚军计划和 ModelArts 应用体验分享

本文分享自华为云社区《收费薅 ModelArts 算力资源 - 拿下 CCF BDCI 华为 Severless 工作负载预测亚军》,原文作者:wyhhyw。

赛题简介

基于历史数据和历史趋势,对 Severless 软件架构的工作负载进行精准预测,便于优化资源调整和晋升用户服务质量。

数据提供了 43 个队列数天中的应用状况,其中包涵 CPU 使用率、磁盘使用率、提交作业数量,作业是否提交胜利等信息。要求依据历史信息,预测测试集将来 25 分钟内,每距离五分钟的 CPU 使用率和提交作业数量。赛题链接 https://www.datafountain.cn/c…

赛题剖析

这是一道十分典型的工夫序列回归问题,指标时对将来五个工夫点的 CPU 使用率和提交作业进行预测。能够从以下几个角度对指标进行建模。

  • 趋势拟合:依据待预测工夫点之前的使用率和作业数拟合曲线,并给出预测,参考 arima 等模型。
  • 单标签回归:以 5 为工夫距离,对指标进行预测,例如,x1 -> x6, x2 -> x7。具体如下图所示:
  • 多标签回归:参考 pandas.shift 函数,结构历史信息的平滑特色,每次预测一个工夫点的指标。示意图如下:

计划介绍

笔者有幸取得该较量的第二名(二等奖),建模办法为交融 lightgbm 和 lstm 预测后果,其中 lightgbm 线上第二,lstm 线上第 10 左右。因为本计划采纳的 lstm 构造比较简单且问题不是特地现实,而第三名的 lstm 是决赛问难队伍中线上问题最高的神经网络模型,因而本文还介绍了第三名(同二等奖)的 lstm 架构。

数据分析

在特色工程和建模之前,首先来一波 EDA~

下图展现了不同队列下的 CPU 使用率散布状况,能够发现,不同队列下的数据分布存在较大差异,因而队列号对于预测 CPU 使用率也是一个十分强力的特色。

下图展现了某队列号下 CPU 使用率随小时的变化趋势,能够发现下午至凌晨 3 点使用率均较高,因而小时和分钟也是一个十分强力的特色。须要留神的是,赛题方对工夫戳的年月日进行了脱敏,因而仅能应用小时和分钟两个特色。

特色工程

必不可少的局部,特色为王

  • 滑动特色:对 CPU 使用率等特色应用 pandas.shift 函数构建其平滑特色。
  • 差分特色:在平滑特色的根底上结构各阶差分特色。
  • 基于滑窗的统计特色:在平滑特色的根底上开一个窗口,而后滑动,每次取窗口内特色的均值、方差、最大值等统计特色。
  • 聚合统计特色:例如历史数据中不同小时下 CPU 使用率的均值和方差等特色。
  • 伪穿梭特色:穿梭特色个别是不被容许的。那么对于时序问题,能够构建伪穿梭特色,其实也就是聚合统计特色。例如,待预测的工夫点是上午 9 点,能够依据历史数据结构上午 10 点的均值等统计特色,并且衍生出差值比值等特色。

模型

  • 建模策略:见赛题剖析中的多标签回归。一般来说,这种建模形式都会获得较好的成果。
  • lightgbm:对每一个标签都进行五折穿插验证,CPU 使用率和提交作业数各五个工夫点,则一共进行了十次五折穿插验证。
  • lstm:CPU 使用率是 0 -100 的整数,间断五个工夫点的数据如 ”10-21-41-31-34″ 能够看做是 nlp 中的字符索引,因而能够间接用于索引 embedding lookup table 中的字向量,那么建模就很天然的适度到了 lstm。

下图展现了本文所用的 lstm 架构,成果并不是非常现实,线上大概在第十左右。在赛后和队友剖析探讨之后,认为咱们的框架存在几个问题。首先是将每个 CPU 使用率当做字向量,那么 lstm 中的 input_dim 为 1,成果必定不好。其次是咱们的框架很简略,并没有引入卷积或者注意力机制等。

上面给出二等奖中另一支队伍的 lstm 框架,该框架包含两局部:
(1)LSTM 提取 CPU 使用率、硬盘使用率的时序信息,引入注意力机制
(2)全连贯提取其余手工特色的信息,进行高阶穿插,并且设置跨层连贯,形成“不同尺度的集成模型”。

训练

  • 损失:因为数据稳定较大,因而能够认为存在肯定的离群点,所以采纳 smooth l1 作为损失函数。
  • 算力:lightgbm 建模对算力的要求较小,16G 内存足以。但应用上述神经网络训练时,因为是多标签回归(10 个标签),对每个标签都须要训练一个模型,如果再联合五折穿插验证,那么将训练 50 个模型,这对算力就有肯定的需要。

笔者在赛程靠近序幕时才开始训练 nn 模型,然而自己只有一张玩具显卡 gtx1650,对于该多标签工作训练数十个模型切实太过消耗工夫,无可奈何去寻找算力资源。通过师兄的举荐,最初选定了华为云的 ModelArts,每天两小时的收费算力,而且是 V100,感觉很不错。最初让实验室兄弟多开几个号,一边训练一边保留模型,工夫快到了就换号持续训练,两三天就把模型跑好了。尽管因为时限须要切换账号,但总体的应用体验还是不错的,上面就给大家简略介绍一下 ModelArts 的应用体验。

ModelArts 应用体验

应用感触

(1)尽管是在云端训练,然而 ModelArts 提供了 jupyter lab/notebook,就像平时在本地 PC 上上传数据到 notebook 中而后写代码一样,齐全感知不到训练流程的变动。lab 中集成了不同的引擎,惯例的如 pytorch, tf, xgboost 这些都有。

(2)装置依赖包很不便,间接在 cell 中’!pip install xxx’就能够,原生的 notebook 中如同没有这个性能。比方我新建的 notebook 是 pytorch 引擎,但又须要 xgboost,那么就可间接装置,见下图。

(3)目前上传数据有限度,一次只能上传大概是几百 MB,能够先将数据上传至 notebook 中后再进行特色工程,对于比拟大的数据,能够本地切分当前分批上传,所以这也是一个无关紧要的问题,毕竟收费 V100 太香了。

还有一些其余的细节,各位小伙伴们能够自行摸索呀!

划重点 - 如何申请

还愣着干什么,猛点链接,抢算力呀!!! https://bbs.huaweicloud.com/f…

点击关注,第一工夫理解华为云陈腐技术~

退出移动版