基于计算节点自组织分组的分布式神经网络混合同步训练方法与流程

文档序号:22627634发布日期:2020-10-23 19:36阅读:252来源:国知局
基于计算节点自组织分组的分布式神经网络混合同步训练方法与流程

本发明涉及分布式神经网络技术,具体涉及一种基于计算节点自组织分组的分布式神经网络混合同步训练方法。



背景技术:

单机系统在利用超大规模数据训练超大规模神经网络时,会出现训练效率低下的问题,严重情况甚至直接导致神经网络训练过程的失败。分布式神经网络的提出很好的解决了超大规模数据在单机系统中训练效率低下、训练失败的问题。

分布式神经网络根据划分训练数据还是划分模型数据两种情况分为数据并行化和模型并行化,其中,数据并行化是提高大规模数据训练效率的关键技术。

数据并行化的分布式神经网络,首先需要将训练数据拆分到多个计算节点上,在每个计算节点对训练数据进行单机优化,然后在每轮单机优化过程之后,将多个计算节点的梯度参数发送到参数服务器中进行参数融合,更新模型数据,接着将模型数据重新分发到计算节点中,进行下一轮迭代,其系统架构如图1所示。由于在分布式环境中,计算节点的运算能力、计算节点到参数服务器的带宽效率等都不尽相同,因此,计算节点将参数数据同步到参数服务器的步调并不相同。

传统的分布式神经网络同步算法,分为同步梯度下降算法(ssgd算法)、异步同步梯度下降算法(asgd算法)和混合同步梯度下降算法三种。ssgd算法,需要等待所有计算节点将梯度参数发送到参数服务器之后才能进行参数融合,导致了参数服务器对慢节点的等待;asgd算法,无需等待所有计算节点的参数数据,一旦参数服务器接收到一个参数数据后,即可进行参数的融合,但是此方法会导致模型准确率的降低;混合同步梯度下降算法,允许参数服务器异步运行直到任意两个计算节点间的迭代轮次差值超过阈值,较好的平衡了训练效率与模型准确率之间的关系,但是由于使用固定阈值,因此仍然不能够让分布式系统获得最高的效率。

可见,传统分布式神经网络同步算法无法很好地平衡模型准确率与训练效率。



技术实现要素:

本发明所要解决的技术问题是:提出一种基于计算节点自组织分组的分布式神经网络混合同步训练方法,解决传统分布式神经网络同步算法无法很好地平衡模型准确率与训练效率的问题。

本发明解决上述技术问题所采用的技术方案是:

一种基于计算节点自组织分组的分布式神经网络混合同步训练方法,包括:

s1、采用卡尔曼滤波对计算节点的同步效率进行预测,并采用均方差分析计算节点的同步效率波动情况;

s2、基于预测的各个计算节点的同步效率以及同步效率波动情况的相似程度进行计算节点自组织实时分组;

s3、根据计算节点自组织实时分组的结果,在分组的组间与组内采用不同的同步策略训练模型。

作为进一步优化,步骤s1具体包括:

s11、对于任意计算节点i,参数服务器采集其近期每轮迭代的时间,形成固定大小的时间窗口集ti,时间窗口集ti中的每一个元素记录了在一次迭代中,参数服务器从发送最新模型数据至该节点,到接收完成该节点最新梯度参数所用的时间;

s12、根据节点最近一次迭代的效率与卡尔曼滤波条件,对接下来一次的迭代进行效率评估预测,获得预测的该节点下一次同步效率

s13、求解时间窗口集ti中元素的均方差,分析该计算节点在近期的同步效率波动情况,记为wavei,这两个变量作为计算节点评估与预测的输出。

作为进一步优化,步骤s2具体包括:

s21、多个相似计算节点组成相似集群,对任意节点每一轮迭代开始时,根据节点相似条件判断该节点是否需要被移出相似集群;

s22、对于需要移出相似集群的节点,将其移除,并为其创建一个新的相似集群;

s23、对满足合并条件的相似集群进行重组合并,并更新相似集群内部信息。

作为进一步优化,步骤s21中,所述节点相似条件包括:

对于同一个相似集群groupsimilar中的任意两个计算节点,需要满足:

其中,thresholdt表示节点效率相似的阈值,thresholdwave表示近期效率波动相似的阈值;表示相似集群中的节点x的预测同步效率,表示相似集群中的节点y的预测同步效率,wavex表示相似集群中的节点x的近期同步效率波动值,wavex表示相似集群中的节点y的近期同步效率波动值。

作为进一步优化,步骤s23中,所述合并条件包括:

对于任意两个相似集群,只要这两个相似集群内部任意两个节点u和v满足并且|waveu-wavev|≤thresholdwave则可以进行合并。

作为进一步优化,步骤s3具体包括:

s31、当任意计算节点一轮迭代结束后,计算相似集群内部的最大迭代轮次epochmax:

其中,wave代表该相似集群内部所有节点波动的平均值,nodenumber代表该相似集群的节点个数;

s32、判断该节点是否会进入全局等待或者集群等待,若是,则进入步骤s33,否则,进入步骤s34;

s33、如果该节点进入全局等待,则需要等待所有节点拥有相同的迭代轮次后才能继续运行;如果该节点进入集群等待,则需要等待同一相似集群中所有节点拥有相同的迭代轮次后才能继续运行;

s34、如果该节点不会进入全局等待或者集群等待,则该节点进行单机异步优化,进入下一轮迭代,返回步骤s31。

作为进一步优化,步骤s32中,所述判断该节点是否会进入全局等待或者集群等待,具体包括:

(1)判断该节点与集群中所有节点的绝对迭代轮次差值是否大于预设阈值,如果大于预设阈值,则进入全局等待;

(2)如果该节点的相对迭代轮次与相似集群中最小相对轮次差值大于epochmax,则进入相似集群等待;

其中,所述绝对迭代轮次是指该节点当前已经迭代的总次数,所述相对迭代轮次是指该节点在其所在的相似集群中的迭代轮次。

本发明的有益效果是:

通过对节点同步效率的预测以及同步效率波动情况的分析,作为节点自组织分组的依据,从而动态调整组成分布式神经网络的所有计算节点集合的集群分组状态,并根据实时分组结果,在组间与组内采用不同的同步策略训练模型。由于采用考虑了节点的同步效率的近似情况进行的分组,组内各个节点的效率比较接近,在进行模型训练时,通过组内最大允许迭代轮次差的限定作为集群内节点同步屏障,可以减少迭代的等待时间,从而提高训练效率;此外,通过对任意节点之间的最大迭代轮次差值的限定作为全局同步屏障,来保证训练的模型的准确率。由此,本发明方案能够很好地平衡模型准确率与训练效率。

附图说明

图1为数据并行化的分布式神经网络系统架构图;

图2为本发明在进行节点自组织分组后的集群状态示意图;

图3为本发明实施例中的分布式神经网络混合同步训练方法流程图。

具体实施方式

本发明旨在提出一种基于计算节点自组织分组的分布式神经网络混合同步训练方法,解决传统分布式神经网络同步算法无法很好地平衡模型准确率与训练效率的问题。

该方法流程包括三大部分:计算节点效率评估与预测、节点自组织分组、混合同步训练。

一、计算节点效率评估与预测:

对于每个计算节点i,参数服务器采集其近期每轮迭代的时间,形成固定大小的时间窗口集,记为ti,ti由固定大小的队列构成,每个队列元素记为m为队列中的元素个数,记录了在一次迭代中,参数服务器从发送最新模型数据至该节点,到接收完成该节点最新梯度参数所用的时间。因此,即是一轮迭代中,计算节点的同步效率,包括了计算节点的单机优化效率与其和参数服务器同步数据的效率。

本发明利用卡尔曼滤波对下一时刻的计算节点效率进行预测,得到计算节点在下一轮迭代中的效率评估,记为同时,求解时间窗口集ti中元素的均方差,分析该计算节点在近期的效率波动情况,记为wavei,这两个变量作为计算节点评估与预测的输出。

二、节点自组织分组:

节点自组织分组的主要目的是将“相似”的多个节点分为一组,“不相似”的分为另一组。相似的定义为其下一轮次预测的节点效率相似并且近期的波动相似,我们将“相似”的多个节点组成的集群记为相似集群groupsimilar,多个相似集群组成了分布式神经网络的所有计算节点集合s,如图2所示;对于同一个相似集群groupsimilar中的每个计算节点,需要满足相似条件:

其中,thresholdt代表节点效率相似的阈值,thresholdwave代表近期效率波动相似的阈值。节点自组织分组算法,就是在计算节点每轮迭代完成时,对集合s进行动态调整,保证所有的groupsimilar满足相似条件。

具体来说,节点自组织分组过程主要分为如下的步骤:

1)在任意节点i进入新一轮迭代时调用该算法;

2)如果节点i在原相似集群中不能满足相似条件,则将节点i移出原相似集群并更新集合s信息;

3)遍历集合s中的所有groupsimilar元素,对元素进行重新分组;

概括而言,自组织分组就是在任意节点进入新一轮迭代时,对现有的集合结构做拆分与重新合并的过程,该过程最终输出一个新的所有计算节点集合s,保证其中任意一项集群groupsimilar满足相似条件。

三、混合同步训练:

混合同步训练就是在自组织分组的组间与组内使用不同策略的同步算法,尽可能提高模型的准确率,并且在保证准确率的情况下,提高模型训练效率。

本发明设计两个同步屏障限定训练的通信步调,以平衡模型准确率和训练效率。

全局同步屏障:为了保证模型的准确率,需要确定任意节点之间的最大迭代延迟,即任意两节点之间,需要保证最大迭代差值thresholdmax,对于任意相似集群定义集群内允许的最大迭代差值为thresholdi,则任意两个相似集群之间的最大允许迭代差值之和不能够大于thresholdmax,即:

相似集群同步屏障:根据每个相似集群节点的波动数值,计算其集群内最大迭代差值thresholdi,在相似集群内部的节点,允许节点间拥有最大thresholdi的迭代差值,即最慢节点与最快节点之间的迭代差值应当小于等于thresholdi,一旦迭代差值大于thresholdi,则集群内部的节点都必须等待,直到最慢节点和最快节点迭代轮次相同。

实施例:

本实施例以一个较优的实施算法来对本发明作具体阐述。

算法的参数包括时间统计窗口长度window_length,节点效率相似阈值thresholdt,节点波动相似阈值thresholdwave,任意两节点迭代轮次差值阈值thresholdmax。参见图3,本实施例中的分布式神经网络混合同步训练方法包括以下步骤:

步骤1、计算节点效率评估与预测步骤:

本步骤主要目的是对计算节点的效率进行预测评估,用于节点自组织分组的依据,其具体子流程如下:

步骤1.1、初始化:

在参数服务器中初始化效率评估与预测数据结构。对于任意计算节点i,参数服务器生成长度为window_length的队列queuei,用于保存一段时间该计算节点每轮迭代所用的时间。同时,参数服务器生成对应节点的卡尔曼滤波对象,初始化与卡尔曼滤波对象相关的矩阵,包括卡尔曼滤波的状态转移矩阵系统测量矩阵与系统过程噪声协方差矩阵

步骤1.2、节点波动值检测:

当任意计算节点i完成一轮迭代后,参数服务器计算从参数服务器发送模型数据到该节点传输完成梯度参数数据所用的时间参数服务器将最新的计算节点迭代时间放入队列,如果队列的大小超过窗口长度window_length,则将第一个元素出队。计算队列中所有元素的数学期望,并计算所有元素的均方差,对于特定计算节点i,均方差记为wavei。以代表队列中的元素,波动检测返回结果如下所示:

其中,为元素的对应加权系数,为元素的数学期望。

步骤1.3、卡尔曼滤波效率预测:

考虑到对于任意节点的效率应该满足惯性原理,即效率在短时间内应该满足平滑变换,没有突变。因此,可以使用卡尔曼滤波对效率进行预测。当任意节点i迭代轮次开始时,统计上一轮迭代时间ti作为上一次测量时间上一轮迭代的预测作为上一次测量的预测当迭代轮次结束时,使用本轮迭代测量时间校正卡尔曼滤波器,并通过卡尔曼滤波预测下一轮迭代所需要的时间

步骤1.4:将与wavei作为返回值向下传递,更新节点分组情况。

步骤2、节点自组织分组步骤:

本步骤主要目的是将同质的多个节点组合成一个整体,在整体内部使用一种同步策略,在整体外部使用另外一种同步策略,其具体子流程如下:

步骤2.1、初始化:

系统初始化时,创建字典groups(key=id,value=list(node))与map(key=node,value=groups_id),groups的键代表其中一个相似集群的id,值代表该相似集群中包含的所有计算节点信息。node结构存储该节点的绝对迭代轮次epochabs,相对迭代轮次epochrela,波动值wave与效率预测值t,其中,相对迭代轮次指该节点在其所在的相似集群中迭代的次数。map是groups的反向键,用于快速定位node所在哪一个节点。第一轮开始时,参数服务器将每个计算节点作为一个独立的相似集群,因此,会创建一个包含计算节点个数元素的groups字典,每个字典的值包含一个计算节点信息node结构。

步骤2.2:相似集群拆分:

当任意计算节点开始一轮新的迭代之前,会尝试进行相似集群拆分。具体过程如下:

1)更新节点信息:该步骤主要对node结构包含的信息进行更新,使用计算节点效率评估与预测步骤返回的wavei更新该节点的效率预测值t与波动值wave。

2)判断是否需要拆分:对于该节点所在的相似集群groupsimilar,遍历所有的node结构,找到波动最小值wavemin与最大值wavemax,效率最小值tmin与最大值tmax,做如下公式的判断:

如果如上的两个条件任意一个条件不能够满足,则该节点就不能满足相似条件,需要将其拆分。如果不需要,直接跳至步骤2.3。

3)拆分计算节点:将该计算节点独立生成一个相似集群,更新groups和map中node节点的信息与map中对应节点的id信息。

步骤2.3、计算节点重新合并:

即,将现有相似集群进行合并,使得相似集群的个数尽可能减少。

对于任意两个相似集群,只要满足这两个相似集群内部任意两个节点nodeu和nodev满足|tu-tv|≤thresholdt并且|waveu-wavev|≤thresholdwave则可以进行合并,具体的合并算法如下:

1)将所有相似集群数据效率t最小值为主键,波动值wave最小值为辅键的原则从小到大排序。将开始指针与比较指针移动到第一个相似集群。

2)移动比较指针,比较开始指针指向的tmin与wavemin和比较指针指向的tmax与wavemax的差值是否都小于等于其设定的阈值。

3)如果任意条件不满足,则将开始指针到比较指针之前的所有集群合并,组成新相似集群。将开始指针移动到比较指针位置处,跳转至2)运行,直到所有相似集群比较完毕。相似集群合并时,需要更新集群中每个node结构的相对迭代轮次,更新原则是两个相似集群分别将相对迭代轮次减去最小相对迭代轮次值。

步骤2.4、将字典结构groups与map作为返回值向下传递。

为了更加清楚,对于节点自组织分组步骤以以下实例举例:设定三个节点的集群,其thresholdt与thresholdwave分别为0.5,0.5,初始时,

node1:{wave=1,t=2.2,epochabs=1,epochrela=1},

node2:{wave=3,t=4.1,epochabs=1,epochrela=1},

node3:{wave=4.6,t=8.3,epochabs=1,epochrela=1

groups={1:node1;2:node2;3:node3}。

当node2完成一轮迭代后,更新其数据为node2:{wave=1.1,t=2.4,epochabs=2,epochrela=2},这时就会合并node1与node2,groups={1:{node1,node2};3:node3},并更新groups中id为1的所有节点相对迭代轮次,最终node1与node2的结构为node1:{wave=1,t=2.2,epochabs=1,epochrela=1},node2:{wave=1.1,t=2.4,epochabs=2,epochrela=1}

步骤3、混合同步训练步骤:

本步骤主要目的是利用自组织分组结果按照不同同步策略训练模型,其具体子流程如下:

步骤3.1、当任意计算节点一轮迭代结束后,计算相似集群内部的最大迭代轮次,按照下式计算:

其中,wave代表该相似集群内部所有节点波动的平均值,nodenumber代表该相似集群的节点个数。

步骤3.2、根据集群状态判断下一步是否需要进入等待过程,具体如下:

1)判断该节点与集群中所有节点的绝对迭代轮次差值是否大于阈值thresholdmax,如果大于阈值,则集群进入全局等待。

2)根据该节点与groups中处于同一相似集群的所有节点相对迭代轮次判断是否需要等待。如果该节点的相对迭代轮次与相似集群中最小相对轮次差值大于epochmax,则进入相似集群等待。

3)否则,分布式训练不会进入等待过程。

步骤3.3:等待过程,具体如下:

1)如果步骤3.2中没有进入等待过程,则分布式神经网络以步骤3.1的方式继续进入下一轮迭代。

2)如果步骤3.2中进入全局等待过程,所有计算节点必须迭代到绝对轮次与该节点相同时,集群才能进入下一轮迭代,当退出全局等待过程时,更新所有节点的相对迭代轮次为0。

如果步骤3.2中进入相似集群等待过程,该节点必须等待其所处的相似集群中所有节点相对轮次与此节点相同才能进行下一轮迭代,当退出相似集群等待过程时,更新该相似集群所有节点的相对迭代轮。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1