本发明涉及大数据处理领域,特别是涉及一种SGD算法优化系统及方法。
背景技术:
随着信息技术的发展,目前已经进入了大数据时代。许多机器学习算法可以转化为凸函数优化问题,即为一个回归函数找到最小值的任务,其最简单的方法就是梯度下降。而随机梯度下降(SGD)算法是机器学习算法中用于凸函数优化问题的典型算法。
在Spark大数据处理框架中,SGD算法的处理思想是:首先随机初始化函数的梯度值和权重值,并运用参数指定全集数据的一个随机抽样子集,然后计算子集中数据点的梯度的平均值,即得到一个随机子梯度,利用计算的梯度值更新函数的权重值。然而,在Spark大数据平台下,SGD算法的数据集抽样和梯度计算采用并行化操作,使得各计算节点服务器需要承担较大的数据计算量,且分布式计算环境下,各计算节点间需要进行数据交换(shuffle操作)来更新随机梯度值和权重值,增大了计算集群的网络开销。
因此,如何对Spark框架下的SGD算法进行优化,提高SGD算法处理海量数据的整体性能,是本领域技术人员目前需要解决的技术问题。
技术实现要素:
本发明的目的是提供一种SGD算法优化系统及方法,可以对Spark框架下的SGD算法进行优化,提高SGD算法处理海量数据的整体性能。
为解决上述技术问题,本发明提供了如下技术方案:
一种SGD算法优化系统,包括:多个基于FPGA的分布式计算节点和一个基于CPU的中心计算节点,其中,各所述分布式计算节点用于通过对应的FPGA中的并行数据通路对SGD算法中的待处理数据进行并行计算;所述中心计算节点用于对数据处理任务进行分配和调度。
优选地,还包括:
OpenCL编程模型模块,用于对各所述分布式计算节点和所述中心计算节点进行算法调试。
优选地,所述分布式计算节点包括:
梯度计算单元,用于对所述SGD算法中的待处理数据的样本点进行子梯度计算;
权值更新计算单元,用于对所述SGD算法中的待处理数据的样本点进行权重值更新计算。
优选地,所述中心计算节点包括:
计算结果合并收集单元,用于对各所述分布式计算节点的子梯度计算结果和权重值更新计算结果进行收集合并;
广播单元,用于将所述计算结果合并收集单元收集合并的结果信息广播至各所述分布式计算节点。
优选地,还包括:
数据获取模块,用于获取所述SGD算法中的信息数据,并将符合预设的并行计算条件且计算量超过预设阈值的信息数据作为待处理数据引入至各所述分布式计算节点。
一种SGD算法优化方法,包括:
获取SGD算法中的待处理数据;
通过FPGA加速设备以多条并行数据通路对所述待处理数据进行并行计算;
获取所述并行计算的计算结果,并反馈对应的计算结果反馈信息控制所述FPGA加速设备对所述待处理数据进行并行计算。
优选地,所述获取SGD算法中的待处理数据,包括:
随机初始化SGD算法中函数的梯度值和权重值;
运用参数指定所述SGD算法的全集数据的一个随机抽样子集,记为所述待处理数据。
优选地,所述通过FPGA加速设备以多条并行数据通路对所述待处理数据进行并行计算,包括:
通过基于OpenCL标准的FPGA加速设备,以多条并行数据通路计算所述随机抽样子集中的数据点的梯度的平均值,记为子梯度值;
根据所述子梯度值更新所述函数的权重值。
优选地,所述获取所述并行计算的计算结果,并反馈对应的计算结果反馈信息控制所述FPGA加速设备对所述待处理数据进行并行计算,包括:
对各所述并行数据通路计算所得的子梯度值的计算结果和权重值的更新结果进行收集合并;
将收集合并后所得的新的梯度值和权重值反馈至所述FPGA加速设备,进行迭代计算,直至达到最高迭代次数限制或权值收敛。
与现有技术相比,上述技术方案具有以下优点:
本发明所提供的一种SGD算法优化系统,包括:多个基于FPGA的分布式计算节点和一个基于CPU的中心计算节点,其中,各分布式计算节点用于通过对应的FPGA中的并行数据通路对SGD算法中的待处理数据进行并行计算;中心计算节点用于对数据处理任务进行分配和调度。由于采用中心计算节点来对数据处理任务进行分配和调度,可以根据每个分布式计算节点的结构特点来为其分配不同的计算任务,提高了分布式计算节点的计算性能、能效比和计算实时性,各分布式计算节点之间无需进行数据交换,减少了计算集群的网络开销。分布式计算节点基于FPGA,中心计算节点基于CPU,这就形成了异构计算平台,通过对SGD算法进行并行化设计,对Spark框架下的SGD算法进行了极大的优化,提高SGD算法处理海量数据的整体性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一种具体实施方式所提供的SGD算法优化系统结构示意图;
图2为本发明一种具体实施方式所提供的SGD算法优化方法流程图。
具体实施方式
本发明的核心是提供一种SGD算法优化系统及方法,可以对Spark框架下的SGD算法进行优化,提高SGD算法处理海量数据的整体性能。
为了使本发明的上述目的、特征和优点能够更为明显易懂,下面结合附图对本发明的具体实施方式做详细的说明。
在以下描述中阐述了具体细节以便于充分理解本发明。但是本发明能够以多种不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广。因此本发明不受下面公开的具体实施的限制。
请参考图1,图1为本发明一种具体实施方式所提供的SGD算法优化系统结构示意图。
本发明的一种具体实施方式提供了一种SGD算法优化系统,包括:多个基于FPGA的分布式计算节点1和一个基于CPU的中心计算节点2,其中,各分布式计算节点1用于通过对应的FPGA中的并行数据通路对SGD算法中的待处理数据进行并行计算;中心计算节点2用于对数据处理任务进行分配和调度。
在本实施方式中,由于采用中心计算节点来对数据处理任务进行分配和调度,可以根据每个分布式计算节点的结构特点来为其分配不同的计算任务,提高了分布式计算节点的计算性能、能效比和计算实时性,各分布式计算节点之间无需进行数据交换,减少了计算集群的网络开销。分布式计算节点基于FPGA,中心计算节点基于CPU,这就形成了异构计算平台,通过对SGD算法进行并行化设计,对Spark框架下的SGD算法进行了极大的优化,提高SGD算法处理海量数据的整体性能。
在上述实施方式的基础上,本发明一种实施方式中,该优化系统还包括:OpenCL编程模型模块,用于对各分布式计算节点和中心计算节点进行算法调试。
其中,优选地,分布式计算节点包括:梯度计算单元,用于对SGD算法中的待处理数据的样本点进行子梯度计算;权值更新计算单元,用于对SGD算法中的待处理数据的样本点进行权重值更新计算。
中心计算节点包括:计算结果合并收集单元,用于对各分布式计算节点的子梯度计算结果和权重值更新计算结果进行收集合并;广播单元,用于将计算结果合并收集单元收集合并的结果信息广播至各分布式计算节点,进行迭代,直至达到最高迭代次数限制或者权值收敛。
进一步地,还包括:数据获取模块,用于获取SGD算法中的信息数据,并将符合预设的并行计算条件且计算量超过预设阈值的信息数据作为待处理数据引入至各分布式计算节点。
在本实施方式中,以FPGA+CPU形成的异构计算平台为基础对SGD算法进行优化。尤其是OpenCL编程模型模块采用OpenCL高层次编程模型对SGD算法中适合并行化描述且耗时的计算部分进行并行优化设计,然后将对应的代码移植到异构计算平台中执行计算。FPGA作为分布式计算节点负责SGD算法中样本点的子梯度计算和权重值的更新计算,CPU作为中心计算节点负责子梯度计算结果以及权重值更新结果的收集合并,在降低整个系统功耗的同时,提升了SGD算法的计算性能。这是由于异构计算能够根据每个计算子系统的结构特点为其分配不同的计算任务,而FPGA是一种可编程的专用处理器,由可编程的逻辑块和互联网组成,可在不同逻辑执行多个线程,实现流水线并行处理,具有较强的并行处理能力,因而通过对复杂的SGD算法进行并行化处理可以提升该算法的计算性能。
为了缩短FPGA的开发周期,本实施方式采用OpenCL编程模型。OpenCL是针对异构计算装置所设计的标准API以及程式语言。FPGA采用OpenCL高级语言的算法调试模式,可直接写入FPGA进行程序验证。
此外,本实施方式将SGD算法中适合并行计算且计算量较大的数据点的梯度计算和权值更新计算引入到FPGA器件中,而基于FPGA的计算平台的一个特征即是内存计算,即需要将尽可能多的待处理数据传输至FPGA的板载内存,由FPGA进行细粒度的并行计算,无需在主存储器保存,降低了存储器的读取开销,数据处理延时较低。
请参考图2,图2为本发明一种具体实施方式所提供的SGD算法优化方法流程图。
相应地,本发明一种实施方式还提供了一种SGD算法优化方法,包括:
S11:获取SGD算法中的待处理数据。
其中,获取SGD算法中的待处理数据,包括:
随机初始化SGD算法中函数的梯度值和权重值;
运用参数指定SGD算法的全集数据的一个随机抽样子集,记为待处理数据。
S12:通过FPGA加速设备以多条并行数据通路对待处理数据进行并行计算。
进一步地,通过FPGA加速设备以多条并行数据通路对待处理数据进行并行计算,包括:
通过基于OpenCL标准的FPGA加速设备,以多条并行数据通路计算随机抽样子集中的数据点的梯度的平均值,记为子梯度值;
根据子梯度值更新函数的权重值。
在本实施方式中,FPGA加速设备包括多条并行数据通路,即包括多组并行执行的内核流水线,以对SGD算法中的循环操作,采用循环流水线化以及循环展开并行化方法进行性能优化,其中,每隔内核流水线可以同时应用于多个执行通路,即通过算法级的描述实现在原有的单流水线基础上进行流水线复制,形成多流水线架构。且在FPGA加速设备中,每次计算的结果无需在主存储器中进行保存,降低了存储器读取延迟。
S13:获取并行计算的计算结果,并反馈对应的计算结果反馈信息控制FPGA加速设备对待处理数据进行并行计算。
获取并行计算的计算结果,并反馈对应的计算结果反馈信息控制FPGA加速设备对待处理数据进行并行计算,包括:
对各并行数据通路计算所得的子梯度值的计算结果和权重值的更新结果进行收集合并;
将收集合并后所得的新的梯度值和权重值反馈至FPGA加速设备,进行迭代计算,直至达到最高迭代次数限制或权值收敛。
在本实施方式中,将收集合并后所得的新的梯度值和权重值反馈至FPGA加速设备,进行迭代计算,通过循环迭代,重新获取随机抽样子集并进行梯度和权值的更新操作,直至达到最高迭代次数限制或权值收敛,即算法达到收敛,优化操作结束。
综上所述,本发明所提供的一种SGD算法优化系统及方法,将SGD算法中适合并行计算且计算量较大的数据点的梯度计算和权值更新计算引入到FPGA器件中,而基于FPGA的计算平台的一个特征即是内存计算,即需要将尽可能多的待处理数据传输至FPGA的板载内存,由FPGA进行细粒度的并行计算,无需在主存储器保存,降低了存储器的读取开销,数据处理延时较低。FPGA作为分布式计算节点负责SGD算法中样本点的子梯度计算和权重值的更新计算,CPU作为中心计算节点负责子梯度计算结果以及权重值更新结果的收集合并,在降低整个系统功耗的同时,提升了SGD算法的计算性能。
以上对本发明所提供的一种SGD算法优化系统及方法进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。