一种基于深度学习的云服务性能自适应动作类型选择方法转让专利

申请号 : CN201510426784.9

文献号 : CN104951425B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 郭军张斌刘宇闫永明莫玉言马安香

申请人 : 东北大学

摘要 :

本发明提供一种基于深度学习的云服务性能自适应动作类型选择方法,包括监测物理机群数据、虚拟机数据、服务组件数据;结合SLA中约定的约束事件和实时监测的数据,判定当前服务性能是否需要优化:若当前数据触发约束事件,则根据自适应方法库决策自适应动作类型,否则继续监测;根据决策的自适应动作类型进行云服务性能自优化;反馈学习,更新自适应方法库,返回继续监测。云环境自身具有高可伸缩、动态重构的特性,致使云服务的服务性能在实际运行环境中受到多因素的制约,本发明方法在服务组件进行服务性能自优化时,根据不同场景的实际情况从自适应动作集中选择出最佳的自适应动作。

权利要求 :

1.一种基于深度学习的云服务性能自适应动作类型选择方法,包括如下步骤:步骤1:监测物理机群数据、虚拟机数据、服务组件数据;

步骤2:结合SLA中约定的约束事件和实时监测的数据,判定当前服务性能是否需要优化:若当前数据触发约束事件,则执行步骤3,否则返回步骤1;

步骤3:根据自适应方法库决策自适应动作类型;

步骤4:根据决策的自适应动作类型进行云服务性能自优化;

步骤5:反馈学习,更新自适应方法库,返回步骤1;

其特征在于,所述自适应方法库按如下步骤建立:步骤3-1:数据提取,包括:物理机群数据、虚拟机数据、服务组件数据;

步骤3-2:数据预处理:对数据进行去噪、清洗;

步骤3-3:数据样本化:将数据转换成0 1之间的小数;

~

步骤3-4:数据标签化:将样本化后的数据分别利用资源调整方案决策模型、服务迁移方案决策模型、副本部署方案决策模型对训练数据进行训练,将代价收益评估最高的20%训练数据标签化,针对有标签的数据,执行步骤3-6;针对无标签的数据,执行步骤3-5;

步骤3-5:基于DBN训练的自适应服务性能动作类型选择模型;

步骤3-6:生成自适应方法库。

2.根据权利要求1所述的基于深度学习的云服务性能自适应动作类型选择方法,其特征在于,所述物理机群数据、虚拟机数据均包括CPU核数、内存大小、带宽、服务组件个数、可用磁盘大小;

所述服务组件数据包括CPU占用率、内存占用率、并发量、响应时间、I/O设备调用频率。

3.根据权利要求1所述的基于深度学习的云服务性能自适应动作类型选择方法,其特征在于,所述步骤3-5基于DBN训练的自适应服务性能动作类型选择模型具体步骤如下:步骤3-5-1:初始化DBN结构,包括RBM堆叠数L,各层节点数N[],学习速率ℰ,迭代周期k,连接权值矩阵W[],偏置矩阵b[];

步骤3-5-2:训练DBN,利用无标签数据逐层训练各层RBM;

步骤3-5-3:对已获取的DBN采用BP算法进行调整;

步骤3-5-4:利用测试数据测试DBN的准确率;

步骤3-5-5:若准确率不满足要求,返回步骤3-5-1,重新确立DBN结构;否则,当前DBN即自适应动作类型判定选择模型。

说明书 :

一种基于深度学习的云服务性能自适应动作类型选择方法

技术领域

[0001] 本发明属于云服务技术领域,具体涉及一种基于深度学习的云服务性能自适应动作类型选择方法。

背景技术

[0002] 在大数据时代中,信息量指数型的增长特性直接导致了诸多行业中的数据大爆发,整个社会也因此在生活方式和生产方式上产生了巨大的变革,而支撑这种科技大变革的技术基础,则要归功于当前运供应商和云服务商提供的各种各样的“云”服务。云计算技术(Cloud Computing)是利用高速互联网的传输能力,将数据的处理过程从个人计算机或服务器转移到互联网上的计算机集群中的技术。云计算是一种新兴的商业计算模型,它将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和各种软件服务。“云”是一些可以自我维护和管理的虚拟计算资源,通常为一些大型服务器集群,这使得应用提供者无需为繁琐的细节而烦恼,能够更加专注于自己的业务,有利于创新和降低成本。随着分布式异构计算机应用项目的大量推广,云计算凭借着其创新的计算模式,近年来日益受到商业界和学术界的高度重视。根据云计算服务模式的不同,可以将其分为三个服务层次,软件即服务(software as a service,SaaS)、平台即服务(platform as a service,PaaS)和基础设施即服务(infrastructure as a service,IaaS)。
[0003] 在常规云环境中,云硬件供应商已经在硬件服务基础上做了大量基础工作,通常情况下云服务的供应商只需要将自己的服务部署到相应的硬件环境中,也就是云集群中的虚拟机(virtual machine,VM)上即可对外提供服务。但是随着服务的长时间运营,服务的自身组件会逐渐受到历史数据的积累、即时大并发流量冲击以及新增部署组件的干扰等多因素的影响,致使其服务性能下降以至于违反先定服务等级协议(service  level agreement,SLA)。SLA是关于网络服务供应商和客户间的一份合同,其中定义了服务类型、服务质量等术语。SLA协议是云系统对客户提供的服务基础,在提供服务的全过程中,供应商必须严格遵守SLA。故此,云系统的主要任务之一就是保证系统持续稳定的提供满足SLA的服务,进而保证整个服务的服务质量(quality of service,QoS)。
[0004] 针对这种情况,服务环境需要一个高效准确的云服务性能自适应优化方法,以助各云服务在服务性能下架的场景下,可以自发的调节服务自身工作环境,从而为客户提供一个稳定舒适的服务体验。
[0005] 服务性能自优化的问题与人工智能、数据挖掘和机器学习三个学科有紧密联系,当前许多学者分别从不同角度对服务自性能优化展开了研究,归结起来主要有如下几个方面。
[0006] 在服务系统的环境自适应方面:有些研究者研究了以保证服务质量为目标的环境自适应方法,Stephen S.Y.等人提出了一种ASBS开发方法,当监测到QoS不满足期望值时,采用服务替换或服务重配置调整抽象服务绑定的具体服务,进而使系统QoS满足需求;C.Valeria等人提出了一种SBS运行时自适应框架MOSES,利用为每个抽象服务建立的最优自适应策略模型选取动作模式,从而达到最佳性能。Qian Z.等提出了一种云环境中的资源动态优化配置框架,利用训练得到的资源模型改变资源分配,从而在满足预算约束的基础上达到应用QoS的最优化;Kuo-Chan H.等人提出了一种基于服务请求预估的动态资源配置机制,用于确定分配给各服务的资源量,在面对变化的并发访问量时能够改善云服务系统的性能。也有研究者研究了以代价最小化为目标的自适应方法,Philipp L.等人以SBS为研究对象,通过优化选取数据操作、服务重绑定和结构适应等自适应动作,使SLA违反代价与自适应动作本身的代价之和达到最小;Lin W.W.等人提出了一种资源动态分配模式,根据负载变化为云应用动态配置虚拟资源,从而最小化资源成本;这些研究工作多单纯从QoS或代价优化的角度研究服务系统的环境自适应方法,且在云环境中多采取资源重新分配实现资源调整,进而提高性能或降低代价。
[0007] 在云服务和组件服务性能建模方面:有些研究者从在线的非线性关系建模方法方面展开了研究:Salah、Khaled等人基于排队论对云环境下的虚拟实例、负载和服务响应时间之间关系的建模,采用马尔可夫分析模型来估算弹性云应用响应时间的方法;Wes Lloyd等人提出了通过统计学习方法对系统资源使用情况进行系统性能建模的方法,并采用多重线性回归方法、渐进式多重线性回归方法、多元自适应样条函数法和单隐层人工神经网络方法对物理机资源和虚拟机资源使用数据集进行训练;也有学者提出了“性能概要”来体现系统低层性能指标集和相应的高层系统状态间的相互关系,通过机器学习的方法进行系统“性能概要”的生成;Sajib Kundu针对不同虚拟化架构下影响应用性能的关键资源因素,采用基于人工神经网络的方法进行建模;George Kousiouris等人讨论了影响应用性能的一些因素,使用人工神经网络对应用性能进行建模、量化及正确的预测。这些研究工作或者基于性能和资源的对应关系、采用数学/信息论方法进行在线建模,或者采用统计学习或机器学习方法分析实验数据或历史日志并进行离线建模,缺少对构成服务系统的组件服务间的资源竞争、性能互扰等资源变化因素对服务性能影响研究,影响服务性能的资源变化标识特征抽取的不够全面,性能模型中一些参数值的准确性不够。Liliana Rosa et al.等人设计的自适应决策机制包括离线和在线两个阶段,在离线阶段生成一组自适应的规则,在在线阶段根据当前的系统状态和策略中所定义的目标对自适应规则集合进行匹配的方式生成自适应调整方案。
[0008] 现有技术对影响服务表现的因素考虑不够全面,大多都是以单一资源属性作为自适应方案决策的衡量指标,诸如CPU利用率或内存使用率等。另外,少有在服务性能自适应的过程中,考虑自适应优化事件触发机制上的优化。
[0009] 服务组件的服务性能自适应领域的研究一直是软件智能化服务的研究热点。通过对服务性能自适应的研究,服务组件的稳定性和容错性将大幅上升,对服务供应商而言,其对应的维护服务的人力成本和维护周期将显著降低,从客户的角度出发,客户的体验舒适度也将明显提高。
[0010] 现有的服务性能自优化方法通常可以分为资源调整、服务迁移和副本部署三大类,在资源调整层面上,以Lin W.W.等人为代表的学者们提出了一种资源动态分配模式,根据负载变化为云应用动态配置虚拟资源,从而最小化资源成本,这些研究工作多单纯从QoS或代价优化的角度研究服务系统的环境自适应方法,且在云环境中多采取资源重新分配实现资源调整,进而提高性能或降低代价。在服务迁移层面上,以Stephen S.Y.等人为代表的学者提出了一种ASBS开发方法,当监测到QoS不满足期望值时,采用服务替换或服务重配置调整抽象服务绑定的具体服务,进而使系统QoS满足需求,以C.Valeria等人为代表的学者们提出了一种SBS运行时自适应框架MOSES,利用为每个抽象服务建立的最优自适应策略模型选取动作模式,从而达到最佳性能。另一方面,以Salah,Khaled等人为代表的学者们,基于排队论对云环境下的虚拟实例、负载和服务响应时间之间关系的建模,采用马尔可夫分析模型来估算弹性云应用响应时间的方法;以Wes Lloyd为代表的学者们提出了通过统计学习方法对系统资源使用情况进行系统性能建模的方法,并采用多重线性回归方法、渐进式多重线性回归方法、多元自适应样条函数法和单隐层人工神经网络方法对物理机资源和虚拟机资源使用数据集进行训练。
[0011] 但是,基于单一优化技术而生成的解决方案难以满足现有云服务组件所面对的服务环境的多样化和服务压力的多元化的问题。这些研究工作或者基于性能和资源的对应关系、采用数学和信息论方法进行在线建模,或者采用统计学习或机器学习方法分析实验数据或历史日志并进行离线建模,缺少对构成服务系统的组件服务间的资源竞争、性能互扰等资源变化因素对服务性能影响研究,影响服务性能的资源变化标识特征抽取的不够全面,性能模型中一些参数值的准确性不够。虽然有的学者也采用了神经网络技术,来处理云服务非线性多元化的问题,但是传统的方法效率在多维数深层据结构的表现并不理想。
[0012] 深度学习技术在是当前机器学习领域中学习效率最高的学习技术之一,但是该算法目前多用于图像识别与音频处理这些多维单特性的数据领域,鲜有在多维复杂数据领域中展开应用。云服务本身由于其结构特性和功能特性,致使其服务性能在实际运行环境中受到多因素的制约,这些因素不同于音频波形和图像灰度这些单特性数据,它们是混合了计算机内部诸如内存、CPU、磁盘、网络带宽等所有可动态配置的资源类型的混合型数据。随着用户需求和服务架构设计的多样化的增加,该制约关系与其数据混合特性愈显复杂,针对这一特性本实施方案引入了深度神经网络学习技术,一则是通过新的神经网络学习算法拟合服务组件所占资源量与其服务性能外在表现的非线性映射关系,从而以更全面的视野深化对服务自适应系统的研究;二则探索深度学习技术在多维多特征数据领域的实际运用效果。

发明内容

[0013] 针对现有技术存在的问题,本发明提供一种基于深度学习的云服务性能自适应动作类型选择方法。
[0014] 本发明的技术方案是:
[0015] 一种基于深度学习的云服务性能自适应动作类型选择方法,包括如下步骤:
[0016] 步骤1:监测物理机群数据、虚拟机数据、服务组件数据;
[0017] 步骤2:结合SLA中约定的约束事件和实时监测的数据,判定当前服务性能是否需要优化:若当前数据触发约束事件,则执行步骤3,否则返回步骤1;
[0018] 步骤3:根据自适应方法库决策自适应动作类型;
[0019] 步骤4:根据决策的自适应动作类型进行云服务性能自优化;
[0020] 步骤5:反馈学习,更新自适应方法库,返回步骤1。
[0021] 所述物理机群数据、虚拟机数据均包括CPU核数、内存大小、带宽、服务组件个数、可用磁盘大小;
[0022] 所述服务组件数据包括CPU占用率、内存占用率、并发量、响应时间、I/O设备调用频率。
[0023] 所述自适应方法库按如下步骤建立:
[0024] 步骤3-1:数据提取,包括:物理机群数据、虚拟机数据、服务组件数据;
[0025] 步骤3-2:数据预处理:对数据进行去噪、清洗;
[0026] 步骤3-3:数据样本化:将数据转换成0~1之间的小数;
[0027] 步骤3-4:数据标签化:将样本化后的数据划分别利用资源调整方案决策模型、服务迁移方案决策模型、副本部署方案决策模型对训练数据进行训练,将代价收益评估最高的20%训练数据标签化,针对有标签的数据,执行步骤3-6;针对无标签的数据,执行步骤3-5;
[0028] 步骤3-5:基于DBN训练自适应动作类型判定选择模型;
[0029] 步骤3-6:生成自适应方法库。
[0030] 所述步骤3-5基于DBN训练自适应动作类型判定选择模型具体步骤如下:
[0031] 步骤3-5-1:初始化DBN结构,包括RBM堆叠数L,各层节点数N[]学习速率ε,迭代周期k,连接权值矩阵W[],偏置矩阵b[];
[0032] 步骤3-5-2:训练DBN,利用无标签数据逐层训练各层RBM;
[0033] 步骤3-5-3:对已获取的DBN采用BP算法进行调整;
[0034] 步骤3-5-4:利用测试数据测试DBN的准确率;
[0035] 步骤3-5-5:若准确率不满足要求,返回步骤3-5-1,重新确立DBN结构;否则,当前DBN即自适应动作类型判定选择模型。
[0036] 所述自适应动作类型包括资源调整、副本部署和服务迁移。
[0037] 有益效果:
[0038] 云环境自身具有高可伸缩、动态重构的特性,致使云服务的服务性能在实际运行环境中受到多因素的制约,本发明方法在服务组件进行服务性能自优化时,根据不同场景的实际情况从自适应动作集中选择出最佳的自适应动作。

附图说明

[0039] 图1是本发明具体实施方式的自适应方法库建立流程图;
[0040] 图2是本发明具体实施方式的基于深度学习的云服务性能自适应动作类型选择方法结构示意图;
[0041] 图3是本发明具体实施方式的基于深度学习的云服务性能自适应动作类型选择方法流程图;
[0042] 图4是本发明具体实施方式的动作序列选择与生成部分的时间开销对比图;
[0043] 图5是本发明具体实施方式的单层RBM的结构示意图;
[0044] 图6是本发明具体实施方式的云环境初始部署情况与拓扑结构图;
[0045] 图7是本发明具体实施方式的sample_x的数据结构示意图。

具体实施方式

[0046] 下面结合附图对本发明的具体实施方式做详细说明。
[0047] 数据集中性是云服务系统的自身特性,当云服务的多个实例长期部署在云集群上并为客户提供服务时,其在多环境下生成的运营日志群便是优化服务自适应机制的关键信息。在系统的日常运行中,其所有运行数据都被记录在各种各样的日志文件里,日志信息包括了某时间段某服务组件所占内存大小、负载大小、吞吐量等全部信息,其中服务组件在什么场景下性能下降、服务性能下降之后系统采用了哪种优化方案及其执行效果等信息对服务组件的性能自适应研究至关重要,而这些信息可以在日志中找到,通过筛选并整理出其中优化效果较好的信息,将获得历史优化轨迹数据集。本发明结合深度学习算法,从机器学习的角度出发,利用历史数据训练自适应动作类型可行性判定模型和自适应动作类型选择模型,首先判定出哪些自适应动作类型在当前环境下具备可行性,然后从具备可行性的自适应动作类型中选择出最适宜的自适应动作类型,进而达到减轻计算量,加速整个自适应决策过程的目的。
[0048] 本发明采用的深度神经网络学习技术由无监督学习和有监督学习两部分组成,有监督学习和无监督学习的主要区别取决于其学习样本是否有特征标签。传统神经网络通常只有监督学习部分,即对带特征标签项的学习样本学习。在传统研究中,学习样本的标签化的质量和标签化样本的数量直接决定了神经网络的质量,但数据标签化的过程除去庞大的工作量外,对设计人员的素质也提出了较高的要求,只有经验丰富的设计人员才能筛选出维度和权重均适中的标签集,进而设计对原始数据的量化体系,据此将各数据标签化,或者通过设计本身人工设计多个具有特征代表性的范例样本,但这种方法下提供的训练样本虽然优秀,但是数量极少,例如人脸识别领域中的数据原来是依靠大量专业人员多年的数学建模而得来的。而无监督学习的优点是其所需的学习样本不需要特征标签项,而这正好契合当前大数据的信息特性。无监督学习通过建立具有认知功能的神经网络,对海量数据展开学习,从而逐渐学习出网络自身的认知系统。但是这种学习方法在认知精度上也有一定局限性。
[0049] 本发明结合这两种学习方法,先通过深度学习技术中的RBM-DBN多隐层神经网络结构对海量数据展开无监督学习,随后通过BP算法借助带标签的训练样本反馈优化前一阶段的学习结果,综合二者的优点最后输出一个高精度高效率的用于服务性能自适应动作选择的神经网络模型,整个基于深度学习的云服务性能自适应动作类型选择方法的结构如图2所示。
[0050] 一种基于深度学习的云服务性能自适应动作类型选择方法,如图3所示,包括如下步骤:
[0051] 步骤1:监测物理机群数据、虚拟机数据、服务组件数据;
[0052] 所述物理机群数据、虚拟机数据均包括CPU核数、内存大小、带宽、服务组件个数、可用磁盘大小;
[0053] 所述服务组件数据包括CPU占用率、内存占用率、并发量、响应时间、I/O设备调用频率。
[0054] 步骤2:结合SLA中约定的约束事件和实时监测的数据,判定当前服务性能是否需要优化:若当前数据触发约束事件,则执行步骤3,否则返回步骤1;
[0055] 步骤3:根据自适应方法库决策自适应动作类型;
[0056] 所述自适应动作类型包括资源调整、副本部署和服务迁移。
[0057] 如图1所示,自适应方法库按如下步骤建立:
[0058] 步骤3-1:数据提取,包括:物理机群数据、虚拟机数据、服务组件数据;
[0059] 学习数据来源于服务组件的历史优化轨迹信息,本实施方式通过对组件历史运营数据的分析,分别找出了在不同时期触发自优化事件的节点,将该节点的相关信息转化为训练样本sample,并将多个样本组合成了训练集sample_set。
[0060] sample_set主要包括两部分内容,一是组件特征信息和历史环境信息sample_x,另一部分是组件当时采取的最佳优化策略sample_y。数据采集完成后,本实施方式从sample_set的sample_x中随机抽取大量样本作为无监督学习部分的训练样本train_x,再从剩余的sample_set中抽取部分数据作为微调数据集finetuning_x和finetuning_y用于有监督学习部分,对已获得的神经网络进行微调优化学习。sample_set中剩余的数据将作为测试用例test_x和test_y,用于实验部分的模型验证阶段。故此,本实施方案的自适应动作类型选择模型的训练过程表述如下:首先建立RBM-DBN神经网络对train_x进行无监督学习,随后在RBN-DBN网络的基础上结合BP算法微调数据集finetuning_x和数据集finetuning_y,对其进行优化训练,即可将得到所需的自适应动作类型选择模型,最后导入测试数据集test_x和test_y,验证模型的准确度,并根据测试结果调整模型结构。
[0061] 在训练集sample_set的数据采集过程中需要注意如下两个问题:
[0062] (1)历史数据中,服务自适应调整后服务性能回归正常工作范围,并持续M个监测周期间的自适应调节为有效调节,训练数据只采集有效自适应调节过程中的数据。
[0063] (2)sample_x的信息采集点为触发事件触发点,采集触发时刻前后的小段数据,去噪后取均值,作为sample_x的录入数据,与之对应的自适应优化动作类型将作为sample_y的录入数据项被录入。
[0064] 根据影响服务性能的常用指标和特性指标,本实施方式从组件、虚拟机、物理机三个层次筛选出多维指标作为维指标作为训练样本sample_x的数据项,通过扩增物理机与虚拟机的维度,可以完成对云环境的描述,从而实现组件、虚拟机、物理机、云环境四个层次的量化,训练指标如表1-3所示。
[0065] 表1组件训练集指标列表
[0066]
[0067] 表2虚拟机训练集指标列表
[0068]
[0069] 表3物理机训练集指标列表
[0070]
[0071] c_other和c_irt是影响服务迁移的关键指标,c_can和c_con是影响副本部署的关键指标。sample_y即为自适应动作类型选择模型训练样本的标签项,在本实施方式中用三个二进位的值表示,001表示采用了服务迁移自适应动作,010表示采用了副本部署的自适应动作,100表示采用了资源调整的自适应动作,000表示当前没有资源支持服务组件的自适应优化,在数据库中本实施方式用三维布尔向量表示。
[0072] 步骤3-2:数据预处理:对数据进行去噪、清洗;
[0073] 由于系统日志类型有数十种之多,其记录项之和近千余项,又数据采集涉及了查询、录入、转化和存储等多个过程中,若出现字段错误、记录错误、数据缺失等问题,将严重影响所采集数据的质量,进而影响模型训练的效率,故此对这些数据的预处理是十分重要的。
[0074] 步骤3-3:数据样本化:将数据转换成0~1之间的小数;
[0075] 训练数据的原型混合了字符串型数据、数值型数据等多种类型的数据,并不适合作为学习模型的学习原材料直接输入。将原信息转化为模型的标准学习样本的过程是必须的,也是极为重要的。在神经网络的学习结构中,输出样本内容的复杂度是决定模型学习数据的维度的重要因素。
[0076] 由于本实施方式采用sigmod函数作为神经元的激发函数,而其只对[0,1]之间的数据具有敏感性,故此在选择出sample_x的数据项后,需要将其转化为[0,1]之间的训练样本,主要的转换方法有两个,一是针对大部分通用数据的转换方法,即高斯-伯努利方法,采用Z归一因子将其归一化。针对其中的特性数据则需要采取第二种方法,即权值百分比法。例如针对c_other而言,组件C1的干扰组件有C2和C3,其中C2对C1的干扰系数为0.6,C3对C1的干扰系数为0.4,将其干扰系数作为其训练样本的基准值,当C1、C2、C3同期部署在同一台虚拟机时,C1的c_other样本化后的取值为1;若虚拟机只部署了C1时,c_other样本化后的取值为0,C1分别只和C2或C3同期部署时,其取值分别为0.6、0.4。除开上述两种主要的转化法以外,常用方法还有定值标识法,即将某些离散数据转换为[0,1]之间的离散定值的方法。神经元的激活函数直接决定了训练数据样本化的方向,模型训练样本对激活函数的敏感度对越高,其训练效果也就越好。
[0077] 步骤3-4:数据标签化:将样本化后的数据划分别利用资源调整方案决策模型、服务迁移方案决策模型、副本部署方案决策模型对训练数据进行训练,将代价收益评估最高的20%训练数据标签化,针对有标签的数据,执行步骤3-6;针对无标签的数据,执行步骤3-5;
[0078] 基于深度学习的神经网络学习过程分为有监督学习和无监督学习两个阶段,其中有监督学习需要带有标签的学习样本,故在学习预备阶段,要将筛选出一部分优质样本,为其人工标注特征标签将其作为有监督学习的输入,基于带标签样本的无监督调优过程是决定输出精度的关键过程。除去学习算法本身特性外,带标签样本的质量也对神经网络模型收敛的速度有重要影响,样本标签化的质量越高,模型训练过程中的收敛速度也就越快,反之则越慢。在本实施方式中,自适应调整后持续提供满足SLA约束时间越长的调整过程所对应的学习样本,其标签化的过程中的评级也就越高。
[0079] 经过数据样本化之和数据标签化后,训练数据集sample_set内部将是有大量多维数据构成,其内容除去sample_x中的服务环境信息外,还有1项为学习样本的标签量化指标,也就是sample_y。这些信息将随机划分成无监督训练样本、有监督调优样本和模型测试样本三个样本集,用于后续训练过程和测试过程。
[0080] 步骤3-5:基于DBN训练的自适应服务性能动作类型选择模型;
[0081] 在基于RBM-DBN深度学习的神经网络架构中,学习样本的输入层即为可视层v,可视层中的所有细节均可见也可解释,但是其隐层h中各神经元的只可输出,隐层个节点的具体意义由于高度抽象的特性所以不可解释。RBM是一个层内无连接,层之间全连的单层神经网络能量模型,为了表述方便本实施方式中可视层和隐层的单元均为{0,1}二值变量,假设一个RBM有输入层有n个节点,隐层由m个节点,vi表示可视层的第i个节点的状态,hj表示第隐层第j个节点的状态,ci表示可视层第i个节点的偏置,bj表示隐层第j个节点的偏置,Wij表示可视层的第i个节点与隐层的第j个节点之间的链接权重,那么对于一组给定输入层v向量和隐含层输出向量h(v,h)下的RBM其能量函数定义如下:
[0082]
[0083] 上式中,θ={Wij,ci,bj},当参数θ确定时,输入层v和输出层h之间的联合概率为联合概率满足Boltzmann分布:
[0084]
[0085] 其中Z是归一化因子,也称为配分函数:
[0086] Z(θ)=∑v,he-E(v,h|θ)               (3)
[0087] 从而可以推导出关于v的概率分布函数为:
[0088]
[0089] 从上式可以看出,为了确定该分布,需要计算归一因子Z(θ),这需要2n+m次计算,因此即时通过常规训练得到了Wij,ci,bj,仍然无法有效计算由这些参数决定的分布。
[0090] 步骤3-5-1:初始化DBN结构,包括RBM堆叠数L,各层节点数N[]学习速率ε,迭代周期k,连接权值矩阵W[],偏置矩阵b[];
[0091] 由于RBM的结构特性,当给定可视层后,隐层单元的激活状态之间是条件独立的,此时,第j个隐层节点的激活概率为:
[0092]
[0093] 由于RBM的对称性,在给定隐层各节点状态时,可以反推可视层第i个神经元的激活概率:
[0094]
[0095] 其中,
[0096]
[0097] 训练RBM的目的是为了求出参数θ的取值,以拟合给定的训练样本。而参数θ可以通过最大化RBM在训练集(假设包含X个样本)上的对数似然函数学习得到,即
[0098]
[0099] 为了获取最优参数θ*,可以使用随机梯度上升法求解 其中的关键在于计算(x)log P(v |θ)关于各个模型参数的偏导数。
[0100] 由于
[0101]
[0102] 另 表示θ中的某一个参数,则对数似然函数 关于 的梯度为:
[0103]
[0104] 其中,<·>P表示求关于分布P的数学期望;P(h|v(t),θ)表示在可视层单元限定为已知的训练样本v(t)时,隐层的概率分布,这一项比较容易计算;P(v,h|θ)表示可视层单元与隐层单元之间的联合分布,由于归一化因子Z(θ)的存在,该分布较难获得,通常只能通过Gibbs采样获取其近似值。假设只有一个训练样本时,对数似然函数关于链接权重Wij,可视层偏置ci,和隐层偏置bj的偏导数分别为:
[0105]
[0106]
[0107]
[0108] 步骤3-5-2:训练DBN,利用无标签数据逐层训练各层RBM;
[0109] 在Hitton改进DBN学习结构的同时,也发明了CD快速学习算法,现在CD算法已经成为训练RBM的标准算法。与Gibbs采样不同,Hinton指出当使用训练样本初始化v0时,仅需要使用k(通常k=1)步Gibbs采样便可以得到足够好的近似。在CD算法中,可见单元的状态被初始化为一个训练样本,该算法可以简述为:
[0110] 对 初始化v(0):=x,然后执行1步Gibbs采样,先后执行
[0111] (1)利用P(h|v(t-1))采样出h(t-1);
[0112] (2)利用P(v|h(t-1))采样出v(t);
[0113] (3)利用采样后得到的v(t)近似估计公式11,12,13中对应的期望值
[0114] 基于CD的RBM快速学习算法,表述如下:
[0115] 输入:训练样本X,x∈X;
[0116] 学习速率ε,最大迭代周期k;
[0117] 可视层V输入节点n,v(t)表示第t个周期时的可视层;
[0118] 隐层H单元个数m,h(t)表示第t个周期时的隐层;
[0119] 输出:链接权重矩阵W,可视层偏置矩阵c,隐层偏置矩阵b;
[0120] 通过自底向上组合多个RBM即可构建一个DBN,下层RBM的输出即为上层RBM的输入,由于该网络神经元激活函数对[0,1]区间的数据敏感度较高,故在训练过程中,要根据实际情况采用高斯-伯努利RBM或伯努利RBM。
[0121] P(v,h1,h2,.....hl)=P(v|h1)P(h1|h2)…P(hl-2|hl-1)P(hl-1,hl)    (14)[0122] BP算法是利用CD算法得出的神经网络参数初始化BP算法神经网络的参数,再用有标签的数据进行训练,输出结果纯在误差则误差反传并修正误差。
[0123] 步骤3-5-3:对已获取的DBN采用BP算法进行调整;
[0124] 利用DBN深度学习结构完成对无标签数据的学习后,得到一个具有一定认知识别能力的神经网络,随后通过加入带标签的训练样本,利用BP算法继续对所得的DBN模型做进一步的调优训练,从而提升该模型的精准度。与无监督学习部分相比,有监督的学习部分最大区别在于BP算法的训练过程需要期望输出数据项的输入,在本实施方式中标签项即为BP算法的期望输出数据项。BP算法由正向传播和误差反传两个部分组成。
[0125] 正向传播:输入样本→输入层→隐层→输出层。
[0126] 若输出层的实际输出与期望的输出不符,则开启误差反向传播。
[0127] 误差反传:误差→隐层(修正各隐层权值)→输入层。
[0128] 步骤3-5-4:利用测试数据测试DBN的准确率;
[0129] 其主要目的是通过将输出误差反传,将误差分摊给各层所有单元,从而获得各层单元的误差信号,进而修正各单元的权值。本阶段的BP算法主要用于对上一阶段的DBN神经网络模型的修正,故模型中的可视层、隐层均继承DBN中的参数,在训练结束后通过逻辑回归分类器输出结果。其中部分参数定义如下表4:
[0130] 表4 BP神经网络参数表
[0131]
[0132]
[0133] BP学习算法各参数定义完毕后,其具体计算过程分为如下四步:
[0134] 第一步计算隐层各神经元的输入,
[0135]
[0136] 然后利用激活函数计算对应隐层的输出:
[0137] houtn(k)=sigm(hinh(k)),h=1,2,……,j    (16)
[0138] 根据DBN中RBM的数量,改变w和l取值,循环该步骤直至遍历至最后一层RBM层,此时采用下列公式计算出这一阶段隐层的最终输入值和分类器的实际输出值:
[0139]
[0140] yout0(k)=sigm(yino(k)),o=1,2,3    (18)
[0141] 第二步利用网络期望输出和实际输出计算误差函数对输入层的各神经元的偏导数:
[0142]
[0143]
[0144]
[0145]
[0146] 第三步,修正连接权重:
[0147]
[0148]
[0149] 第四步计算全局误差:
[0150]
[0151] 步骤3-5-5:若准确率不满足要求,返回步骤3-5-1,重新确立DBN结构;否则,当前DBN即自适应动作类型判定选择模型。
[0152] 随后判定网络误差是否满足要求,若误差精度达到预设值或学习次数大于最大迭代次数,则结束算法,否则将选取下一个学习样本及对应的期望输出,进入下一阶段的学习。值得注意的是,DBN中的层数L和节点数N通常是根据经验预选得来,目前尚无有效的分析方法可以直接获得最优解,故此需要多次调整模型架构来找出最好的网络结构,BP算法主要是用于对DBN网络的优化,优化效果主要由训练样本标签化的质量决定。
[0153] 步骤3-6:生成自适应方法库;
[0154] 自适应方法库中包括组件级数据、虚拟机级数据、物理机级数据、云环境级数据与自适应动作指令之间的对应关系。
[0155] 步骤4:根据决策的自适应动作进行云服务性能自优化;
[0156] 步骤5:反馈学习,更新自适应方法库,返回步骤1。
[0157] 本方法利用深度学习算法学习目标组件在不同环境中下的历史优化轨迹数据,从而建立并训练具有场景识别能力的DBN神经网络模型,该模型将通过对组件所在云环境的场景进行分析识别,最后计算出当前环境下最佳的自适应动作类型。初始部署情况与拓扑结构如图6所示,实验的目标组件为地听云服务中虚拟机V3上的后续路线规划组件C7。
[0158] 待测云服务的现有资源调整、副本部署和服务迁移三种自适应优化动作,它们将在服务性能下降至超出SLA约束时,将依次生成各自的自适应动作序列,最后在服务性能自适应决策模块中进行代价收益评估,优胜的动作序列将用于执行。在执行本发明的自适应动作类型判定选择之前,地听云服务已经在多种测试环境中下试运营了一段时间,在这段时间内分别给C7组件施加恒定的过量负载压力,致使其违反SLA约束事件并启动自适应优化过程,直至组件恢复服务性能后重置实验环境,多次重复上述步骤。在上述过程中,每次组件触发优化事件后,地听云服务的自适应优化模块都将依次计算出三种自适应动作下的动作序列,随后通过代价收益模型完成对各动作序列的评价,最后选择代价最低收益最高的动作序列来执行,表5中展示了不同自适应动作在完成自适应优化的平均时间开销。
[0159] 表5不同自适应动作序列生成过程的时间开销
[0160]
[0161] (1)DBN的自适应动作类型选择模型的训练
[0162] 在上述有效自优化轨迹数据的基础上展开,自适应动作类型选择模型的建模目标为虚拟机,建模目的是当虚拟机中所部署的组件的服务性能违反SLA约束时,该模型将根据组件特性、虚拟机自身资源量以及其所在云环境的实际资源情况,帮助虚拟机完成对该组件服务性能的最佳自适应优化动作类型的选择。
[0163] 1)学习数据提取与处理
[0164] 实验过程中,模型学习样本sample_set由组件特征信息和历史环境信息sample_x和组件标签信息sample_y组成。无监督学习中的训练样本train_x、有监督学习中的训练样本finetuning_x和测试样本test_x均来源于sample_x,有监督学习中的训练样本finetuning_y与测试样本test_y来源于sample_y。sample_x中的参数均由组件级、虚拟机级和物理机级三个层次的数据项构成,扩增物理机和虚拟机的数据项可以完成对云环境的数据描述。虚拟机最多能同时部署2个服务组件,在学习样本中1-12项为组件级数据,连续6个数据项描述一个组件;13-22项为物理机级数据,实验中有两台工作站,每5个数据项描述一台工作站;23-70为虚拟机数据项,实验虚拟机数为6,每8个数据项描述一台虚拟机,学习样本的训练数据项共计70项,sample_x的数据结构见图7。sample_y即标签项,标签由三个二进制位组成,共计3位,资源调整场景下采集的数据的标签值为100、副本部署场景下采集的数据的标签值010、服务迁移场景下采集的数据的标签值001。
[0165] 从上述过程C7组件在的有效历史优化轨迹信息中抽取了300条优化轨迹信息,其中资源调整、副本部署和服务迁移的自适应优化轨迹信息各100条。抽取方法如下:以事件触发点为参考点,前后各取3条实验数据,共计7条d1.....d7,取其均值作为学习sample_x的采样值dture。即
[0166]
[0167] 对应的组件触发事件后,最终执行的动作序列所对应的动作类型即为sample_y取值。完成学习数据的提取与预处理后,下一步需要将其转化为学习样本。
[0168] 2)数据样本化
[0169] 数据样本化的目的是将监测信息转化为训练样本,由于DBN神经网络中神经元的激活函数为sigmod函数,该函数仅对[0,1]之间的数据敏感,故此需要将监测信息中的数据转化为[0,1]之间的小数。大部分数据项(例如内存利用率、磁盘利用率等)的学习样本值dsample转化可以用当前实际值dtrue除以虚拟机或物理机的总量dtotal来获取。
[0170] dsample=dtrue/dtotal    (27)
[0171] 比较特殊的数据项,例如数据项c_can,在基准测试中各组件在SLA约束内的c_can临界值已经被测出,适当放缩该值即可得该组件c_can的上限值,当前负载的实际值与该上限值的比值,即为c_can样本化后的取值。对于数据项c_id的转化,由于地听服务的组件共有8个,采用离散标记法,用0.1、0.2....0.8分别对应C1—C8这8个组件,从而完成该数据项的转化,此外在实验过程中,我们c_id的实际取值为0、0.1…0.8,6其中0为保留位。
[0172] 将300条历史优化轨迹信息数据转化成了学习样本,随后按照学习样本的标签项均匀筛选出200条为无监督学习的训练样本,40条作为有监督学习的训练样本,剩余的60条样本用于模型测试。
[0173] (2)自适应动作类型选择
[0174] 利用Matlab来完成对DBN-RBM神经网络架构的搭建,并利用已获取的数据样本对模型进行训练,需要特别说明的一点是,当前暂无有效方法能快速计算出各模型中各参数的最优值,只能在实验过程中根据实验结果逐步调节参数取值。
[0175] DBN-RBM的建模过程主要包括了两组实验,第一组用于探索RBM层数对DBN关于自适应动作类型选择结果的影响,第二组用于比较RBM中神经元数对DBN关于自适应动作类型选择结果的影响。在第一组实验中,比较1层、2层和3层RBM的效果,层内节点分别为200,100,50。实验结果如表6所示。
[0176] 表6不同DBN网络结构的效果
[0177]
[0178] 在第二组实验中,在两层RBM的DBN结构基础上,测试RBM层内不同神经元数对DBN性能影响,DBN的两层RBM层内节点数相同,实验数据如表7所示。
[0179] 表7不同RBM网络的效果
[0180]
[0181] (3)实验结果与分析
[0182] 实验结果证明在一定范围内增加RBM的层数或层内神经元数有利于提升DBN的性能,当RBM层数过少或过多时,则DBN则会出现欠拟合或过拟合的现象,从而降低DBN的性能。另一方面,3层RBM与2层RBM相比,DBN的提升效果并不明显,说明2层RBM已经足以处理自适应动作类型的选择问题,Hinton在其研究中也指出,3层结构已经足以提取足够的特征用于分类。此外和传统的面向动作序列的代价收益评估方法相比,基于深度学习的组件自适应动作类型选择模型的正确率接近97%,平均耗时在0.025s。
[0183] 传统自优化过程的时间开销:
[0184] Tcost=t事件判定+t资源调整+t副本部署+t服务迁移+t代价收益评估+t动作序列执行[0185] ΔTcost=t资源调整+t副本部署+t服务迁移+t代价收益评估
[0186] 改进后的自适应优化过程的时间开销:
[0187] T′cost=t事件判定+t最佳自适应动作类型预选+t动作序列生成+t动作序列执行[0188] ΔT′cost=t最佳自适应动作类型预选+t动作序列生成
[0189] Tcost和T′cost的时间开销差异主要在动作序列生成与选择部分,根据实验数据,可以计算出传统ΔTcost=3.2+4.7+3.8+0.325=12.025s;自适应动作类型预选时间开销约为0.025s,假设T′cost中的t动作序列生成等于三种自适应优化动作序列的平均生产时间3.9s,则ΔT′cost=0.025+3.9=3.925s,可以看出改进后的自适应优化过程在动作序列生成及选择阶段的时间开销大约为改进前的1/3,动作序列选择与生成部分的时间开销对比图如4所示,验证了自适应动作类型选择模型训练算法的有效性。