一种基于模型结构特性的分布式深度学习通信方法和系统与流程

文档序号:20445065发布日期:2020-04-17 22:41阅读:162来源:国知局
一种基于模型结构特性的分布式深度学习通信方法和系统与流程

本发明属于深度学习技术领域,更具体地,涉及一种基于模型结构特性的分布式深度学习通信方法和系统。



背景技术:

随着训练数据集的规模增大,以及深度神经网络模型的层数越来越深,在单台机器中训练模型常常会受到机器性能的限制,无论是在数据还是模型规模上都存在无法达到实际应用需求的问题。在这样的背景之下,越来越多的人开始关注将深度学习和分布式系统结合在一起。其中一个关键问题就是如何才能高效利用分布式集群中的资源来训练模型。

在基于ps架构的大规模深度学习分布式训练中,通常有多个worker及多个server,训练数据被切分到每个worker上,每个server负责一部分网络的权值参数的更新。worker节点训练网络,计算梯度并将梯度推送至参数服务器server端。server用累积梯度更新权值参数,随后worker从server端拉取最新的权值进行下一轮迭代计算。

节点训练得到的梯度推送至参数服务器进行同步主要用到两种并行机制:同步并行和异步并行。在一个有n台机器的集群中,如果使用同步并行机制,则worker提交了梯度后,要等待其他所有worker提交梯度,待server接收到所有worker的梯度之后用累积梯度更新权值参数,然后每个worker才能拉取最新的权值参数进而进行下一轮迭代。如果使用异步并行机制,则worker向server提交了梯度后,server立即使用该梯度对权值参数更新,该worker即可获取最新的参数进行下一轮迭代,不需要等待其他worker提交梯度。

同步并行机制中,由于每次迭代都需要收到所有worker的梯度并进行权值参数更新后,每个worker才能获取最新的参数进行下一轮迭代,因此每轮迭代每个worker使用的权值参数都是相同的,不存在陈旧梯度的问题,模型的收敛效果好。然而在实际的生产环境中,由于集群规模大,通常分批购置机器,因此,新旧机器混合的异构集群较为常见。在这种异构集群中,节点的硬件配置有较大差别,节点间存在明显的性能差异。导致节点间同步等待时间较长。而对于异步机制,机器间不需要进行同步等待,因而不存在该问题。这也是异步机制通常训练速度较快的原因。但由于异步机制中,每个worker训练使用的模型权值参数不一致,产生了陈旧梯度的问题,即某worker在本次提交梯度和上次提交梯度之间网络参数已经被其他worker提交的梯度更新过,因而该worker计算本次提交的梯度所用到的权值参数实际上是过时的,导致异步机制的精度受到很大影响。



技术实现要素:

针对现有技术的同步机制中通信时节点同步的等待时间长而异步机制中精度严重受到陈旧梯度的影响的问题,本发明提供了一种基于模型结构特性的分布式深度学习通信方法和系统,其目的在于控制server接收每层网络梯度的时间,实现多机间的软同步,即在限定时间内无论收到多少worker的梯度都进行参数更新,以保证worker在进行该层网络的下一轮迭代的前向计算之前能及时获取最新的权值参数,进而消除层间延迟;为了减小陈旧梯度对训练精度的影响,通过梯度的陈旧度stal及集群中的机器个数n对梯度进行缩放。

为实现上述目的,按照本发明的第一方面,提供一种基于模型结构特性的分布式深度学习通信方法,该方法包括以下步骤:

s1.使用n台机器构成的分布式集群,预训练m层深度神经网络模型,对于每台机器,计算各层网络之前所有层的前向计算与后向计算所用时间总和tij,i=1,2…,n,j=1,2,…,m;

s2.对于每个server,对在[min{ti′j},min{ti′j+ti′j})期间收集到的第j层网络梯度,在min{ti′j+ti′j}时间点进行累加,并用第j层网络的累加梯度更新第j层网络的权值参数,ti′j表示第i′台机器提交第j层网络梯度的时间点,i′∈{n|n是当前提交了该层网络梯度的机器节点号}。

具体地,步骤s1包括以下步骤:

s11.对于第i台机器,记录训练第j层网络时的前向计算forward与后向计算backward分别所用时间tfij与tbij;

s12.对于第i台机器,计算该层网络之前所有层的前向计算与后向计算所用时间总和,记为tij,

具体地,在梯度累加之前,基于worker节点的个数n和该梯度的陈旧度,对梯度进行缩放。

具体地,所述对梯度进行缩放,包括以下步骤:

(1)记录第i′台机器上一次提交第j层网络梯度与这次提交第j层网络梯度期间第j层网络的权值参数被更新过的次数,作为此次提交第j层网络梯度gradi′j的陈旧度stali′j;

(2)根据worker节点的个数n和梯度gradi′j的陈旧度stali′j,计算梯度gradi′j的缩放因子;

(3)用该梯度缩放因子对梯度gradi′j进行缩放

gradi′j=gradi′j*f(stali′j)。

为实现上述目的,按照本发明的第二方面,提供了一种基于模型结构特性的分布式深度学习通信系统,该系统包括:

预训练模块,用于使用n台机器构成的分布式集群,预训练m层深度神经网络模型,对于每台机器,记录各层网络进行一次前向计算所用时间、后向计算所用时间,然后根据记录结果,计算各层网络之前所有层的前向计算与后向计算所用时间总和tij,i=1,2…,n,j=1,2,…,m;

梯度推送模块,用于接收worker节点提交的梯度,记录各节点的梯度提交时间ti′j,ti′j表示第i′台机器提交第j层网络梯度的时间点,i′∈[n|n是当前提交了该层网络梯度的机器节点号};

权值参数更新模块,用于对于每个server,对在[min{ti′j},min{ti′j+ti′j})集到的第j层网络梯度,在min{ti′j+ti′j}时间点进行累加,并用第j层网络的累加梯度更新第j层网络的权值参数。

具体地,所述预训练模块实现各层网络之前所有层的前向计算与后向计算所用时间总和tij的过程如下:

(1)对于第i台机器,记录训练第j层网络时的前向计算forward与后向计算backward分别所用时间tfij与tbij;

(2)对于第i台机器,计算该层网络之前所有层的前向计算与后向计算所用时间总和,记为tij,

具体地,该系统还包括梯度缩放模块,用于在梯度累加之前,基于worker节点的个数n和该梯度的陈旧度,对梯度进行缩放。

具体地,所述梯度缩放模块实现梯度缩放的过程如下:

(1)记录第i′台机器上一次提交第j层网络梯度与这次提交第j层网络梯度期间第j层网络的权值参数被更新过的次数,作为此次提交第j层网络梯度gradi′j的陈旧度stali′j;

(2)根据worker节点的个数n和梯度gradi′j的陈旧度stali′j,计算梯度gradi′j的缩放因子;

(3)用该梯度缩放因子对梯度gradi′j进行缩放

gradi′j=gradi′j*f(stali′j)。

总体而言,通过本发明所构思的以上技术方案,能够取得以下有益效果:

(1)本发明在分布式集群环境下的分布式深度学习训练过程中,根据网络各层的前向计算与后向计算所需时间及在网络中所处位置,限制server接收梯度的时间,实现多机间的软同步,对网络的每一层采用不同的同步节点个数,消除迭代计算中层间的等待时间,从而减小参数同步时间提高训练效率。

(2)本发明根据各节点提交梯度的陈旧程度对其进行缩放,对于陈旧度低的梯度,本发明认为是更重要的,因此对其进行放大;对于陈旧度高的梯度,本发明认为重要性较低,因此对其进行缩小,以减小陈旧梯度对训练精度的影响,保证训练精度。

附图说明

图1为现有技术中一种分布式深度学习的框架示意图;

图2为现有技术中一种分布式深度学习的迭代过程示意图;

图3为本发明实施例提供的一种基于模型结构特性的分布式深度学习通信方法流程图;

图4为本发明实施例提供的预训练获取各层网络前向后向计算时间方法流程图;

图5为本发明实施例提供的提交梯度及缩放方法流程图;

图6为本发明实施例提供的参数更新方法流程图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。

如图1所示,在基于ps架构的大规模深度学习分布式训练中,有若干台机器,网络模型的所有网络参数均分到不同的server上,每个server负责一部分参数的更新。每个worker负责进行前向计算和后向计算,并在后向计算中将计算得到的梯度上传给所有server;每个server使用接收到的所有梯度更新其负责的网络参数;worker从每个server端拉取最新的参数,从而完成此次迭代的多机间的参数同步,进行下一轮迭代计算。dev主要指gpu,一个worker中可以有多个gpu并行计算。

一个网络模型要训练得到最优的参数往往需要多个epoch,每个epoch会完整地训练一遍数据集。一个epoch由多次迭代组成,整个数据集被切分为多个batch,每次迭代训练一个batch的数据并做一次参数更新。

如图2所示,对于一个m层的神经网络,在严格同步的一致性机制下每次迭代首先由第1层向第m层正向进行每层的前向(forward)过程,即:f1,f2,…,fm。再由第m层向第1层反向进行每层的后向(backward)过程,即:bm,bm-1,…,b1,在这个过程中,worker计算梯度并推送(push)到server端,等待(wait)接收所有节点提交的梯度然后进行汇总(merge)及参数更新(update),即:oi。然后进行下一轮迭代。对于每层的forward过程,只有前面所有层的forward过程进行完毕并且完成ii过程,即已从server端获取(pull)最新的参数,该过程才能开始执行。以第3层为例,当p1、p2过程均进行完毕,即可开始f3过程。

如图3所示,本发明提供一种基于模型结构特性的分布式深度学习通信方法,该方法包括以下步骤:

步骤s1.使用n台机器预训练m层深度神经网络模型,记录每台机器训练时各层网络进行一次前向计算与后向计算分别所用时间,计算该层网络之前所有层的前向计算与后向计算所用时间总和。

预训练就是训练1个epoch,获取每台机器训练时各层网络进行一次前向计算与后向计算分别所用时间tfij与tbij。

如图4所示,步骤s1包括以下步骤:

s11.对于第i台机器,记录训练第j层网络时的前向计算forward与后向计算backward分别所用时间tfij与tbij,i=1,2…,n,j=1,2,…,m。

前向计算的作用是使用网络模型每层的参数计算输入层结点对隐藏层结点的影响最后得到输出,而后向计算则是比较输出和实际结果之间的差异,将这个残差返回给整个网络,计算梯度来调整网络中的参数。

s12.对于第i台机器,计算该层网络之前所有层的前向计算与后向计算所用时间总和,记为tij,

tij与第j层处在网络中的位置以及其之前的层的参数规模大小有关,反映了模型结构特性。一个神经网络从浅层到深层参数规模增大,若第j层处于网络的较浅处,由于其之前的层数少且每层的参数规模小,因此tij较小;若第j层处于网络的较深处,由于其之前的层数多且有多层的参数规模大,因此tij较大。tij的大小和server端第j层进行参数更新的时间相关。

步骤s2.开始训练,在每层网络每次进行参数同步时,基于每台机器提交的该层网络梯度gradi′i的陈旧度,对梯度进行缩放。

如图5所示,步骤s2包括以下步骤:

s21.每台机器开始进行分布式训练,在后向计算backward过程中,对于每一层网络j,每当有机器节点i′提交其计算得到的该层网络的梯度gradi′j,记录该节点提交该层梯度gradi′j的时间点ti′j,同时用一个变量记录该节点上一次提交该层网络与这次提交之间该层网络的权值weightj被更新过的次数,作为此次提交梯度gradi′j的陈旧度stali′j。

s22.根据worker节点的个数n和梯度gradi′j的陈旧度,计算梯度gradi′j的缩放因子。

以n/2为界限,认为大于等于n/2的陈旧度是较大的,小于n/2的陈旧度是较小的。陈旧度stali′j大于n/2的梯度赋予小于等于1的梯度缩放因子,陈旧度stali′j小于n/2的梯度赋予大于1的梯度缩放因子。陈旧度越大,该梯度对应的缩放因子越小。

s23.用该梯度缩放因子对梯度gradi′j进行缩放。

gradi′j=gradi′j*f(stali′j)

本发明实现的是一种弱同步,即不是收到所有worker的梯度才更新,因此存在一个陈旧梯度的问题。某个worker提交梯度之前也许已经有其他worker提交,并且server已经更新过参数,那么该worker此时提交的梯度是陈旧的。该情形需要对其缩放来增大或减小梯度值,对于陈旧度低的梯度,本发明认为是更重要的,因此对其进行放大;对于陈旧度高的梯度,本发明认为重要性较低,因此减小其大小,以减小陈旧梯度对训练精度的影响。

步骤s3.对每一层网络在有限时间内,server无论收到多少机器的梯度都立即进行该层的参数更新。

当server收到一些worker某层的梯度时,预估这些worker进行该层下一次前向计算的时间,保证最快的worker在下一次迭代之前,server无论已经收到几个worker的梯度都立即进行参数更新,这样该worker就能马上进行该层的前向计算而不用延迟。

如图6所示,对于第j层网络,server从min{ti′j}时刻收到第一台机器节点提交的梯度开始直到min{ti′j+ti′j},i′∈{n|n是当前提交了该层网络梯度的机器节点号}时刻将收到若干个机器节点提交的梯度。为保证这些已提交了该层网络梯度的机器节点中的最快的节点在下一次进行该层的前向计算forward时没有层间延迟,在时刻min{ti′j+ti′j},无论收到多少机器的梯度都立即使用经过缩放及累加的总梯度进行该层网络的参数更新,这样最快的机器节点能及时获取该层的最新的参数进而进行下一次迭代。

本发明中分布式深度学习通信系统由三个部分组成,分别是预训练,梯度提交和参数更新,具体包括:

预训练:记录分布式训练中每台机器训练各层网络进行一次前向计算与后向计算分别所用时间,并计算每层网络之前所有层的前向计算与后向计算所用时间总和。

梯度提交:接收机器节点提交的梯度,记录各节点的梯度提交时间,并利用其陈旧度对梯度进行缩放处理。

权值参数更新:控制接收梯度的时间,一旦达到时间限制立即进行权值参数的更新。保证模型训练过程中层与层间没有延迟。

本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

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