基于生成式对抗网络的软件系统性能优化方法与流程

文档序号:16972272发布日期:2019-02-26 18:40阅读:223来源:国知局
基于生成式对抗网络的软件系统性能优化方法与流程
本发明属于计算机
技术领域
,特别涉及一种对软件系统的性能优化方法,可用于互联网、大数据的处理。
背景技术
:当下,在互联网、大数据高速发展的时代,随着数据量的日益增大,如何在硬件系统一定的条件下,优化软件系统的性能,已经被广泛讨论。目前流行的一些分布式软件系统包括spark、hive、hbase和kafka等。因而,对各种软件系统如何进行精细化性能建模与优化仍然是工业界和学术界的热点问题。深圳先进技术研究院所在其申请的专利文献“一种数据感知的spark配置参数自动优化方法”(申请号:201611182310.5申请日期:2016.12.20公开号:cn106648654a)中公开了一种数据感知的spark配置参数自动优化方法。该方法通过选定spark应用程序,进一步确定上述应用程序中影响spark性能的参数,确定上述参数的取值范围;在取值范围内随机生成参数,并生成配置文件配置spark,配置后运行应用程序并收集数据;将收集的spark运行时间、输入数据集、配置参数值数据构成横向量,多个向量构成训练集,通过随机森林算法对上述训练集进行建模;使用构建好的性能模型,通过遗传算法搜索最优配置参数。该方法存在的不足之处是,需要在实际环境上评价每个配置对分布式内存计算框架spark集群性能影响力,作为随机森林模型的训练集,浪费大量时间成本。北京航空航天大学在其申请的专利文献“一种基于复杂网络理论评估软件系统可靠性的方法”(申请号:201810088519.8申请日期:2018.1.30公开号:108255733a)中公开了一种基于复杂网络理论评估软件系统可靠性的方法。该方法通过确定软件的抽象层次,确定复杂网络模型中的节点,然后对软件的源代码进行解析,提取相应的节点以及节点之间关系,构建复杂网络模型,再对软件的复杂网络模型进行静态分析和动态模拟分析,计算模型的宏观与微观的静态参数以及动态性能参数,最后根据静态计算以及动态分析的结果对软件的可靠性进行评估,即可以完成对基于复杂网络理论评估面向过程编程的软件系统可靠性的方法的构建。该方法存在的不足之处是随着复杂网络拟合效果的提升,其网络复杂度也在提升,训练难度提升,导致网络容易出现崩溃等问题。因此,对于软件系统的性能优化,尚且存在一些问题,包括思路固化老化,无法避开用各种方法求解各个特征对最终性能权重的传统方法,创新层面上进步不大。同时,由于方法在根本思路上的一致性,导致在性能的改进上无法取得较大的进展,遭遇瓶颈。在使用传统机器学习方法时,由于需要样本量过多导致算法的时间成本过大。或者在使用一些新式的机器学习算法时,比如复杂网络,虽然能取得较好的结果,但却难于训练,易于崩溃,不适用于一些实际场景。技术实现要素:本发明的目的在于针对上述现有技术的不足,提出一种基于生成式对抗网络的软件系统优化方法,以在保证训练拟合度较好的前提下,降低网络的复杂度,扩展适用场景,大幅度降低训练难度,节约时间成本。为实现上述目的,本发明的技术方案包括如下:(1)获取样本特征集合:(1a)根据软件系统的官方配置文档,得到所有可配置参数,筛选并删除对软件性能无影响的参数;(1b)将筛选留下的参数按照官方给出的重要性程度进行排序,再次删除对性能影响程度特别小,且对性能预测没有意义且完全可忽略的参数,得到样本特征集合;(2)在服务器内安装软件系统,根据步骤(1)获取的样本特征集合,搭建软件系统的实际运行环境,随机取不同的参数值,得到多组样本特征,通过对样本特征测试,获取每一组样本对应的软件系统吞吐量或者时延数据,得到实验样本集合;(3)遍历步骤(2)得到的实验样本集中的所有参数,对其中属于枚举变量的参数进行独热编码,并将所有的变量进行归一化,产生能够进行模型训练的结构化数据集合;(4)选择训练样本:4.1.对得到的多组结构化数据按照吞吐量或者时延值进行排序,根据实际需求,选取若干数量的最好样本特征进行迭代训练;4.2.每次迭代过程中,再从上一步选择的样本中随机且不重复选择一半数量的样本特征,作为训练样本,并打乱顺序输入到生成式对抗网络中,以保证训练样本的多样性和可靠性。(5)训练生成式对抗网络:5a)在第一次迭代训练开始时,输入选择好的训练样本x,使用生成式对抗网络中的生成网络模型g,产生与训练样本维度一致的生成样本z;5b)将训练样本x和生成样本z一起输入对抗网中的判别模型d中,得到判别模型d对训练样本x真实性的判别概率ex和生成样本z真实性的判别概率ez;5c)根据5b)的两个判别概率通过下式对生成模型g和判别模型d进行修正:其中,v表示系统性能;5d)开始第二次迭代,重复5a-5c,不断优化生成模型g和判别模型d,直至达到预先设定好的迭代次数,得到最终的优化样本;(6)生成式对抗网络效果验证:将通过生成式对抗网络模型得到的优化样本在软件系统上进行测试,得到优化样本的吞吐量或者时延值;将优化样本与原始训练样本的吞吐量或者时延值进行对比,得到生成式对抗网络模型对软件系统的性能优化效果。本发明具有如下的优点:1)本发明通过使用一种基于两个网络对抗训练的方式进行优化,打破了原有软件系统性能优化方法的固有思路,使用一个网络进行模拟生成特征配置,另一个网络判断性能好坏,并交替迭代进行这两个过程的方法来进行优化,结果良好,同时由于两个网络均使用三层全连接网络,易于训练。2)本发明通过设计一种基于深度学习的网络,并通过独热编码的方式将所有特征数字化,可以输入网络进行训练学习,且考虑到所有特征之间相互影响的关系,得到考虑较为全面的结果。3)本发明通过实验样本每次随机选择一半样本特征的方法,保证了训练样本的多样性和随机性,也可以保证样本的质量。同时,由于避免通过大量实验获取大量样本的过程,最大限度地节约了时间成本。附图说明图1是本发明的实现流程图;图2是本发明中生成式对抗网络内部逻辑的子流程图;图3是本发明中的生成式对抗网络结构图;图4是在使用spark软件情况下对本发明的优化样本与原始训练样本的性能对比图。图5是在使用kafka软件情况下对本发明的优化样本与原始训练样本的性能对比图。具体实施方式下面结合附图对本发明做详细描述。现有技术中存在着对于软件系统不同数量的特征参数,进行不同思路的优化,最终通过求解不同特征权重以及不同特征之间相互影响关系,得到系统性能关于特征的一些函数关系,并能够进行一定程度上的优化。但是其思路终究离不开特征关于性能的权重关系,最终还是通过探究性能与特征之间关系的方法进行优化。并且经过多年的探索,这种思路虽然取得较好结果,但正是由于根本思路的一致性,却也遇到一些瓶颈,比如未来的探索创新空间有限,优化程度过低,成本偏高。本发明正是为要解决现有技术的这些问题而提出一种分布式基于生成式对抗网络的软件系统性能优化方法。以下所给出的实施例,仅用于说明本发明,但不构成对本发明的任何限制。参见图1,本发明给出如下三个实施例:实施例1:基于spark软件系统的性能优化步骤1,获取样本特征集合。(1a)根据spark软件系统的官方配置文档,得到所有可以进行配置的参数,从分布式内存计算框架spark集群的所有待修改的配置参数中,选择优化标准中推荐修改的配置参数,组成待优化的配置参数集合;根据参数说明标准,设置分布式内存计算框架spark集群中待优化的配置参数集合中每个参数的取值类型和范围,从每个参数的取值范围中提取默认取值,将所有默认取值组成默认配置;(1b)筛选并删除对性能完全没有意义的特征:查看所有特征的详细信息,剔除对性能完全没有影响的特征,例如数据的存储位置,监听的端口号等。(1c)将经筛选留下的特征按照官方给出的重要性程度排序,再次删除对性能影响程度特别小,对性能是否良好没有意义,完全可以忽略的特征,得到样本特征。针对spark系统,将每个特征按照重要性程度排序,将对性能影响程度特别小,对性能好坏没有意义,完全可以忽略的特征进行删除。重要性程度指的是某参数对软件性能的影响程度。最后得到对于spark系统性能影响较大的特征集合如表1:表1spark特征列表表1中的信息包含名称、类型和采样值。其中所展示参数名称仅是从所有spark参数中选出为测试实验所需要的几种参数,并构成spark特征集合。步骤2,软件系统性能测试。(2a)在服务器安装配置软件系统,根据表1中的13种参数集合,确定软件系统的实际运行环境,搭建由多台装有分布式内存计算框架spark的硬件配置相同的计算机组成的集群,根据步骤1特征集合中采样值,配置实际运行系统,确定平台的处理逻辑;本步骤选择阿里云上4台硬件配置完全一样且都装有分布式内存计算框架的计算机,搭建分布式大数据spark集群,配置实验中每台计算机的规格参数,结果如表2所示。表2计算机参数规格一览表操作系统centos6.5处理器核数4内存20gb硬盘200gb(2b)搭建集群完成后,进行时间延迟性能测试,获取每一组样本对应的性能数据,具体实现如下:以三次不同的用户输入,使用基于该集群的分布式内存计算框架spark配置参数自动调优方法进行实际系统实验,验证在优化后的特征配置下分布式内存计算框架spark集群性能的表现优于输入的样本特征,每次仿真实验场景的序号、用户指定的待处理数据、分析方法、搜索时间、初始搜索中待搜索的配置参数集合的总数k和每次迭代搜索过程中搜索的配置总数m,结果如表3所示。表3工作负载参数一览表序号待处理数据分析方法搜索时间km1506.9mpagerank(网页检索)485分钟3172027.5gsort(机器学习)360分钟16320376.5gwordcount(统计分析)320分钟21120(2c)按照表3配置进行测试,分别得到特征集合中每一组配置参数在三种场景下的时延。步骤3,实验结果预处理。(3a)对属于枚举变量的特征进行独热编码处理:遍历特征集合,先判断是否是枚举变量,如果不是枚举变量则直接输入生成式对抗网络;如果是枚举变量,则需要对属于枚举变量的特征进行独热编码处理,即采用n位状态寄存器对n个状态进行编码,每个状态都有其它独立的寄存器位,并且在任意时候只有一位有效,用这种一位有效的编码是分类变量作为二进制向量的表示;通过独热编码,可将枚举特征的取值扩展到欧式空间,枚举特征的某个取值就对应欧式空间的某个点,同时可以将枚举特征离散化成多个特征的组合,以被生成式对抗网络直接处理,使得特征之间的欧式距离计算更加合理;(3b)将所有的变量进行归一化处理:对特征取值进行标准化处理,使每一个特征的取值满足(0,1)的正态分布,产生能够进行模型训练的结构化数据,使得生成式对抗网络更加稳定,特征之间的欧式距离计算更加合理。之所以这么做,是因为在大多数机器学习或者深度学习算法中,特征之间距离的计算或相似度的计算是非常重要的,而本实例对于距离或者相似度的计算都是在欧式空间进行相似度计算,而生成式对抗网络作为一种深度学习算法,需要进行归一化的预处理提升算法稳定性和鲁棒性。步骤4,选择训练样本。(4a)考虑到在性能较好的配置特征周围也会有使得性能较好的配置,应该选取性能最好的样本训练,本实例对得到的多组结构化数据按照时延值进行从小到大排序,根据实际需求,选取若干数量的最好样本特征作为初始训练样本进行迭代训练;(4b)每次迭代过程中,随机选取上一步选择的初始训练样本中的一半样本,并随机排列,作为这一次迭代过程的训练样本x,输入到生成式对抗网络中,以保证训练样本的多样性和可靠性。之所以选择一半,是因为如果选择太少,样本潜在特性不易学习;如果选择太多,又无法保证样本多样性。步骤5,对生成式对抗网络进行训练,获得配置参数。系统软件的性能优化问题属于多元数据处理,因此对性能进行优化时要考虑到各个特征之间的相互影响。本实例通过设计一种基于深度学习的生成式对抗网络gan模型,将spark的性能与特征之间建立联系,使得本方法能够基于选取好的训练样本,利用生成模型g学习出spark性能良好的配置的潜在特性,并使用另一个判别网络d进行判断,计算误差,不断优化结果。该模型不再使用以往进行性能优化必然寻找不同特征间权重大小关系的思路,而利用网络的拟合性探寻性能和特征的关系,不断优化,并直接得到优化的配置参数。结果表明,模型可以通过探索不同特征在其配置空间内部的关系得到使得性能较好的特征配置。参照图2,本步骤的具体实现如下:(5a)把步骤(4a)得到的初始训练样本输入到生成式对抗网络;如附图3所示,所述生成式对抗网络,包括:判别网络模型d和生成网络模型g,这两个网络均使用经典的三层全连接网络结构,其中:所述的生成网络模型g,如图3(b)所示,其是一个包含输入层、隐含层和输出层的三层全连接网络,该输入层包含5个结点,每个节点为[-1,1]范围内的随机数;该隐含层有128个节点,且每个节点与输入层之间有权重关系,初始化权重为[-1,1]范围内的随机数;该输出层含有n个结点,且每个节点含有激活函数relu,其中n的取值为具体软件的参数个数,在本实例中,spark的软件参数n为13;所述的判别网络模型d,如图3(a)所示,其是一个包含输入层、隐含层和输出层的三层全连接网络,该输入层包含n个结点,即13节点;该隐含层有128个节点,且每个节点与输入层之间有权重关系,初始化权重也是[-1,1]范围内的随机数,且每个节点含有激活函数sigmoid;该输出层含有1个结点,表示输入样本真实性的概率,且每个节点含有激活函数relu;(5b)使用生成网络g,产生与训练样本x维度一致的生成样本z,根据生成网络g的输入层始终为[-1,1]范围内的随机数,通过与隐含层节点之间的权重关系计算得到该网络的隐含层节点值,将该隐含层节点值再传递到输出层,输出层的节点值通过relu函数计算,得到最终与训练样本x形式一致的生成样本z;(5c)将生成样本z和步骤(4b)选择出的训练样本x分别输入判别网络d,经过与隐含层的权重关系计算得到该网络的隐含层节点值,隐含层节点值经过sigmoid函数计算,传递到输出层,输出层节点值最后经过relu函数计算,得到判别网络d关于两组样本真实性的判别概率;(5d)根据目标公式对生成式对抗网络进行优化:所述目标公式表示如下:其中,v表示系统性能,g表示生成网络,d表示判别网络,x~pr(x)表示关于样本特征x的分布,r表示样本的参数数量,z~pn(z)表示关于样本特征z的分布,n表示样本的参数数量,e表示求其均值;(5d1)对判别网络d进行优化:由上述目标公式可看出,在对判别网络d进行优化时,需要最大化两个概率的均值之和,故按照深度学习的思维,得到判别网络的损失函数:将步骤(5c)求得的两个概率代入判别网络的损失函数d_loss,通过不断最小化该损失函数,优化判别网络d不同层节点间的权重;(5d2)对生成网络g进行优化:由上述目标公式可看出,在对生成网络g进行优化时,需要最小化生成样本的概率均值,故按照深度学习的思维,得到生成网络的损失函数:将步骤(5c)求得的两个概率代入生成网络的损失函数g_loss,通过不断最小化该损失函数,优化生成网络g不同层节点间的权重;通过这两个过程,生成网络产生真实样本的能力会提升,判别网络判断样本真实性的能力也会提升;(5e)优化后的生成网络产生新的生成样本z;(5f)重复(5c)到(5e),直至达到满足设置好的迭代次数,根据实际需求,保存最后若干次生成网络最终产生的生成样本z',作为最终优化结果,其中,z'为一个m*n的矩阵,m表示优化样本的数量,n表示样本特征的参数个数。所述迭代次数为经验值,本实例取值300000次。步骤6,优化效果验证。根据生成式对抗网络生成的样本z',在spark系统上进行测试,得到优化样本z'的时延值,将生成式对抗网络的性能与原始训练样本的时延值进行对比,即是当软件以吞吐量作为性能标准,则取训练样本和优化样本吞吐量越大的为性能越好;若以时间延迟为性能标准,则取训练样本和优化样本时延越小的为性能越好。本实例的spark以时间延迟为性能标准,故取训练样本和优化样本时延越小的为性能越好。本实施例的效果可通过以下仿真进一步说明:根据步骤1所选取的13种参数集合,在步骤2所确定的硬件环境和场景中进行spark测试实验,获得spark的训练样本集合x的时间延迟值,再根据步骤3-5的生成式对抗网络算法过程,对特征参数进行优化,获得优化样本z',再对优化样本z'进行测试,得到其对应时间延迟,将训练样本x和优化样本z'的时间延迟值做对比,结果如图4所示。图4中的横坐标代表在三种不同的场景下,训练样本取最好的32组结果的平均值,优化样本结果也取32组平均值,训练样本和生成式对抗网络优化后的样本的性能对比,纵坐标表示分布式内存计算框架spark集群分析待处理数据的平均时间,单位为毫秒。图中前者浅色柱体代表训练样本,后者深色柱形代表优化样本。从图4可以看出,相同场景下的深色柱形都低于浅色柱形,在三种不同场景下利用优化样本的分布式内存计算框架spark集群分析待处理数据,其时间都小于训练样本配置,表明利用生成式对抗网络算法,可以对软件系统进行特征配置优化,减少了spark集群分析处理数据的时间,验证了基于生成式对抗网络的软件系统性能优化方法的有效性与合理性。实施例2,基于kafka软件系统的性能优化步骤一,获取样本特征集合:(1.1)根据kafka的官方配置文档,得到所有能进行配置的参数,筛选并删除对软件性能完全没有意义的参数;(1.2)将筛选留下的参数按照官方给出的重要性程度进行排序,再次删除对性能影响程度特别小,且对性能预测没有意义且完全可忽略的参数,得到kafka部分消息特征集合,如表4所示。表4kafka部分特征列表特征列表中的信息包含名称、描述、类型、默认值、有效值和重要程度。步骤二,软件系统性能测试:(2.1)在服务器安装配置kafka软件系统,选择一台性能较优的服务器,然后在服务器上创建4台性能完全一样的虚拟机,其中两台虚拟机用来搭建kafkabroker集群,另外两台用来搭建zookeeper集群,通过四台服务器搭建实时数据处理平台。实验中服务器以及虚拟机的规格参数如表5,表6所示。表5服务器参数规格表6虚拟机参数规格虚拟机数量4操作系统centos6.5处理器核数4内存8gb硬盘50gb(2.2)确定硬件配置后,根据步骤一得到的参数集合,确定软件系统的实际运行环境,结合本发明的生成式对抗网络方法,确定生产者和消费者,改变每次发送消息长度或者生产者数量,构成四种场景如表7,对kafka这一消息中间件的吞吐量性能进行测试。表7kafka实验场景序号发送消息长度(字节)生产者数量(个)表示方法11001l100p121003l100p3310001l1000p14100001l10000p1(2.3)按照表7场景进行kafka测试,生产者发送消息,消费者接收消息,最后得到特征集合中每一组配置参数在四种场景下的吞吐量。步骤三,对步骤2的测试结果进行预处理。本步骤的具体实施与实施例1的步骤3相同。步骤四,选择训练样本。本步骤的具体实施与实施例1的步骤4相同.步骤五,对生成式对抗网络进行训练。本步骤的具体实施与实施例1的步骤5相同.步骤六,优化效果验证。根据生成式对抗网络生成的样本z',在kafka系统上进行测试,得到优化样本z'的吞吐量,将生成式对抗网络的性能与原始训练样本的吞吐量进行对比,本实例的kafka软件以吞吐量为性能标准,故取训练样本和优化样本吞吐量越大的为性能越好。本实施例的效果可通过以下仿真进一步说明:根据步骤一所选取的特征集合,在步骤二所确定的硬件环境和场景中进行kafka测试实验,获得kafka的训练样本集合x的时间吞吐量,再根据步骤三到步骤五的生成式对抗网络算法过程,对特征参数进行优化,获得优化样本z',再对优化样本z'进行测试,得到其对应吞吐量,将训练样本x和优化样本z'的时间吞吐量做对比,结果如图5所示。图5中的横坐标代表在四种不同的场景下,训练样本取最好的32组结果的平均值,优化样本结果也取32组平均值,训练样本和生成式对抗网络优化后的样本的性能对比,纵坐标表示分布式消息中间件kafka集群发送消息的平均速率,即吞吐量,单位为mb/s。图中前者浅色柱体代表训练样本,后者深色柱形代表优化样本。从图5可以看出,相同场景下的深色柱形都低于浅色柱形,在四种不同场景下得到优化配置的分布式消息中间件kafka集群发送数据,其吞吐量都明显大于训练样本配置,表明利用生成式对抗网络算法,可以对软件系统进行特征配置优化,增大了kafka集群单位时间内发送消息的数据量,再次验证了基于生成式对抗网络的软件系统性能优化方法的有效性与合理性,也说明该方法具有一定的广泛性和适用性。以上描述仅是本发明的两个具体实例,并未构成对本发明的任何限制,显然对于本领域的专业人员来说,在了解本发明的内容和原理后,都可能在不背离本发明原理、结构的情况下,进行形式和细节上的各种修改和改变,例如本发明方法可用于redis、hbase、hive和mysql等软件系统,但是这些基于本发明思想的修正和改变仍在本发明的权利要求保护范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1