基于混合集成学习算法的热迁移超时预测模型

作者:成一鹏

导语: 在云计算资源管理中,热迁移是实现资源配置的重要手段,常常会因为多种场景需要发起热迁移:例如资源调配,母机负载均衡以及运维人工热迁移等场景。 而在当前热迁移任务中,热迁移在经过多次条件过滤后还是会不时遇到迁移超时失败的情况,在不恰当时机发起迁移任务,不仅影响了客户了SLA体验,也影响了热迁移效率。

简要

主要解决热迁移对象在内存利用变化快,磁盘读写速率快等状态的情况下无法判断其是否适合发起热迁移。

本次任务方案选择了多集成学习算法的投票选举,这是一个基于RandomForest,Adaboosting,Xgboost业界主流算法的混合voting预测模型。30%真实数据集作为验证,预测精度97.44%,实现对热迁移发起任务的成功率预测,对于超时迁移识别的样本识别率实现,也就是说可以减少原来热迁移超时失败情况数量的80%。

1. 需求背景

在云计算资源管理中,热迁移是实现资源配置的重要手段,常常会因为多种场景需要发起热迁移:例如资源调配,母机负载均衡以及运维人工热迁移等场景。

而在当前热迁移任务中,热迁移在经过多次条件过滤后还是会经常遇到迁移超时失败的情况,发起不合适的热迁移任务,不仅影响了客户了SLA体验,也影响了热迁移效率。

按以往人工经验去进行判断是否适合热迁移,例如内存变化率高会影响热迁移,CPU使用率 过高也会影响热迁移,

在这之前尽管我们知道内存变化率过高,CPU使用率过高,乃至内外网吞吐量过高都会影响到热迁移的成功, 但我们无法去构建一个衡量标准。并且如果频繁去监控获取子机的这些数据,也会对虚拟机性能造成影响,并且人工也无法去判断什么时间点哪些情况下哪个指标更重要,因此无法形成一个综合而客观稳定的判别标准。

2. 实现目标

所以我们引入了机器学习&深度学习,希望能够拟合一个复杂模型去计算并量化出一个适合热迁移的状态标准,实现对热迁移发起后是否会超时失败进行预测。

3. 实现简介

3.1特征空间

3.2特征处理

考虑到每列数据的差异有6个数量级差别,所以需要对大数量级的列数据 进行缩放。常用的做法有 np.sqrt,np.log。

3.3 HeatMap特征相关性分析

热力图是最直观的展示特征之间的线性相关性,从图中我们可以看到cpu和mem呈强相关性,这是显然的结果,高性能cpu往往伴随大内存;其次呈现中等相关的是出入流量。由此简单可以看出各个特征参数都是相对独立的,从线性相关角度看。

3.4算法简介:为什么选择随机森林与Xgboost

随机森林

如果从深度学习的角度去理解,可以认为随机森林的决策树随机分裂,隐含地创造了多个联合特征,并能够解决非线性问题,

可以相对离散地自动提取特征与权重学习。某种意义上实现CNN的卷积池化提取作用。

并行计算,对于个别特征缺失不敏感。

当构建决策树时,每次分裂时,都从全特征候选p集中选取m个进行分裂,一般m=sqrt(p)。

随机森林不会出现过拟合,只要树的个数(B)足够大时会使得错误率降低。

Xgboost

在Kaggle比赛中的必备算法,属于Gradient boosting的高效实现。并且有以下三处的改进:

(1). xgboost在目标函数中显示的加上了正则化项,基学习为CART时,正则化项与树的叶子节点的数量T和叶子节点的值有关。 (2). GB中使用Loss Function对f(x)的一阶导数计算出伪残差用于学习生成fm(x),xgboost不仅使用到了一阶导数,还使用二阶导数。 (3). CART回归树(GB)中寻找最佳分割点的衡量标准是最小化均方差,xgboost寻找分割点的标准是最大化,lamda,gama与正则化项相关。

AdaBoost

通过迭代实现把弱分类器训练成强分类器,每一次迭代后会对错误数据的关注度更高(策略为最小化分类误差率),使得下一个基学习器会对上次迭代数据更有更多的针对性,最终构建成附带权重的线性组合集成学习。

在数据清洗干净的情况下,效果会更好。

4.模型性能

4.1 Recall召回率

4.2Accuracy:97.44%

5.把模糊的行业经验变得更科学,更精准:

根据模型预测结果计算出影响热迁移的重要指标:

CPU使用率对热迁移成功最关键,其次是包的进出流量,磁盘读取速率反而影响力很低。

由图我们可以看到cpu使用率对热迁移成功与否的影响力占比去到21.4%,显著高于其他特征参数,这也是符合人的经验逻辑的,

当一台子机cpu使用率占用达到一定比例之后,如果后台再发起热迁移必然会占用部分系统资源,

而形成热迁移超时往往也是因为没有足够资源进行响应。

其次我们可以看到进出包量的影响力是同等(9.7%, 9.1%),再然后是内存使用率(8.3%)以及磁盘使用率(6.2%)。

可以注意到的是进出包量的影响力比我们想象的要高很多,而磁盘读取速率(4.6%),磁盘写入速率(5.1%)的重要性却要比我们想象的低,

这样的反馈结果根据我们的直观经验是无法获得的。

再往后热迁移发起任务中,我们也可以依据以上的分析结果,

如果迁移策略能够提前分配额外资源(cpu,mem,进出带宽)给到迁移对象,相信会大大减少热迁移超时失败的情况。

6.后续改进

6.1经验总结

在实际工程实施中,除了模型的构建 特征处理以外,第一步的数据收集,输入参数空间的构造都是至关重要的,数据集的大小以及质量直接决定了模型性能的上限。一方面除了收集实践经验判断相关的重要参数,另一方面也不能去简单排除其他看起来似乎不相干的特征参数,因为往往判断结果有可能与人的直觉相左右,总之尽可能的收集所有相关参数,然后再通过特征工程进行筛选去重是比较合理的做法。

在本次预测模型构造中,数据预处理去除脏数据,缺失数据后剩下的负样本数量还处在5k级别,一般而言对于一个机器学习任务 样本数量级别达到10万个是比较合适的,

另外目前正负样本比例不均衡也给模型性能的提升和预测带来很大困难,这个问题相信伴随数据量的增长以及改善采集数据缺失情况后会得到较大改善。

6.2 后期展望

部署优化

在后期优化中,会联通我们的数据仓库CDW实现数据自动采集,模型自动训练以及自动部署。

功能扩展

在后续热迁移技术改进中:我们会根据在不同的资源约束和VM工作负载下去预测不同实时迁移算法的关键参数。对基于实时迁移算法的迁移任务,构建机器学习模型预测迁移任务的总迁移时间,停机时间以及传输的总数据量。

7.技术框架

主要包含Serving服务框架,Model仓库,WEB服务层,后期的所有预测服务/数据挖掘分析都将在这个框架下运行,不限于数据采集 模型训练 版本管理以及部署发布。

TensorFlow Serving

是一个工业级可用于机器学习模型 serving 的高性能开源库。它可以将训练好的机器学习模型部署到线上,使用 gRPC 作为接口接受外部调用。将tensorflow训练出来的模型更好的应用在生产环境中,通过API等等支持的方式来方便对外提供稳定可靠的服务 WEB服务器结构

Flask-uWsgi-Nginx: Flask负责任务调度,uWsgi-Nginx负载转发,

目前已实现3台机器容灾部署,统一接入TGW实现负载均衡。

TensorflowClient

主要负责与TensorflowServing通信和调用模型api,通过调用TensorFlow Serving 的 Predict API 和 gRPC 的 implementations.insecure_channel 从而构建一个 request。

8.接入流程:

原创声明,本文系作者授权云+社区-专栏发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

1 条评论
登录 后参与评论

相关文章

来自专栏鹅厂优文

游戏人工智能 读书笔记 (六) AI算法简介——演化算法

Chapter 2.8 Hybrid Algorithm: Neuroevolution

2189
来自专栏牛客网

算法工程师:非科班机器学习工程师养成计划虐心面试实录一点人生经验

这是一篇不太专业的算法工程师面经,希望能给非科班想要从事机器学习工作的同学或学弟学妹一些建议,同时也回馈给予我很大帮助的牛客网。目前拿到的offer有:网易、三...

6156
来自专栏PPV课数据科学社区

机器学习算法速查卡-带表情包

虽然我以前也曾提到过这件事,因为我真的很爱表情包。我花了很多时间与朋友和家人聊天,表情包是必不可少的,否则在屏幕上看起来就会很平淡。? 我喜欢的另一件事是数据科...

32312
来自专栏数说工作室

训练集是题库,测试集就是高考!| 不能更简单通俗的机器学习名词解释

1. train? valid? or test? 机器学习最明显的一个特点是需要大量的数据。特别对监督学习来说,就是需要大量的带标签数据(labeled da...

3998
来自专栏深度学习之tensorflow实战篇

pangrank算法--PageRank算法并行实现

前言 Google通过PageRank算法模型,实现了对全互联网网页的打分。但对于海量数据的处理,在单机下是不可能实现,所以如何将PageRank并行计算,将是...

2734
来自专栏IT派

如何在机器学习竞赛中更胜一筹?

机器学习很复杂。你可能会遇到一个令你无从下手的数据集,特别是当你处于机器学习的初期。 在这篇文章中,你将学到一些基本的关于建立机器学习模型的技巧,大多数人都从中...

3247
来自专栏深度学习自然语言处理

【概率论】基础之概率概论与集合论

概率论对于我们学习机器学习,深度学习等理论,还是自然语言处理,计算机视觉等应用都是很有用的。概率论和其他线性代数,微积分等还是不太一样的,概率这样的问题,就是在...

863
来自专栏机器学习算法与Python学习

大规模机器学习框架的四重境界

1104
来自专栏PPV课数据科学社区

【学习】如何避免数据可视化的十大误区?不在出渣图表

数据可视化,是一种用来将复杂信息数据清晰表述出来的强大有力的工具。 通过可视化信息,我们的大脑可以更有效地合成和保留信息内容,增强对信息的理解。但是如果不正确数...

26610
来自专栏AI研习社

入门必读的机器学习名词解释,你都懂了吗?

train? valid? or test? 机器学习最明显的一个特点是需要大量的数据。特别对监督学习来说,就是需要大量的带标签数据(labeled dat...

3334

扫码关注云+社区