ModelArts的雪中送炭,让我拿下CCF BDCI华为Severless工作负载预测亚军
摘要: 中国计算机学会大数据与计算智能大赛(CCF BDCI)华为Severless工作负载预测亚军方案和ModelArts使用体验分享
本文分享自华为云社区《免费薅ModelArts算力资源-拿下CCF BDCI华为Severless工作负载预测亚军》,原文作者:wyhhyw 。
赛题简介
基于历史数据和历史趋势,对Severless软件架构的工作负载进行精准预测,便于优化资源调整和提升用户服务质量。
数据提供了43个队列数天中的使用情况,其中包涵CPU使用率、磁盘使用率、提交作业数量,作业是否提交成功等信息。要求根据历史信息,预测测试集未来25分钟内,每间隔五分钟的CPU使用率和提交作业数量。赛题链接https://www.datafountain.cn/competitions/468.
赛题分析
这是一道非常典型的时间序列回归问题,目标时对未来五个时间点的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/forum/thread-51080-1-1.html
获取更多 AI 相关数据、算法、模型等 AI 资产,请点击“了解更多”,AI Gallery等您!
ModelArts的雪中送炭,让我拿下CCF BDCI华为Severless工作负载预测亚军的更多相关文章
- 从大数据到快数据 数据智创未来——2019 CCF大数据与计算智能大赛正式开赛!
8月17日,以“数据驱动,智创未来”为主题的2019 CCF大数据与计算智能大赛(CCF Computing Intelligence Contest,简称CCF BDCI)全球启动仪式,在北京大学正 ...
- 人车识别实验丨华为ModelArts VS 百度Easy DL硬核体验
摘要:想了解时下流行的自动驾驶相关AI模型吗?接下来就用华为云的ModelArts和百度的Easy DL带你体验一下AI平台是怎么进行模型训练的. 华为ModelArts自动学习 VS 百度Easy ...
- 稳过!华为微认证ModelArts实现智能花卉识别稳过!
华为微认证ModelArts实现智能花卉识别稳过! 目录 华为微认证ModelArts实现智能花卉识别稳过! ModelArts实现智能花卉识别的概述 ModelArts实现智能花卉识别的解决方案 M ...
- ICCV 2021口罩人物身份鉴别全球挑战赛冠军方案分享
1. 引言 10月11-17日,万众期待的国际计算机视觉大会 ICCV 2021 (International Conference on Computer Vision) 在线上如期举行,受到全球计 ...
- 基于 PyTorch 和神经网络给 GirlFriend 制作漫画风头像
摘要:本文中我们介绍的 AnimeGAN 就是 GitHub 上一款爆火的二次元漫画风格迁移工具,可以实现快速的动画风格迁移. 本文分享自华为云社区<AnimeGANv2 照片动漫化:如何基于 ...
- 浅谈SQL注入风险 - 一个Login拿下Server
前两天,带着学生们学习了简单的ASP.NET MVC,通过ADO.NET方式连接数据库,实现增删改查. 可能有一部分学生提前预习过,在我写登录SQL的时候,他们鄙视我说:“老师你这SQL有注入,随便都 ...
- CCF考试
第八次CCF考试记录 代码还不知道对不对,过两天出成绩. 成绩出来了,310分. 100+100+100+10+0: 考试13:27开始,17:30结束,提交第4题后不再答题,只是检查前四题的代码 第 ...
- CCF关于NOIP2014复赛报名的通知
CCF关于NOIP2014复赛报名的通知 CCF NOIP2014复赛全部实行网上注册.报名.未通过网上报名的选手将不具备参赛和申诉资格. 系统注册须知: NOIP2014复赛注册时间:2014年 ...
- [CCF] Z字形扫描
CCF Z字形扫描 感觉和LeetCode中的ZigZag还是有一些不一样的. 题目描述 在图像编码的算法中,需要将一个给定的方形矩阵进行Z字形扫描(Zigzag Scan).给定一个n×n的矩阵,Z ...
- [CCF] ISBN号码检测
CCF ISBN号码检测 题目概述 每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字.1位识别码和3位分隔符,其规定格式如"x-xxx-xxxxx-x",其 ...
随机推荐
- 揭秘计算机奇迹:探索I/O设备的神秘世界!
引言 在之前的章节中,我们详细讲解了计算机系统中一些核心组成部分,如中央处理器(CPU).内存.硬盘等.这些组件负责处理和存储数据,使得计算机能够有效地运行.然而,除了这些核心组件,计算机系统还包含许 ...
- 8.12 dp模拟赛总结
考场概况: 开考发现题目竟然不保证按难度顺序排序QAQ 正序开题, \(T1\) 显然是数位 \(dp\) 然而没学过不会写,顺手打了 \(30pts\) 暴力走人. \(T2\) 期望 \(dp\) ...
- docker 分离engine和client
背景 由于我个人电脑是2020款m1,16G,256G.一方面,平时除了运行多个浏览器,还有coding 编辑器等等,内存确实很紧张.其次呢,m1 是ARM的架构,所以构建的镜像是无法在X86的机器上 ...
- Chromium VIZ工作流
在 Chromium 中 viz 的核心逻辑运行在 GPU 进程中,负责接收其他进程产生的 viz::CompositorFrame(简称 CF),然后把这些 CF 进行合成,并将合成的结果最终渲染在 ...
- 该如何选择ClickHouse的表引擎
该如何选择ClickHouse的表引擎 本文将介绍ClickHouse中一个非常重要的概念-表引擎(table engine).如果对MySQL熟悉的话,或许你应该听说过InnoDB和MyISAM存储 ...
- raspberry pi Pico使用MicroPython变砖后的解决方法
使用raspberry pi Pico的原因 在硬件产品(单片机)的开发中我们往往需要借助一些额外的仪器/设备进行产品的辅助测试, 假设我们需要一个IO+ADC类型辅助设备, 以往的做法是 原理图-& ...
- Java表达式引擎选型调研分析
1 简介 我们项目组主要负责面向企业客户的业务系统,企业的需求往往是多样化且复杂的,对接不同企业时会有不同的定制化的业务模型和流程.我们在业务系统中使用表达式引擎,集中配置管理业务规则,并实现实时决策 ...
- 一款.NET开源的小巧、智能、免费的Windows内存清理工具 - WinMemoryCleaner
前言 我们在使用Windows系统的时候经常会遇到一些程序不会释放已分配的内存,从而导致电脑变得缓慢.今天给大家推荐一款.NET开源的小巧.智能.免费的Windows内存清理工具:WinMemoryC ...
- 如何实现一套简单的oauth2授权码类型认证,一些思路,供参考
背景 组内人不少,今年陆陆续续研发了不少系统,一般都会包括一个后台管理系统,现在问题是,每个管理系统都有RBAC那一套用户权限体系,实在是有点浪费人力,于是今年我们搞了个统一管理各个应用系统的RBAC ...
- C语言编写两个函数,分别求两个整数的最大公约数和最小公倍数,并用主函数调用这两个函数,然后输出结果。两个整数由键盘输入。约定最大公约数为正整数,两数里有负的则最小公倍数就为负的。
/* 开发者:慢蜗牛 开发时间:2020.5.28 程序功能:计算最大公约数和最小公倍数 */ #include<stdio.h> #include<math.h> int m ...