本发明涉及大数据处理技术和云平台资源负载
技术领域:
,特别涉及一种基于多任务学习时间序列的云平台工作负载预测方法。
背景技术:
:云计算时代,一些架构可根据业务工作负载进行弹性资源调整,这种方式可以有效减少资源在空闲期的浪费以及在繁忙期的业务过载,同时给用户带来极致的性价比服务。在弹性资源调度的背后,对工作负载的预测是一个重要环节。如何快速感知业务的波峰波谷,是对资源动态调整需要应该考虑的问题。传统的资源控制系统以阈值作为决策依据,只关注当前监控点的工作负载情况,缺少对历史数据以及工作负载趋势的把控,且一般只关注平台工作负载数据,缺少对用户行为的把控;目前很多云平台用户提交作业需要申请队列资源,那么只关注当前监控点的工作负载情况会造成滞后问题;若在某个时间段的工作负载呈现一个上升的趋势,如果只考虑这个时间段的工作负载这个单一指标进行判断,而不考虑每个任务的任务类型、监控数据、队列类型、队列状态等指标,可能会出现由于预测不准确而造成资源短缺或者资源浪费的情况。技术实现要素:为了解决上述问题,本发明提出一种基于多任务学习时间序列的云平台工作负载预测方法,包括以下步骤:获取工作负载数据,并对获取的数据进行预处理,工作负载数据至少包括队列类型、状态、磁盘类型、cpu利用率、内存利用率、作业数;采用滑动窗口的方法划分数据,将当前时刻前24个小时划分为144个时间间隔,并用其预测当前时刻之后10个时间间隔的平均工作负载;对划分的每个时间间隔的数据构建基础特征、交叉特征、时序趋势特征、用户行为关联特征,并采用二维shap进行特征选择;将选择的特征输入传入tcn-lstm模型中,采用多任务学习的方式,共有三个任务,分别为:预测t时间段的cpu平均利用率、预测t时间段的正在运行的作业数、预测t时间段的平均内存利用率。进一步的,对获取的数据进行预处理包括:对缺失的cpu利用率和内存利用率采用24小时内的cpu利用率和内存利用率进行线性加权得到的结果进行填充;剔除数据集中24小时内已完成的作业数与cpu利用率和内存利用率成反比的数据;对于每24个小时的数据采用三支决策的方法,对正在运行的作业数进行归一化操作。进一步的,采用三支决策的方法进行归一化操作包括:将当前24小时的工作负载分为平稳期、抖动期和波动期,对应三支决策中的正域、负域和边界域,对于处于负域的序列采用log平滑操作;对于处于边界域的一个样本d,找到最近的k个样本,若k中处在正域的数据为n个,则处在负域的数据为k-n个,则可以得到实例d处于正域和负域的条件概率,引入代价最小化的原则直到边界域的所有样本划分完毕。进一步的,工作负载时序趋势特征的获取包括:对于每一个样本,每隔一个时间间隔对cpu利用率和内存利用率做一阶差分、二阶差分、三阶差分操作;对一阶差分cpu利用率给与权重为0.6-0.8和一阶差分内存利用率给予权重0.2-0.4进行线性加权,得到组合一阶差分利用率;对二阶差分cpu利用率给与权重为0.6-0.8和二阶差分内存利用率给予权重0.2-0.4进行线性加权,得到组合二阶差分利用率;对三阶差分cpu利用率给与权重为0.6-0.8和一阶差分内存利用率给予权重0.2-0.4进行线性加权,得到组合三阶差分利用率;将当前样本的cpu利用率和内存利用率作为特征,组合一阶差分利用率、组合二阶差分利用率、组合三阶差分利用率作为标签,传入lightgbm回归模型中,得到每个样本在每个时间间隔的组合工作负载时序趋势特征。进一步的,用户行为关联特征的获取过程包括:对于q个队列,每个队列对应r个用户、每个用户对应n个作业,其中t在{1,2,3,…t}中取值,r在{1,2,3,…r}中取值,n在{1,2,3,…n}中取值;对于处在不同队列的同一用户,在24小时内计算所有用户在不同队列的提交作业的时间间隔和申请的作业的总资源数量,求的每个用户的平均负载资源利用率作为权重wj,计算每个队列每个用户的贡献值作为标签,每个队列的其他属性作为特征,传入lightgbm回归模型中得到用户在每个队列的关联度概率情况,将该关联度概率作为用户行为关联特征。进一步的,多任务学习过程包括:将工作负载作为三元组w=<cd,t,jd,t,md,t>,其中cd,t表示d天t时段的cpu平均利用率,jd,t表示d天t时段的正在运行的作业数,md,t表示d天t时段的内存平均利用率;在tcn-lstm模型后接入三个全连接网络预测三个任务,分别为taska:预测d天t时间后的10个时间间隔的平均cpu利用率cd,t,cd,t 1,cd,t 2,……cd,t 9、taskb:预测d天t时间后的10个时间间隔的运行的作业数jd,t,jd,t 1,jd,t 2,……jd,t 9、taskc:预测d天t时间后的10个时间间隔的平均内存利用率md,t,md,t 1,md,t 2,……md,t 9;采用复合函数标签融合的方式依次计算10个时间间隔的工作负载情况,除了t时刻的输出,其他每个时刻的输出的隐藏层都为当前时刻的hidden和前一时刻状态的运算拼接,对于t 1时刻lstm的hidden,前一时刻的具体运算为:ht 1=f1(f2(wht bi) bj) ht;其中,f1为sigmoid函数,f2为傅里叶函数;w为t时刻隐藏层权重;ht为t时刻隐藏层的输出;bi为ht的偏置;bj为f2(wht bi)的偏置。本发明中采用tcn-lstm组合预测的方法,降低了工作负载预测误差值,提高了工作负载预测的精度;避免传统工作负载预测只使用单一指标进行预测,本发明采用多任务学习充分的了解工作负载的多种指标;通过加入对用户行为指标的把控,将云负载情况与用户行为联系起来,旨在通过对工作负载相关的指标的历史趋势进行把控,而不单一只关注当前监控点的工作负载情况,快速的感知业务的波峰波谷,从而对云平台的资源进行动态的调度。附图说明图1是本发明实施例提供的流程图;图2是本发明实施例提供的复合函数标签融合;图3是本发明实施例提供的算法流程图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。本发明提出一种基于多任务学习时间序列的云平台工作负载预测方法,如图1,具体包括以下步骤:获取工作负载数据,并对获取的数据进行预处理,工作负载数据至少包括队列类型、状态、磁盘类型、cpu利用率、内存利用率、作业数;采用滑动窗口的方法划分数据,将当前时刻前24个小时划分为144个时间间隔,并用其预测当前时刻之后10个时间间隔的平均工作负载;对划分的每个时间间隔的数据构建基础特征、交叉特征、时序趋势特征、用户行为关联特征,并采用二维shap进行特征选择;将选择的特征输入传入tcn-lstm模型中,采用多任务学习的方式,共有三个任务,分别为:预测t时间段的cpu平均利用率、预测t时间段的正在运行的作业数、预测t时间段的平均内存利用率。表1字段类型说明queue_idint队列标识user_idint用户标识statusstring队列状态typestring类型cpu_usefloatcpu利用率memory_usefloat内存利用率job_idint作业idjob_statusstring作业状态job_running_timestring作业运行时间launching_job_numsint等待执行的作业数running_job_numsint正在执行的作业数succeed_job_numsint成功执行的作业数cancelled_job_numsint取消执行的作业数failed_job_numsint失败执行的作业数disk_usefloat磁盘利用率disk_typestring磁盘类型本发明可选的性能监控数据如表1所示,本实施例工作负载数据包括云平台的性能监控数据包括队列信息数据、负载数据;所述队列信息数据至少包括队列类型、状态、磁盘类型等;所述负载数据至少包括cpu利用率、内存利用率、作业数。本实施例对工作负载数据进行数据预处理操作,具体包括:(1)工作负载数据来源于云平台的性能监控数据,从中得到多个队列的队列信息数据、负载数据;所述队列信息数据包括队列类型、状态、磁盘类型等;所述负载数据包括cpu利用率、内存利用率,等待执行、已经完成、正在运行、失败、取消的作业数。(2)以当前时段云平台实际工作负载数据更新历史工作负载;(3)对缺失的cpu利用率和内存利用率采用24小时内cpu利用率和内存利用率进行线性加权得到的结果进行填充;(4)剔除数据集中24小时内运行作业数为0,但是cpu利用率,内存利用率很高的数据;剔除数据集中工作负载情况激增或者骤降(相较于前一时间序列,当前时间序列的负载增加或减少了大于等于3倍)的数据;(5)对于每24个小时的数据采用三支决策的方法,对正在运行的作业数进行归一化操作,将cpu利用率、内存利用率和归一化的正在运行的作业数进行线性加权作为当前24小时的工作负载,将当前24小时的工作负载分为平稳期、抖动期和波动期,对应三支决策中的正域、负域和边界域,对于处于负域的序列采用log平滑操作,对于处于边界域的一个样本d,找到最近的k个样本,若k中处在正域的数据为n个,则处在负域的数据为k-n个,则可以得到实例d处于正域和负域的条件概率,引入代价最小化的原则直到边界域的所有样本划分完毕,重复以上步骤直至处理完所有数据。在对工作负载数据进行数据进行划分操作时,采用滑动窗口的方法划分数据,步长为1,训练数据为24个小时144个时间间隔的数据,来预测下面10个时间间隔的每10分钟的平均工作负载,滑窗起到数据增强的作用;最终采用d天t时段前面的144个时间间隔的数据来预测d天t时间段(包括t)后面的10个时间间隔的工作负载。对划分的每个时间间隔的数据构建基础特征、交叉特征、时序趋势特征、用户行为关联特征,其中基础特征包括每个队列cpu利用率、内存利用率、作业数的均值、最大值、最小值、方差等统计特征;所有队列的cpu利用率、作业数和内存利用率的总和、平均值等统计特征;cpu利用率、作业数、内存利用率最多、最少的时间段;磁盘类型、队列状态等类别特征;对cpu利用率、作业数、内存利用率进行二值化,超过0.5为1,小于等于0.5为0。交叉特征的获取包括队列标识-队列类型24小时内cpu利用率、作业数、内存利用率的最大值、最小值、均值、总和;队列标识-队列状态24小时内cpu利用率、作业数、内存利用率的最大值、最小值、均值、总和;队列标识-队列状态-队列类型24小时内cpu利用率、作业数、内存利用率的最大值、最小值、均值、总和;队列标识-正在运行的作业数24小时内所占的cpu利用率的均值;队列标识-正在运行的作业数所占的内存利用率的均值;队列类型-磁盘利用率所占cpu利用率、作业数、内存利用率的均值。队列标识-成功执行的作业数24小时内所占的cpu利用率的均值;队列标识-成功执行的作业数所占的内存利用率的均值;队列标识-等待执行的作业数24小时内所占的cpu利用率的均值;队列标识-等待执行的作业所占的内存利用率的均值。工作负载时序趋势特征的获取包括:对于每一个样本,每隔一个时间间隔对cpu利用率和内存利用率做一阶差分、二阶差分、三阶差分操作,对一阶差分cpu利用率给与权重为0.6-0.8和一阶差分内存利用率给予权重0.2-0.4进行线性加权,得到组合一阶差分利用率;同理得到二阶组合差分利用率和三阶组合差分利用率;将当前样本的cpu利用率和内存利用率作为特征,组合一阶差分利用率、组合二阶差分利用率、组合三阶差分利用率作为标签,传入lightgbm回归模型中,得到每个样本在每个时间间隔的组合工作负载时序趋势特征。用户行为关联特征的获取包括:对于q个队列,每个队列对应r个用户、每个用户对应n个作业(其中t在{1,2,3,…t}中取值,r在{1,2,3,…r}中取值,n在{1,2,3,…n}中取值),对于处在不同队列的同一用户,在24小时内计算所有用户在不同队列的提交作业的时间间隔和申请的作业的总资源数量,求的每个用户的平均负载资源利用率作为权重wj,对于第t个队列每个用户的贡献值为将得到的每个tt作为标签,每个队列的其他属性作为特征,传入lightgbm回归模型中得到用户在每个队列的关联度概率情况。采用二维shap进行特征选择,即去除二维shap值小于0的队列-用户的特征,第i个队列-用户组合、第j个特征的二维shap值表示为:其中,为第i个队列-用户组合,第j个特征的二维shap值;c表示所有用户-队列组合的集合;f表示所有特征的集合;m表示c去掉队列-用户组合i之后的所有可能存在的队列-用户子集;s表示f去掉特征j之后的所有可能存在的特征子集;|m|!表示m队列-用户组合集合的数量的阶乘;|s|!表示s特征集合中特征的数量的阶乘;[f(s,m)∪{i,j}(x(s,m)∪{i,j})-f(s,m)(x(s,m))]表示队列-用户组合i、特征j在队列-用户组合集合为m、特征集合为s的情况下的边际贡献。将提取的特征进行归一化传入tcn-lstm模型中,采用多任务学习的方式,共有三个任务,分别为:预测t时间段的cpu平均利用率,预测t时间段的作业数、预测t时间段的平均内存利用率;输入模型之前采用max-min标准化的方法对特征进行归一化,即取出特征中的最大最小值,对最大最小值求平均值替代原始特征中的最大最小值,避免最大最小值是由噪声产生的带来的影响,使用对最大最小值平均后的数据进行归一化表示为:其中,d,tnorm为归一化之后的特征;d,t表示当前样本,d,tmin表示将最大最小值平均后的数据的最小值,d,tmax表示将最大最小值平均后的数据的最大值。将提取的工作负载特征归一化后,传入tcn-lstm模型中,tcn采用因果卷积、膨胀卷积和残差模块能够更好的捕获时序信息;其中因果卷积不考虑未来的信息,所以不存在未来信息泄露的问题,而且追朔的信息越久远,隐藏层越多;膨胀卷积在标准的卷积中注入空洞,增加了感受野,让每个卷积输出都包含较大范围的信息;引入权重参数初始化和正则化层来解决梯度消失或者梯度爆炸的问题,使用残差模块来解决网络退化的问题;lstm网络加入了门控单元,采用遗忘门、输入门和输出门来分别控制从细胞状态中丢弃的信息、在单元格状态下存储哪些信息、输出什么信息,来学习长期依赖关系。本实施例,在tcn-lstm模型中进行多任务学习过程包括:将工作负载作为三元组w=<c,j,m>,其中cd,t表示d天t时段的cpu平均利用率,jd,t表示d天t时段的正在运行的作业数,md,t表示d天t时段的内存平均利用率;在tcn-lstm模型后接入三个全连接网络预测三个任务,分别为taska:预测d天t时间后的10个时间间隔的平均cpu利用率cd,t,cd,t 1,cd,t 2,……cd,t 9、taskb:预测d天t时间后的10个时间间隔的运行的作业数jd,t,jd,t 1,jd,t 2,……jd,t 9、taskc:预测d天t时间后的10个时间间隔的平均内存利用率md,t,md,t 1,md,t 2,……md,t 9;采用复合函数标签融合的方式依次计算10个时间间隔的工作负载情况,除了t时刻的输出,其他每个时刻的输出的隐藏层都为当前时刻的hidden和前一时刻状态的运算拼接,对于t 1时刻lstm的hidden,前一时刻的具体运算为:ht 1=f1(f2(wht bi) bj) ht;其中,f1为sigmoid函数,f2为傅里叶函数;w为t时刻隐藏层权重;ht为t时刻隐藏层的输出;bi为ht的偏置;bj为f2(wht bi)的偏置。尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。当前第1页1 2 3 
技术特征:1.一种基于多任务学习时间序列的云平台工作负载预测方法,其特征在于,包括以下步骤:
获取工作负载数据,并对获取的数据进行预处理,工作负载数据至少包括队列类型、状态、磁盘类型、cpu利用率、内存利用率、作业数;
采用滑动窗口的方法划分数据,将当前时刻前24个小时划分为144个时间间隔,并用其预测当前时刻之后10个时间间隔的平均工作负载;
对划分的每个时间间隔的数据构建基础特征、交叉特征、时序趋势特征、用户行为关联特征,并采用二维shap进行特征选择;
将选择的特征输入传入tcn-lstm模型中,采用多任务学习的方式,共有三个任务,分别为:预测t时间段的cpu平均利用率、预测t时间段的正在运行的作业数、预测t时间段的平均内存利用率。
2.根据权利要求1所述的一种基于多任务学习时间序列的云平台工作负载预测方法,其特征在于,对获取的数据进行预处理包括:
对缺失的cpu利用率和内存利用率采用24小时内的cpu利用率和内存利用率进行线性加权得到的结果进行填充;
剔除数据集中24小时内已完成的作业数与cpu利用率和内存利用率成反比的数据;
对于每24个小时的数据采用三支决策的方法,对正在运行的作业数进行归一化操作。
3.根据权利要求1所述的一种基于多任务学习时间序列的云平台工作负载预测方法,其特征在于,采用三支决策的方法进行归一化操作包括:
将当前24小时的工作负载分为平稳期、抖动期和波动期,对应三支决策中的正域、负域和边界域,对于处于负域的序列采用log平滑操作;
对于处于边界域的一个样本d,找到最近的k个样本,若k中处在正域的数据为n个,则处在负域的数据为k-n个,则可以得到实例d处于正域和负域的条件概率,引入代价最小化的原则直到边界域的所有样本划分完毕。
4.根据权利要求1所述的一种基于多任务学习时间序列的云平台工作负载预测方法,其特征在于,工作负载时序趋势特征的获取包括:
对于每一个样本,每隔一个时间间隔对cpu利用率和内存利用率做一阶差分、二阶差分、三阶差分操作;
对一阶差分cpu利用率给与权重为0.6-0.8和一阶差分内存利用率给予权重0.2-0.4进行线性加权,得到组合一阶差分利用率;
对二阶差分cpu利用率给与权重为0.6-0.8和二阶差分内存利用率给予权重0.2-0.4进行线性加权,得到组合二阶差分利用率;
对三阶差分cpu利用率给与权重为0.6-0.8和一阶差分内存利用率给予权重0.2-0.4进行线性加权,得到组合三阶差分利用率;
将当前样本的cpu利用率和内存利用率作为特征,组合一阶差分利用率、组合二阶差分利用率、组合三阶差分利用率作为标签,传入lightgbm回归模型中,得到每个样本在每个时间间隔的组合工作负载时序趋势特征。
5.根据权利要求1所述的一种基于多任务学习时间序列的云平台工作负载预测方法,其特征在于,用户行为关联特征的获取过程包括:
对于q个队列,每个队列对应r个用户、每个用户对应n个作业,其中t在{1,2,3,…t}中取值,r在{1,2,3,…r}中取值,n在{1,2,3,…n}中取值;
对于处在不同队列的同一用户,在24小时内计算所有用户在不同队列的提交作业的时间间隔和申请的作业的总资源数量,求的每个用户的平均负载资源利用率作为权重wj,计算每个队列每个用户的贡献值作为标签,每个队列的其他属性作为特征,传入lightgbm回归模型中得到用户在每个队列的关联度概率情况,将该关联度概率作为用户行为关联特征。
6.根据权利要求5所述的一种基于多任务学习时间序列的云平台工作负载预测方法,其特征在于,每个队列每个用户的贡献值表示为:
其中,rj为第j个用户的cpu利用率、内存利用率的线性加权;∈j为rj的偏置。
7.根据权利要求1所述的一种基于多任务学习时间序列的云平台工作负载预测方法,其特征在于,采用二维shap进行特征选择,即去除二维shap值小于0的队列-用户的特征,第i个队列-用户组合、第j个特征的二维shap值表示为:
其中,为第i个队列-用户组合,第j个特征的二维shap值;c表示所有用户-队列组合的集合;f表示所有特征的集合;m表示c去掉队列-用户组合i之后的所有可能存在的队列-用户子集;s表示f去掉特征j之后的所有可能存在的特征子集;|m|!表示m队列-用户组合集合的数量的阶乘;|s|!表示s特征集合中特征的数量的阶乘;[f(s,m)∪{i,j}(x(s,m)∪{i,j})-f(s,m)(x(s,m))]表示队列-用户组合i、特征j在队列-用户组合集合为m、特征集合为s的情况下的边际贡献,f(s,m)∪{i,j}为集合(s,m)包含特征(i,j)的贡献值的预测,x(s,m)∪{i,j}为特征子集s包含特征i和特征子集m包含特征j的实例的特征值的向量,f(s,m)为集合(s,m)不包含特征(i,j)的贡献值的预测,x(s,m)为特征子集s和m的实例的特征值的向量。
8.根据权利要求1所述的一种基于多任务学习时间序列的云平台工作负载预测方法,其特征在于,多任务学习过程包括:
将工作负载作为三元组w=<cd,t,jd,t,md,t>,其中cd,t表示d天t时段的cpu平均利用率,jd,t表示d天t时段的正在运行的作业数,md,t表示d天t时段的内存平均利用率;
在tcn-lstm模型后接入三个全连接网络预测三个任务,分别为taska:预测d天t时间后的10个时间间隔的平均cpu利用率cd,t,cd,t 1,cd,t 2,……cd,t 9、taskb:预测d天t时间后的10个时间间隔的运行的作业数jd,t,jd,t 1,jd,t 2,……jd,t 9、taskc:预测d天t时间后的10个时间间隔的平均内存利用率md,t,md,t 1,md,t 2,……md,t 9;
采用复合函数标签融合的方式依次计算10个时间间隔的工作负载情况,除了t时刻的输出,其他每个时刻的输出的隐藏层都为当前时刻的hidden和前一时刻状态的运算拼接,对于t 1时刻lstm的hidden,前一时刻的具体运算为:
ht 1=f1(f2(wht bi) bj) ht;
其中,f1为sigmoid函数,f2为傅里叶函数;w为t时刻隐藏层权重;ht为t时刻隐藏层的输出;bi为ht的偏置;bj为f2(wht bi)的偏置。
技术总结本发明涉及大数据处理技术和云平台资源负载技术领域,特别涉及一种基于多任务学习时间序列的云平台工作负载预测方法,包括获取工作负载数据,采用滑动窗口的方法划分数据,对划分的每个时间间隔的数据构建基础特征、交叉特征、时序趋势特征、用户行为关联特征,并采用二维SHAP进行特征选择;将选择的特征输入传入TCN‑LSTM模型中,采用多任务学习的方式,共有三个任务,分别为:预测T时间段的CPU平均利用率、预测T时间段的正在运行的作业数、预测T时间段的平均内存利用率;本发明通过对工作负载相关的指标的历史趋势进行把控,而不单一只关注当前监控点的工作负载情况,快速的感知业务的波峰波谷,从而对云平台的资源进行动态的调度。
技术研发人员:王进;马梦涵;李辰宇;徐其成;舒雅宁;彭浩;孙开伟;刘彬
受保护的技术使用者:重庆邮电大学
技术研发日:2020.12.03
技术公布日:2021.03.12