本发明涉及大数据信息处理技术领域,尤其涉及一种利用强化学习进行大数据平台调参的方法和系统。
背景技术:
大数据平台是指以海量数据处理为目标,实现了多机器之间资源调度、任务分配、同步计算和结果展现的平台。由于需要使用多台机器之间的同步,所以需要利用可以跨平台部署的编程技术。而java就是一种非常合适的跨平台编程语言,由于使用了jvm作为底层支持,使得平台的部署可以不局限于操作系统和硬件架构,可以在不同架构的机器中实现数据计算,例如,目前最为流行的大数据平台spark是使用scala语言(一种以java和jvm为基础的语言)为基础的大数据计算平台。同时,分布式处理拥有许多的细节需要考虑,所以spark拥有非常多的可供调节的各项参数。
近年来,对spark的参数调优的研究从来没有停止。例如2018年asplos的一篇论文(datasize-awarehighdimensionalconfigurationsauto-tuningofin-memoryclustercomputing),使用梯度回归树为spark的42个参数进行运行时间的建模,并用遗传算法从模型中寻找最优配置,这种方法需要大量的训练数据;又如2017年socc的论文(bestconfig:tappingtheperformancepotentialofsystemsviaautomaticconfigurationtuning),通过使用分型和值域分割,从而在短时间内找到数据集的最优配置,这种方法输入空间庞大,也需要大量数据作为支撑,从而导致了大量的时间浪费。
现有技术虽然能够实现最优配置的寻找,但是存在两个问题:1)、需要通过大量执行程序保存数据来进行调参,例如上述第一种方法需要利用执行的数据进行建模,而第二种方法需要多个运行数据来涵盖整个输入空间。2)、仅对spark本身的参数进行调整,而忽略了spark底层的jvm参数对运行速度的影响。
技术实现要素:
本发明的目的在于克服上述现有技术的缺陷,提供一种利用强化学习进行大数据平台调参的方法和系统。
根据本发明的第一方面,提供一种利用强化学习进行大数据平台调参的方法。该方法包括以下步骤:
根据调优参数的取值范围描述其多个行为;
利用大数据平台执行调优参数的多个行为并根据执行性能情况获得调优参数的多个行为的回报;
将调优参数的多个行为和各行为对应的回报输入到深度神经网络模型进行训练,学习获得调优参数的优化行为路径。
在一个实施例中,对于调优参数,采用量子化思想基于固定单位数量描述其对应的多个行为。
在一个实施例中,对于数值类型的调优参数,以数值范围的上限值的百分比来描述其多个行为。
在一个实施例中,在执行调优参数的多个行为过程中,将每次从大数据平台获得的调优参数的行为、回报信息放入到记忆库中构成训练样本集。
在一个实施例中,对深度神经网络模型进行训练时,从所述记忆库随机选出批量训练样本,通过更新深度神经网络模型学习到各调优参数的优化行为路径。
在一个实施例中,所述调优参数包括spark相关参数和jvm相关参数。
在一个实施例中,构建多个深度神经网络模型并行执行多个调优参数的调节,其中每个深度神经网络模型对应一个调优参数的调节。
根据本发明的第二方面,提供一种利用强化学习进行大数据平台调参的系统。该系统包括:
用于根据调优参数的取值范围描述其多个行为的模块;
用于利用大数据平台执行调优参数的多个行为并根据执行性能情况获得调优参数的多个行为的回报的模块;
用于将调优参数的多个行为和各行为对应的回报输入到深度神经网络模型进行训练,学习获得调优参数的优化行为路径的模块。
在一个实施例中,所述执行性能情况包括任务运行时间、资源利用率、jvm性能中的一项或多项。
与现有技术相比,本发明的优点在于:使用无监督的强化学习作为大数据平台调参的手段,避免了大量寻找训练数据的时间。此外,实现了jvm参数和spark参数的混合调参,具有更大的调优空间,并且通过结合两个层次的参数,能够找到更优的配置。
附图说明
以下附图仅对本发明作示意性的说明和解释,并不用于限定本发明的范围,其中:
图1是根据本发明一个实施例的利用强化学习进行大数据平台调参方法的流程图;
图2是根据本发明一个实施例的不同类型调优参数的调参操作的示意图;
图3是根据本发明一个实施例的利用强化学习进行大数据平台调参方法的运行原理图。
具体实施方式
为了使本发明的目的、技术方案、设计方法及优点更加清楚明了,以下结合附图通过具体实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用于解释本发明,并不用于限定本发明。
在本文示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它例子可以具有不同的值。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
本发明提供实际可行的,使用深度强化学习dqn(deepq-learing)为基础的大数据平台跨层次的参数调优手段。下文将以spark平台为例介绍本发明的原理和方法。应理解的是,本发明也适用于其他的大数据平台。
图1是根据本发明一个实施例的基于强化学习进行大数据平台调参方法的流程图,该方法基于深度强化学习(dqn)实现大数据平台的参数优化。具体地,该实施例包括以下步骤:
步骤s110,确定待调优参数并基于调优参数的数据类型描述其多个行为。
影响大数据平台性能的参数众多,以spark平台为例,通过调节各种参数来优化执行效率,能够提升spark作业的执行性能。
例如,参数num-executors/spark.executor.instances用于设置spark作业总共要用多少个executor(执行器)进程来执行。又如,参数executor-memory/spark.executor.memory用于设置每个executor进程的内存。
此外,考虑到spark平台底层的jvm参数对任务执行速度的影响,本发明实施例可进一步调节jvm参数。
在本发明的强化学习中,用各调优参数的取值来描述其行为。例如,在本地保存所有调优参数的可调节的范围,在描述其行为时(即进行调参),并不是直接给出调优参数的取值,而是给出对该调优参数应该进行的操作,例如,参数值变大或变小等。
又如,使用单位化调节来降低迭代次数,参见图2所示,对于数值类型的参数,以取值范围的上限值的百分比描述多个行为,具体取值包括调优参数上限值的1%、-1%、10%、-10%等。对于布尔型的参数,取值包括false和true。对于选择型参数,取值包括“选项1”、“选项2”、“选项3”、“选项4”等。通过这种参数选取方式,能够更快的寻找和迭代到最优配置,并且避免了用深度神经网络模型做回归问题的难点,这种方式对于参数空间过于庞大的大数据平台参数调优效果尤其明显。
在本发明实施例中,待调优参数作为强化学习的状态(state),以参数的取值作为参数的行为(action)。
步骤s120,利用大数据平台执行调优参数的各个行为,获取各行为的执行性能结果。
在本发明实施例的强化学习过程中,学习每个调优参数选择不同行为执行后获得的回报,所获得回报可采用任务执行时间、资源利用率或jvm的gc时间中的一项或多项来衡量,优选地,采用任务执行时间和jvm的gc时间作为回报。
步骤s130,在寻找所调优参数的最优配置过程中,采用记忆库来记录执行过的参数列表。
在本发明实施例中,采用记忆库记录下在寻找最优配置过程中,各个配置情况下的运行状态。由于在同一配置下,同一任务的运行状态趋于稳定,因此可以采用一次运行的结果来代替后续的结果。通过这种方式,能够显著降低重复计算和最优配置搜寻的成本,方便后续的重复训练,并降低训练成本。
例如,将每次从大数据平台(环境)得到调优参数、行为、回报等存储到记忆库中。
步骤s140,训练深度神经网络,学习获得调优参数的优化行为路径。
当记忆库中数据积累到一定程度时,可随机抽取出一批样本对深度神经网络模型进行训练,以获得各调优参数的优化行为路径。
为进一步理解本发明,图3示出了本发明实施例的学习框架和运行原理,该实施例是一个与spark平台相对独立的强化学习框架,主要由两个部分组成:actors与记忆库。actor的本质是一个深度神经网络dnn,其根据输入的数据从多个行动中选取合适的行为执行;记忆库的作用是记录下执行过的参数列表,以此来达到减少重复计算的目的。
结合图3所示,actor的作用是从输入参数的值中预测出各个参数可以采取的最优行为。因为参数空间过于庞大,使用单位化调节来降低迭代次数,例如,调参时,给出该参数应该进行的操作,操作列表如图2所示。
此外,在该实施例中,采用多actor并行的设计,由于需要调配的参数维度很高,一个dnn难以完全记忆下这些复杂的信息,采用一个actor只负责一个参数的调节,在提高网络操作精度的同时,能够显著降低神经网络训练的难度。
进一步地,将jvm参数也引入到参数列表中,能够实现两个层次的同时调参,这种方式具有更大的调参空间,能够获得更优的调参结果。
在图3的实施例中,记忆库的主要功能是记录下在寻找最优配置过程中,各个配置情况下的运行状态。使用数据库记录下运行状态信息后,方便后续的重复训练,其中的执行记录对于机器认识环境有重要意义,降低了系统训练的成本。
在图3的实施例中,输入数据的特点是,能同时调节jvm参数,在actor的数据输入时,包括一些与jvm表现有关的性能参数,例如,gctime,ygctime,newratio等。这些参数一定程度上表征了jvm的性能,将这些参数一同作为输入训练,有助于actor在复杂环境下采取正确的操作。
概括而言,在实际应用中,参数调优的过程包括:获得待调优参数的数值列表;对于每个参数,描述其多个行为;从多个行为中选择一个执行,根据性能变化情况获取此次的回报;将每次从大数据平台得到行为和对应的回报等信息放入到记忆池中,训练时从中随机选出小批量测试样本来训练等。
综上所述,本发明使用dqn进行环境学习与调参,无需使用大量数据进行建模,相对于现有技术的建模和检索式算法花费更少的时间;并且,由于dqn不依赖于环境,能够方便的进行迁移学习;提出状态复用的多actor的并行调参方法,加快了调参速度;使用单位化调节来降低迭代次数,由于大数据平台参数输入空间理论上是无限的,为了降低探索的时间消耗,使用量子化的思想进行固定单位数量的参数调节;使用记忆库减少重复探索消耗,强化学习过程中存在着大量的重复空间探索,使用记忆库减少这部分探索的时间消耗;此外,同时进行jvm的参数调节,对spark平台和jvm两个层次的参数进行调节,拥有更大的调参空间和更好的调参结果。
需要说明的是,虽然上文按照特定顺序描述了各个步骤,但是并不意味着必须按照上述特定顺序来执行各个步骤,实际上,这些步骤中的一些可以并发执行,甚至改变顺序,只要能够实现所需要的功能即可。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以包括但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
1.一种利用强化学习进行大数据平台调参的方法,包括以下步骤:
根据调优参数的取值范围描述其多个行为;
利用大数据平台执行调优参数的多个行为并根据执行性能情况获得调优参数的多个行为的回报;
将调优参数的多个行为和各行为对应的回报输入到深度神经网络模型进行训练,学习获得调优参数的优化行为路径。
2.根据权利要求1所述的方法,其特征在于,对于调优参数,采用量子化思想基于固定单位数量描述其对应的多个行为。
3.根据权利要求2所述的方法,其特征在于,对于数值类型的调优参数,以数值范围的上限值的百分比来描述其多个行为。
4.根据权利要求1所述的方法,其特征在于,在执行调优参数的多个行为过程中,将每次从大数据平台获得的调优参数的行为、回报信息放入到记忆库中构成训练样本集。
5.根据权利要求4所述的方法,其特征在于,对深度神经网络模型进行训练时,从所述记忆库随机选出批量训练样本,通过更新深度神经网络模型学习到各调优参数的优化行为路径。
6.根据权利要求1所述的方法,其特征在于,所述调优参数包括spark相关参数和jvm相关参数。
7.根据权利要求1所述的方法,其特征在于,构建多个深度神经网络模型并行执行多个调优参数的调节,其中每个深度神经网络模型对应一个调优参数的调节。
8.一种利用强化学习进行大数据平台调参的系统,包括:
用于根据调优参数的取值范围描述其多个行为的模块;
用于利用大数据平台执行调优参数的多个行为并根据执行性能情况获得调优参数的多个行为的回报的模块;
用于将调优参数的多个行为和各行为对应的回报输入到深度神经网络模型进行训练,学习获得调优参数的优化行为路径的模块。
9.根据权利要求8所述的系统,其特征在于,所述执行性能情况包括任务运行时间、资源利用率、jvm性能中的一项或多项。
10.一种计算机可读存储介质,其上存储有计算机程序,其中,该程序被处理器执行时实现根据权利要求1至7中任一项所述方法的步骤。
技术总结