一种分布式深度学习的参数更新优化系统的制作方法

文档序号:15980832发布日期:2018-11-17 00:18阅读:254来源:国知局

本发明涉及深度学习的技术领域,特别涉及一种分布式深度学习的参数更新优化系统。

背景技术

目前,深度学习成为了机器学习领域的一个新兴研究方向,深度学习是一种高效的特征提取方法,能够提取数据中更加抽象的特征,对数据具有更强的模型泛化能力,由于数据集和神经网络模型层数的增加,开始抛弃单节点这种耗时和受内存限制的训练方法,开始使用大规模的分布式集群进行训练,从而诞生了一种参数服务器的角色。参数服务器的出现将根据梯度更新参数的部分由工作节点剥离到参数服务器上进行,有效的提高了训练速度,解决了工作节点参数存储空间不够等问题。

根据并行策略的不同,有两种分布式训练的方法,一种是数据并行,一种为模型并行。在数据并行策略下,训练集会被进行划分,不同的节点含有同一个模型的多个副本,仅对分配到的部分数据集进行训练。利用参数服务器实现的数据并行有同步和异步之分,如果采用同步通信模式,所有的工作节点在同时训练完一个批次的数据后,需要对梯度进行聚合平均,并更新训练参数,然后拉取新的参数进行下一个批次的训练,这种通信模式会因为其中某些性能较差的节点影响整体的训练进度,产生木桶效应。然而另外一种异步通信模式的提出克服了这种缺点,它允许工作节点每完成一个批次的训练,就立即将梯度发给参数服务器进行参数更新,不需要等待其余的工作节点训练完,大大提高了训练的效率。不过这种异步更新的模式没有考虑到集群环境下机器性能的差异问题,不同工作节点计算和传递梯度的时间不一致,梯度所拥有的价值也不一样。在一个工作节点拉取参数进行计算的过程中,参数服务器上的参数可能已经收到其他工作节点发来的梯度进行了更新,产生梯度延迟的现象,从而导致整个模型的收敛性变差,甚至不收敛。



技术实现要素:

本发明为解决上述的一种或多种不足,提供一种分布式深度学习的参数更新优化系统。

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

一种分布式深度学习的参数更新优化系统,包括一个多个参数服务器节点和多个工作节点,包括以下步骤:

s1.每个工作节点读入本地的一批训练数据至内存;

s2.工作节点根据用户规定好的模型结构,随机初始化各层参数,并记录当前参数版本为θ1=0,参数服务器设置参数版本号为θ2=0。

s3.工作节点根据读入的样本数据及对应的期望输出,进行前向传播,最后得到模型的输出值;其中,各工作节点互不影响,独立计算。

s4.工作节点根据前向传播的模型输出与样本数据的期望输出的误差得到损失值loss,根据损失值loss进行反向传播,逐层计算参数梯度υ。

s5.工作节点将计算完的梯度以及当前使用的参数版本号发回至参数服务器,参数服务器每收到一个工作节点传来的梯度就将参数版本号加1,即θ2=θ2+1;

s6.参数服务器对θ2进行判断,如果θ2等于t,表明全部工作节点已经执行t此迭代,则采用同步的聚合平均方式,等待所有工作节点完成自己本轮的迭代后,汇总平均梯度值,将平均梯度值与参数相加得到新的参数;如果θ2小于t,根据公式w=w+λ*υ更新参数,其中λ为梯度陈旧度,λ=1/(θ2-θ1);

s7.工作节点从参数服务器上拉取新的参数以及版本号,将本地的参数版本号更新,即θ1=θ2,继续读入下一批数据进行新一轮训练;

其中,

θ1:工作节点的参数版本号;

θ2:参数服务器的参数版本号;

υ:工作节点计算出的梯度;

w:模型参数;

λ:梯度陈旧度;

t:强制同步间隔。

在上述方案中,在参数更新部分对参数进行了版本控制,在参数服务器端和工作节点上都增加了参数的版本号,当前的工作节点拉取最新版本的参数进行训练跟梯度计算后,参数服务器会根据两个版本号的差值作为此工作节点此次迭代的梯度陈旧度λ,然后将梯度乘以λ对参数进行更新;进一步的设定一个强制同步的迭代次数t,每个工作节点在进行t次迭代后会强制同步一次,两种机制相结合来改善梯度陈旧导致的收敛性差的问题。

优选的,所述的参数服务器负责参数的存储和更新,共同维护全局共享的模型参数,可由用户设置为一个或多个。

优选的,所述的工作节点保留部分训练数据,并执行计算,设有多个。

优选的,所述的参数服务器的工作流程具体如下:

a.设置最初的参数版本号θ2=0;

b.接收工作节点发来的梯度v以及工作节点使用的参数版本号θ1;

c.更新参数版本号θ2=θ2+1;

d.判断θ2<强制同步间隔t是否成立;若成立,则进行步骤e,否则进行步骤g;

e.计算梯度陈旧度为λ=1/(θ2-θ1);

f.利用梯度来更新参数w=w+λ*υ,结束操作;

g.使用同步策略更新参数,得到所有工作节点的平均梯度a;

h.利用平均梯度来更新参数w=w+a,结束操作。

优选的,所述的工作节点的工作流程如下:

(1)各工作节点读取一批数据;

(2)判断是否是第一次迭代;若是则进行步骤(3),否则进行步骤(4);

(3)初始化模型参数,并设置当前参数版本号为θ1=0;

(4)从参数服务器拉取最新的参数,更新参数版本号θ1=θ2;

(5)根据前向传播算出损失值loss;

(6)根据后向传播计算梯度;

(7)将梯度和参数版本号θ1=发送给参数服务器;

(8)根据参数服务器对收到的梯度进行参数更新;

(9)判断本地是否存在还未训练的数据分片;若是则进行步骤(1),否则结束操作。

与现有技术相比,本发明的有益效果是:

1、技术手段:对现有单步的异步训练过程进行了改进,利用参数版本号作为梯度陈旧度;

优点:减弱现实集群中机器性能差异带来的梯度值过时的问题,使得模型收敛的性能大大增强;

2、技术手段:引入了强制同步机制,即同步和异步训练交替执行,同步间隔可自己定义;

优点:既能保留异步训练的并行模式带来的高数据吞吐量,使得工作节点能把更多的时间用于数据计算,而不是等待参数平均步骤的完成,又能通过间歇性同步使得整个模型的训练趋势朝更好的方向发展。

附图说明

图1是本发明一种分布式深度学习的参数更新优化系统的示意图图;

图2是本发明参数服务器流程示意图;

图3是本发明工作节点流程示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清除、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施说例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

一种分布式深度学习的参数更新优化系统,包括一个多个参数服务器节点和多个工作节点,其示意图如图1所示:包括以下步骤:

s1.每个工作节点读入本地的一批训练数据至内存;

s2.工作节点根据用户规定好的模型结构,随机初始化各层参数,并记录当前参数版本为θ1=0,参数服务器设置参数版本号为θ2=0。

s3.工作节点根据读入的样本数据及对应的期望输出,进行前向传播,最后得到模型的输出值;其中,各工作节点互不影响,独立计算。

s4.工作节点根据前向传播的模型输出与样本数据的期望输出的误差得到损失值loss,根据损失值loss进行反向传播,逐层计算参数梯度υ。

s5.工作节点将计算完的梯度以及当前使用的参数版本号发回至参数服务器,参数服务器每收到一个工作节点传来的梯度就将参数版本号加1,即θ2=θ2+1;

s6.参数服务器对θ2进行判断,如果θ2等于t,表明全部工作节点已经执行t此迭代,则采用同步的聚合平均方式,等待所有工作节点完成自己本轮的迭代后,汇总平均梯度值,将平均梯度值与参数相加得到新的参数;如果θ2小于t,根据公式w=w+λ*υ更新参数,其中λ为梯度陈旧度,λ=1/(θ2-θ1);

s7.工作节点从参数服务器上拉取新的参数以及版本号,将本地的参数版本号更新,即θ1=θ2,继续读入下一批数据进行新一轮训练;

其中,

θ1:工作节点的参数版本号;

θ2:参数服务器的参数版本号;

υ:工作节点计算出的梯度;

w:模型参数;

λ:梯度陈旧度;

t:强制同步间隔。

在本实施例中,在参数更新部分对参数进行了版本控制,在参数服务器端和工作节点上都增加了参数的版本号,当前的工作节点拉取最新版本的参数进行训练跟梯度计算后,参数服务器会根据两个版本号的差值作为此工作节点此次迭代的梯度陈旧度λ,然后将梯度乘以λ对参数进行更新;进一步的设定一个强制同步的迭代次数t,每个工作节点在进行t次迭代后会强制同步一次,两种机制相结合来改善梯度陈旧导致的收敛性差的问题。

在本实施例中,参数服务器负责参数的存储和更新,共同维护全局共享的模型参数,可由用户设置为一个或多个。

在本实施例中,工作节点保留部分训练数据,并执行计算,设有多个。

在本实施例中,参数服务器的工作流程具体如下:

a.设置最初的参数版本号θ2=0;

b.接收工作节点发来的梯度v以及工作节点使用的参数版本号θ1;

c.更新参数版本号θ2=θ2+1;

d.判断θ2<强制同步间隔t是否成立;若成立,则进行步骤e,否则进行步骤g;

e.计算梯度陈旧度为λ=1/(θ2-θ1);

f.利用梯度来更新参数w=w+λ*υ,结束操作;

g.使用同步策略更新参数,得到所有工作节点的平均梯度a;

h.利用平均梯度来更新参数w=w+a,结束操作。

在本实施例中,工作节点的工作流程如下:

(1)各工作节点读取一批数据;

(2)判断是否是第一次迭代;若是则进行步骤(3),否则进行步骤(4);

(3)初始化模型参数,并设置当前参数版本号为θ1=0;

(4)从参数服务器拉取最新的参数,更新参数版本号θ1=θ2;

(5)根据前向传播算出损失值loss;

(6)根据后向传播计算梯度;

(7)将梯度和参数版本号θ1=发送给参数服务器;

(8)根据参数服务器对收到的梯度进行参数更新;

(9)判断本地是否存在还未训练的数据分片;若是则进行步骤(1),否则结束操作。

在本实施例中,通过在参数服务器端存储最新的参数版本号,工作节点拉取参数训练的同时会记录下版本号,在异步通信发送梯度给参数服务器后,参数服务器能够根据版本号的差值计算此次迭代的梯度对当前训练影响的权重,从而让梯度下降往收敛更好的趋势前进;并且本方案在异步训练的同时加入了强制同步,要求工作节点在迭代一定次数后采用同步的并行模式,对梯度进行一次聚合平均,两种机制的协作来提高收敛的性能;

本方案能利用异步通信的并行模式来增加分布式训练的数据吞吐量,使得工作节点能把更多的时间用于数据计算,而不是等待参数平均步骤的完成,同时,能减弱现实集群中机器性能差异带来的梯度值过时的问题,使得模型收敛的性能大大增强。

在本实施例中,本方案改变了数据并行训练中,采用异步通信机制进行参数更新的方式;

1、为参数添加版本号,由参数版本号计算出工作节点对应的梯度陈旧度;由于参数服务器需要跟所有的工作节点实时交互,因此它存储的是最新的参数版本号,而工作节点存储此次迭代开始前从参数服务器端拉取的参数版本号,在他进行后向传播计算梯度的过程中,参数服务器上的参数可能已经被其余的工作节点的梯度进行了刷新。所以梯度陈旧度可以定义为两个参数版本之差,以它为基础对梯度进行加权处理;

2、在训练过程中引入了强制同步机制,即同步和异步训练交替执行。即使使用了加权的梯度进行参数更新,但是仍然是异步训练的模式,每一个工作节点的梯度直接对当前所有的工作节点产生影响,采用异步、同步交替运行的方式,既能发挥异步训练的计算效率,又能周期性的使用同步的梯度聚合平均方式来对整体的梯度下降趋势进行改善,因此能达到较好的效果。

显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。

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