当前位置: 首页 > 专利查询>上海大学专利>正文

一种基于Spark平台分类问题优化算法的数据聚合方法技术

技术编号:35511703 阅读:27 留言:0更新日期:2022-11-09 14:26
本发明专利技术公开了一种基于Spark平台分类问题优化算法的数据聚合方法。提出ARAggregate数据聚合模式,使得模型数据的更新过程可以在worker节点间进行,而不必由Driver节点负责聚合各个worker节点的数据之后在广播分发到各个worker节点来完成模型数据的更新。由此将数据聚合的功能从Driver节点抽离出来,使得Driver节点只负责任务运行的调度等功能,从而降低由Driver节点负载过重带来的Spark平台的性能瓶颈问题。本发明专利技术通过将ARAggregate数据聚合模式应用到Spark平台中的SGD算法中,使得worker节点根据本地数据计算出完整的本地模型,然后利用ARAggregate数据聚合模式在worker节点间进行全局模型的更新。本发明专利技术通过在Spark平台上实现ADMM算法,并将ARAggregate数据聚合模式应用到其中,实现了Spark平台上的基于新的数据聚合模式的ADMM算法。的基于新的数据聚合模式的ADMM算法。的基于新的数据聚合模式的ADMM算法。

【技术实现步骤摘要】
一种基于Spark平台分类问题优化算法的数据聚合方法


[0001]本专利技术提出了一种基于Spark平台分类问题优化算法的数据聚合方法,并应用到Spark平台分类问题的优化算法中,涉及机器学习、分布式计算,属于计算机


技术介绍

[0002]随着移动互联网的发展,智能设备的普及化,物质世界的各种网络化,人类活动所产生的数据量呈现出爆炸式增长的态势
[1],而对这种巨量数据的处理技术也显得越发重要。传统的单节点处理数据的方式已经不足以胜任如今的需求,以Spark
[2][3]为代表的分布式的大数据处理框架得到了广泛的应用。例如腾讯、百度、雅虎等知名互联网公司均拥有自己的Spark集群来支撑数据处理
[4]。
[0003]但随着大数据产业的不断发展,Spark平台的一些瓶颈也逐渐显露出来,例如随着Spark集群节点数量的增加,负责协调全局并聚合各个从节点数据的主节点会变得不堪重负,因此成为了整个系统的瓶颈。虽然目前有着性能更好的参数服务器
[5][6][7]技术,但是将数据处理的任务从Spark平台迁移到参数服务器平台上,用户无疑需要经历一个数据与程序的迁移过程并且需要付出较高的人力成本和时间代价。
[0004]原有的Spark训练模型的分布式求解的实现核心是模型集中,计算分布。在分布式计算过程中,所求解问题的模型只集中在一台服务器上。每次迭代时,在各子节点上并行计算出该节点上训练数据所对应的损失值和梯度值,并将这些信息聚合到模型所在节点,通过SGD
[8]/L

BFGS优化算法进行参数的更新。之后将参数分发到各子节点进行下一次迭代直至收敛。比如训练一个逻辑回归模型时,一次迭代求解的过程可以归纳为如图1迭代过程示意图所示四个步骤:
[0005]1)模型广播:Driver进程将模型参数广播给所有Executor。
[0006]2)梯度计算:每个Executor并行的计算出本地数据集所对应的损失函数值以及梯度值。
[0007]3)梯度聚合:Driver进程通过treeAggregate
[9][10]算子聚合所有Executor计算的梯度和损失值。
[0008]4)模型更新:Driver进程使用聚合的梯度和损失值在本地更新模型。
[0009]Spark中通过SGD和L

BFGS两种优化算法求解最优模型。每次迭代时,在各子节点上通过Executor并行计算出该节点上数据集所对应的损失值和梯度值,通过treeAggregate函数聚合到Driver节点并进行模型参数的更新。之后将模型参数广播到各子节点进行下一次迭代直至收敛。
[0010]Spark的分类问题优化算法的核心是在Driver端使用treeAggregate函数实现信息的聚合,treeAggregate数据聚合过程如图2所示。在treeAggregate函数的使用中需要定义seqOp运算和combOp运算。seqOp的作用是,把一个训练样本加入已有的统计,即根据数据集对损失函数值以及梯度值进行更新。combOp的作用是,把两个统计信息合并。前者的作用是定义每个RDD内部数据的运算逻辑,后者的作用是在RDD之间定义数据的合并逻辑。
treeAgrgreate函数负责把每一个节点上的每一次迭代所得到的信息进行聚合,然后在汇总到模型所在的Driver端。
[0011]通过图3可以看出,Spark在进行数据聚合的过程中需要两个treeAggregate过程,一个是在Executor内部进行聚合,另一个是在Executor和Driver之间进行数据聚合,并且由于Spark采用的BSP整体同步并行的同步策略,这就导致产生了两个瓶颈点:(1)Executor之间进行聚合时候,其他不参与的节点只能等待;Executor与Driver进行聚合时候,其他不参与聚合的节点只能等待。在这个过程中会产生资源的闲置与浪费,影响性能。(2)Driver端在聚合Executor节点数据时,如果聚合数据过大,那么Driver的负载压力过大,容易成为整个系统的瓶颈所在。
[0012]因此,如果可以对Spark平台进行性能优化或者改进,减轻甚至消除Spark集群的主节点所带来的瓶颈,那么将会具有很好的实用意义。而AllReduce
[11][12]作为并行计算领域内的常用算法,可以实现模型同步,维护分布式数据集,并且进行一些分布式的操作。很多的并行程序要求所有的进程都可以对某一个数据聚合(Reduced)过后的结果进行访问,而不仅仅是只有主进程可以访问,为此,AllReduce算法就可以实现将数据聚合之后的结果分发到各个进程或者子节点,使得聚合结果不仅仅局限于主进程可访问。基于AllReduce的这些特性,可以将AllReduce算法的思想应用到Spark平台,设计出适用于Spark的新的数据聚合模式——ARAggregate数据聚合模式,减轻由主节点带来的性能瓶颈,提升Spark平台进行线性模型训练的性能。
[0013]在Spark平台中,进行线性分类问题求解时优化算法仅有SGD算法与L

BFGS算法,可供用户选择的优化算法范围有限。在实现了上述的ARAggregate数据聚合模式之后,可以基于该数据聚合模式,实现一个新版本的SGD算法,在各个Executor上根据本地数据计算出完整的本地模型,而不仅仅只是根据本地数据计算出梯度后由Driver节点聚合各个Executor的数据并进行全局模型变量的计算。这样就可以减轻前面所述在Spark平台上用treeAggregate聚合方式带来的性能瓶颈问题。并且由于交替方向乘子法
[13][14](Alternating Direction Method of Multipliers,ADMM)作为一种分布式优化算法,可以用来求解大规模的机器学习问题。它的主要思想是分解

协调的过程,通过将大的全局问题分解为多个小的,容易求解的局部子问题(原始问题转化为全局一致性问题),通过协调子问题的解而得到全局问题的解。在这个过程中,子问题的求解可以并行进行,然后同步子问题的解整合得到全局问题的解,因此也可以基于ARAggregate数据聚合模式进行Spark平台上的分布式的实现,从而丰富Spark求解线性分类问题时的优化算法库。
[0014]目前对于Spark的研究主要包含以下四类:(1)根据不同的应用领域的特征,结合Spark平台,使得Spark可以更好的应用于该领域。文献
[15]提出了一种基于Spark计算引擎的配电网大数据分区处理方法。通过Spark来更好的处理配电网的分区数据,从中提取出对配电网规划管理有实用价值的电力指标。文献
[16]提出了一种基于spark框架的海面温度预测方法,在Spark框架下启动动态时间归整DTW算法并完成数据的预处理,之后调用Spark的工作集群,计算类比模式与参考模式的动态时间归整距离DTW;按动态本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于Spark平台分类问题优化算法的数据聚合方法,其特征在于,包括以下步骤:(1)在Spark平台上设计并实现ARAggregate数据聚合模式;(2)将ARAggregate数据聚合模式应用到Spark平台的SGD算法;(3)实现基于Spark平台的ADMM算法,并将ARAggregate数据聚合模式应用到ADMM算法。2.根据权利要求1所述的基于Spark平台分类问题优化算法的数据聚合方法,其特征在于,所述步骤(1)的具体步骤如下:(1.1)模型分段:将各个worker节点所维护的本地模型变量根据节点数量进行平均分段,例如有N个节点,那么每个本地模型变量划分为N段,每段有一个段号,依次取值为0,1,2,
···
N

1;形成以段号为key,以模型分段数据为value的key

value数据类型;(1.2)分段后的模型数据归约:利用Spark提供的reduceByKey算子,以分段号为key值,对各个worker节点维护的本地模型分段后的数据进行shuffle操作,这样就使得不同worker节点上所维护的具有相同段号的数据都被分发到同一个worker节点,继而对这些具有相同分区段号的数据进行归约处理,从而得到新的全局模型该分段号所对应的模型值;(1.3)归约后的模型分段复制:将完成数据聚合的每个模型分段进行复制N份,并为复制后的数据加上新的标记号,分别为0,1
···
N

1;以备将更新后的模型分段数据分发到其他各个worker节点;(1.4)新的模型分段的分发:利用groupbykey算子,收集各个worker节点上计算出来的具有相同标记号的模型分段,使得具有相同标记号的模型分段汇集在同一个worker节点;(1.5)组装模型分段成为新的本地模型变量:由于现在每个节点上都是具有相同标记号的模型分段数据,去掉标记号之后,就得到更新后的全局模型的以分段号为key,以模型分段数据为value的key

value数据类型;根据段号,将分段的数据进行排列,形成更新之后的本地模型变量。3.根据权利要求1所述的基于Spark平台分类问题...

【专利技术属性】
技术研发人员:彭存禄王国政雷咏梅
申请(专利权)人:上海大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1