一种参数服务器中全局参数的更新方法与流程

文档序号:16325517发布日期:2018-12-19 05:54阅读:298来源:国知局
一种参数服务器中全局参数的更新方法与流程
本发明属于光通信
技术领域
,更为具体地讲,涉及一种参数服务器中全局参数的更新方法。
背景技术
设计一个分布式机器学习系统的目标是能够获得加速——在最理想情况下,应该能够获得线性加速。也就是说,每多加一个计算节点进来,相对于单机,就应该获得额外的1倍加速。但是由于同步不同节点上的计算任务或参数通常会产生额外的开销,这个开销可能会大于、甚至几倍于计算开销。如果这个系统设计的不合理,这个开销就会导致你的训练在多机上并不能获得加速,甚至于出现这种情况:当你用了好几倍于单机的计算资源来并行你的机器学习训练程序,却发现比单机还要慢。ps的架构其实和客户端——服务器(cs)架构差不多,ps主要抽象出了两个主要概念:参数服务器(parameterserver)和工作节点(client,orworker)。服务器里面放了一些数据,而计算节点则可以向服务器发数据或者请求服务器回传数据。有了这两个概念,就可以把分布式机器学习的计算流程和ps中的服务器和工作节点这两个模块做如下的映射:ps的服务器端维护全局共享的模型参数wt,而客户端则对应到执行计算任务的各个工作节点。同时,服务器端向客户端提供两个主要的api:push和pull。在每次迭代开始的时候,所有的客户端先调用pull向服务器发送一个请求,请求服务器回传最新的模型参数,每个计算节点收到回传的模型参数后,它就把这份最新的参数拷贝并覆盖到之前旧的参数上,然后执行计算得到梯度更新值。换句话说,ps的pull确保了每个计算节点在计算开始前都能获取一份最新参数的拷贝。在实际的使用过程中,分布式集群环境本身存在网络延迟等问题,同时,集群中的各个机器性能存在差异,所以当分布式深度学习算法运行在这类异构集群环境中时,算法的稳定性会下降,并且严重的时候会出现模型不收敛。这与我们使用分布式集群进行模型训练的初衷相背离,没能达到加速神经网络训练过程的目的。对异步随机梯度下降sgd算法而言,系统中的延迟对算法有效收敛造成了影响,即当快的工作节点已经完成了几次迭代,并且将更新值已经更新到全局参数后,这时参数服务器接受到了慢的工作节点传递过来的延迟的更新值,而这个延迟的更新的值会被同样的更新方式更新到全局参数中,这样导致了全局参数又偏离了最优解的方向,影响了整个模型的收敛速度。技术实现要素:本发明的目的在于克服现有技术的不足,提供一种参数服务器中全局参数的更新方法,根据权值参数的延迟度,动态的更新全局参数,从而减小高延迟对算法的影响。为实现上述发明目的,本发明一种参数服务器中全局参数的更新方法,其特征在于,包括以下步骤:(1)、全局参数初始化设置全局时间戳t,设置一个训练的最大迭代次数t,t=0,1,2,…,t-1;t=0时,参数服务器随机初始化全局参数,并将初始化后的全局参数w0发送给所有的工作节点;(2)、训练数据预处理从数据库中下载多个训练数据,根据工作节点个数等分成m份,再分别发放给m个工作节点,保存在各个工作节点的本地数据块中;(3)、工作节点根据全局参数w0进行训练,得到本地参数;(3.1)、在第t个时间戳时,每个工作节点从本地数据块中随机抽取n个样本数据,n<<m;(3.2)、通过mini-batch算法,使用全局参数w0对n个样本数据进行训练,得到每个节点的每个样本训练输出值m为工作节点个数;(3.3)、计算第j个工作节点的损失函数值lj:其中,表示第j个工作节点进行第i个样本训练时的期望输出值;(3.4)、根据损失函数值lj计算梯度值▽lj;(3.5)、计算第j个工作节点在第t个时间戳时的本地参数其中,η表示学习率;(4)、全局参数更新(4.1)、参数服务器依次接收各工作节点传递过来的本地参数再按照先后顺序为每个工作节点确定一个延迟度;dj=t-tτ其中,dj为第j个工作节点的延迟度,tτ表示第j个节点上一轮更新全局参数的时间戳;(4.2)、通过第j个工作节点的延迟度dj,计算第j个工作节点的参数αj:其中,c为常数;(4.3)、参数服务器更新第j个工作节点的全局参数同理,参数服务器依次更新第t个时间戳时其余工作节点的全局参数;(4.4)、待第t个时间戳时的所有工作节点的全局参数更新完成后,令t=t+1,参数服务器将更新后的全局参数wt+1回传给各对应工作节点,再返回步骤(3)重复上述步骤,直到全局时间戳t到达最大迭代次数时,迭代结束,完成全局参数的更新。本发明的发明目的是这样实现的:本发明一种参数服务器中全局参数的更新方法,先设置参数服务器相关参数,并对全局参数初始化,然后从数据库中下载训练数据,并进行预处理,再利用预处理后的训练参数和初始化后的全局参数计算各个工作节点的本地参数,最后将本地参数回传给参数服务器,通过参数服务器进行迭代更新全局参数。同时,本发明一种参数服务器中全局参数的更新方法还具有以下有益效果:(1)、本方法将网络中传输梯度值的方法改为直接传递权值参数,然后在参数服务器上直接对所有的参数进行线性插值计算,解决了异步协议算法在大型数据集上不收敛的问题,并且该方法在图像分类问题上取得了较好的效果。(2)、在异构集群中,本方法能够感知到各个工作节点传递来的权值参数的延迟度,并且根据延迟度的大小动态的决定全局参数的更新,能够有效的减少高延迟对全局参数的影响,从而使得算法在异构集群中有着更好的稳定性。附图说明图1是本发明一种参数服务器中全局参数的更新方法流程图;图2是异步sgd算法更新示意图;图3是异步sgd算法第一步运行示意图;图4是异步sgd算法第二步运行示意图;图5是异步传参sgd算法更新示意图;图6是异步传参sgd算法第一步运行示意图;图7是异步传参sgd算法第二步运行示意图;图8是高延迟更新值对全局参数的影响示意图;图9是使用动态α对高延迟进行处理的示意图;图10是收敛时迭代次数统计直方图;图11是工作节点的平均计算时间统计直方图;图12是收敛时使用时间统计直方图。具体实施方式下面结合附图对本发明的具体实施方式进行描述,以便本领域的技术人员更好地理解本发明。需要特别提醒注意的是,在以下的描述中,当已知功能和设计的详细描述也许会淡化本发明的主要内容时,这些描述在这里将被忽略。实施例图1是本发明一种参数服务器中全局参数的更新方法流程图。在本实施例中,如图1所示,本发明一种参数服务器中全局参数的更新方法,包括以下步骤:s1、全局参数初始化设置全局时间戳t,设置一个训练的最大迭代次数t,t=0,1,2,…,t-1;t=0时,参数服务器随机初始化全局参数,并将初始化后的全局参数w0发送给所有的工作节点;s2、训练数据预处理从数据库中下载多个训练数据,根据工作节点个数等分成m份,再分别发放给m个工作节点,保存在各个工作节点的本地数据块中;s3、工作节点根据全局参数w0进行训练,得到本地参数;s3.1、在第t个时间戳时,每个工作节点从本地数据块中随机抽取n个样本数据,n<<m;s3.2、通过mini-batch算法,使用全局参数w0对n个样本数据进行训练,得到每个节点的每个样本训练输出值m为工作节点个数;s3.3、计算第j个工作节点的损失函数值lj:其中,表示第j个工作节点进行第i个样本训练时的期望输出值;s3.4、根据损失函数值lj计算梯度值▽lj;其中,通过mini-batch算法进行样本数据训练时,神经元a与神经元b之间的权重为wab,本层的输出为x,上一层的输出为v,且满足:x=v·wab;s3.5、计算第j个工作节点在第t个时间戳时的本地参数其中,η表示学习率;在本实施例中,通常来说在工作节点与参数服务器之间,传送的值为梯度值,即工作节点计算得到了当前mini-batch的梯度值,然后会将梯度值传递给参数服务器。参数服务器接收到梯度值后会根据一定的算法对全局参数进行更新,如同步协议会使用平均的方式,将所有的梯度值做一个平均然后添加到全局参数中去,异步协议则会直接将每一个梯度值添加到全局参数中去。但如果使用梯度值对全局参数进行更新,在异步的情况下会出现问题,由于每个工作节点每传递给参数服务器一次梯度值,全局参数就会被更新一次,于是全局参数存在很多的版本,这对于算法的有效收敛有着很大的影响。如图2所示,在第一排中展示的是全局参数的更新过程,第二排中对应工作节点,当算法开始运行时,w1、w2和w3拿到了初始的全局参数w0,假设按照图中工作节点排列的顺序进行全局参数的更新,当w1把梯度值a传递到参数服务器中,会得到最新的全局参数wa,然后w2的梯度值b被参数服务器接收,并将计算得到的全局参数wa,b返回给w2,用于下一次迭代的初始参数。依次类推,整个基于异步协议的参数交换会一直进行。我们可以从中看出问题的所在,以w1为例,在算法的第一步中,用于训练的初始参数为w0,计算得到梯度值a,然后传递给参数服务器,此时参数服务器上依然是w0,通过计算得到了最新的参数wa,并且回传给w1用于下一次迭代的初始参数。当w1计算完成第二次迭代后,将得到的梯度值d传递给参数服务器,此时参数服务器中的最新全局参数已经是wa,b,c了。通常来说,d是从wa计算得到,最终却被用于参数wa,b,c上,在这种情况下,对于全局参数的更新看上就会像是在随机的更改,并且当机器数量增多的时候,如图3所示,这种随机性会导致更加严重的后果,而图3和图4用更直观的方式来说明了这个问题。假设工作节点始终以相同的顺序更新参数,在第一步中,所有工作节点将会使用相同的初始全局参数计算梯度。如图4所示,图中实线箭头表示来自各个工作节点的更新梯度矢量。按照1、2、3的更新顺序完成更新,当第三台机器完成更新后,全局参数的位置来到了图4中所示的终点位置4。在理想情况下,更新完成后,工作节点1拿到的更新值就变成了1点的值,工作节点2拿到的全局参数为2点的值,工作节点3拿到的值为3点的值,然后进入了第二步的计算,如图4所示。工作节点1产生的更新本来是由1点位置的参数训练得到,但是传递到参数服务器后,会将梯度值在图中起始点的位置使用,同样,经过工作节点2、3训练得到的梯度值也被更新到了全局参数上面,这时就可以看出来真实的全局参数和本地计算的参数位置相差非常的大。如果机器数量更多,以及考虑存在延迟的情况时,这种差异会更加的大,导致全局参数的更新看起来像是在随机的行走。s4、全局参数更新s4.1、本文提出了延迟度的概念,实现了对延迟大小的量化,让每一个工作节点的更新值拥有自己的延迟度,这样在参数服务器中,可以通过延迟度判断出该值是否能够用于全局参数的更新。延迟度的计算方法为:参数服务器依次接收各工作节点传递过来的本地参数再按照先后顺序为每个工作节点确定一个延迟度;dj=t-tτ其中,dj为第j个工作节点的延迟度,tτ表示第j个节点上一轮更新全局参数的时间戳;s4.2、通过第j个工作节点的延迟度dj,计算第j个工作节点的参数αj:其中,c为常数;这里使用了指数函数则是为了保证参数αj的值依然能够在0到1的范围内。s4.3、参数服务器更新第j个工作节点的全局参数同理,参数服务器依次更新第t个时间戳时其余工作节点的全局参数;s4.4、待第t个时间戳时的所有工作节点的全局参数更新完成后,令t=t+1,参数服务器将更新后的全局参数wt+1回传给各对应工作节点,再返回步骤s3重复上述步骤,直到全局时间戳t到达最大迭代次数时,迭代结束,完成全局参数的更新。在本实施例中,如图5所示,每个工作节点传递过来的更新值会直接对全局参数进行更新,当集群中工作节点的性能存在较大的差异的时候,从图5中worker1和worker2的更新顺序就可以发现,worker1传递第一次的更新值时,worker2已经在进行第三次的更新了,并且参数服务器中的全局参数已经被更新了四次了,此时worker1的更新值的延迟已经非常大了,但根据之前的异步sgd算法的更新机制,该更新值依然会直接更新全局参数,这是算法不合理的地方。经过前面的分析,本文得出了结论,高延迟的更新值对全局参数的影响是算法在分布式环境中性能和效率下降的主要原因。然而,在拥有多个工作节点的分布式环境中,工作节点在每次更新时都不应该完全替换服务器上的参数,因为一个工作节点传递过来的参数仅代表了这一个工作节点的结果。全局参数的更新应该包含了所有工作节点的参数值,即在更新全局参数的时候,需要同时保留原有全局参数的值和工作节点传递过来的参数值。有很多方法可以实现这一点,本文选用了线性插值的方法。在更新全局参数中,使用本地参数进行更新和使用梯度值进行更新的区别类似于分别使用坐标和方向将一个点从一个位置移动到另外一个位置。当使用方向时,由于起点不同,到达的目的地也会不同,但使用坐标时,无论起始位置如何,目的地总是相同的,图6和图7中展示了这种情况。如图6所示,其中的a、b、c点表示工作节点传递过来的权值参数值,我们假设每次的更新顺序是固定的,即全局参数按照a、b、c的顺序更新,最左边的黑点表示初始状态下,参数服务器中的全局参数值,其他的黑色点1、2、3表示更新后得到的值,并按更新顺序进行了标注。如图所示,第一步的更新结果为标注为3的黑色点的位置。通过同样的方式进行分析第二步,如图7所示。全局参数经过两步的更新后,也就是经过了两次完整迭代,可以看到最终的结果位置相对于最初的起始值更靠近了最优点的位置,没有出现随机跳动,以至于远离了最优点的情况。在异构环境中,集群中的高延迟对全局参数的影响很大。这里使用了一个示例来进行说明,如图8所示。最右边黑点代表的是当前参数服务器中最新的全局参数,该值已经非常靠近最优点了。这时,参数服务器接受到了一个延迟很高的更新参数,即1点所示位置,根据异步sgd算法的参数更新机制,我们可以大概算出新的全局参数的位置,即图中2点的位置。可以看出2点相对于最初的起始值,不但偏离了最优的方向,而且偏离的距离还非常的远,而这个问题在延迟严重的集群环境中会体现得更加明显,使全局参数出现大的波动。如图9所示,其中最右边黑点表示当前参数服务器中的最新的全局参数,1点为延迟的更新参数,这里假设它的延迟度为8,整个集群的数量m为4,c的值设置为1,可以得到α的值为0.13,于是可以得出新的全局参数,如图9中2点所示的位置。可以看出,当一个延迟度高的本地参数被推送到参数服务器的时候,它被更新到全局参数中时,α的值会被缩小,这样的结果就是延迟度高的本地参数用于更新到新的全局参数中的权值会变得更小,从而达到了让延迟度高的本地参数尽可能小的影响全局参数的目的。实例为了测试分布式算法,本文使用了一台服务器和四台工作节点搭建了便捷的分布式集群环境,硬件和软件配置信息如表1所示。在本实验中,逻辑上的主服务器和参数服务器是在同一台物理服务器上面运行,同时数据服务器以及redis也是运行在该服务器上面。实验环境中的工作节点,由于都是多核的处理器,所以可以模拟多台计算节点的工作,只需要在浏览器中打开多个tab标签页面即可。表1是实验环境配置信息表;表1本实施例所有实验,均是属于解决图像分类问题,通过分析训练过程中训练错误率等指标从而达到分析算法效率的目的。本实施例选用了两个经典的图像数据集mnist和cifar10数据集,在这两种数据集上对新算法进行测试,能够有效的检测算法的各项功能。mnist是尺寸为$28\times28\times1$的灰度手写数字图像数据集。训练数据集包含10个类别的50000个图像。对于mnist数据集,使用mlitb的用户界面可以直接配置cnn的结构,配置参数如表2所示。表2是mnist数据集上cnn网络参数信息表网络层索引网络层类型参数信息1输入层size=(28,28,1)2卷积层size=(5,5),stride=1,filters=8,actfun=relu3池化层size=(2,2),stride=24卷积层size=(5,5),stride=1,filters=16,actfun=relu5池化层size=(3,3),stride=36全连接层neurons=10,actfun=softmax表2对于所有的实验,我们使用的小批量大小nc为100,学习率η设置为0.01,每个实验我们会运行5次,并用平均结果来绘制实验结果图。此外,本实施例中将异构程度hl设置为1和2,分别测试了同步sgd算法、异步sgd算法和异步传参sgd算法在mnist数据集上的表现。当异构程度为1时,我们通过添加延迟,将所有工作节点的计算时间保持在1秒左右,而在异构程度为2时,我们将半数的工作节点的延迟增加到2秒。在参数服务器端的代码中,变量step会记录整个系统的迭代次数。工作节点的平均计算时间由获取到各个工作节点每次计算前后的系统时间戳计算得到,并打印在浏览器的控制台,最后通过平均得到。如图10所示,展示了几种算法在异构程度由1增加到2时算法达到指定错误率时迭代次数的变化情况,该指标的意义在于,当达到收敛时,迭代次数越少,表明每一次的迭代能够产生更多的有效更新,即全局参数能够更加靠近最优解,而迭代次数多则表明算法在整个训练过程中有效更新较少。而使用了异步协议的其他几种算法,迭代次数都出现了增长,异步sgd算法使用梯度值直接对全局参数进行更新,当异步程度增加到2时,异步sgd算法达到收敛时的迭代次数增加非常明显,说明随机跳动的情况严重影响了模型的收敛。而异步传参sgd算法迭代次数增长较少,说明本算法是能够感知到集群中的延迟,降低高延迟对全局参数的影响,减少了无效的更新。如图11所示,展示了几种算法在异构程度由1增加到2时算法平均计算时间的增长情况。当集群中的异构程度增加时,平均计算时间如果与异构程度呈线性相关的时候,说明在算法运行过程中,运算速度慢的节点对于运算速度快的节点的影响较大,从而出现了平均计算时间线性增长的情况。理想的情况是,当异构程度增加时,平均计算时间缓慢的增长,而不是呈直线型的增长,这样的结果表明集群中运算速度慢的节点对于运算速度快的节点影响较小,增加了计算资源利用率。同步sgd算法的平均计算时间几乎就是一种线性增长的情况,异构程度为2时,平均计算时间增加到了原来的2倍,因为严格的同步机制使得每一次的计算时间都由最慢的工作节点决定,实验结果与理论的分析是相吻合的。而使用了异步协议的三种算法的平均计算时间增长较少,结合迭代次数和平均计算时间这两个指标,三种算法的平均计算时间增长几乎是相同的,说明了异步协议使得集群中的计算资源得到了充分的利用。如图12所示,展示了几种算法在异构程度由1增加到2时算法达到指定错误率时使用的时间变化情况。当集群中的异构程度增加的时候,查看算法的整个运行时间,能够直观的判断出算法的运行速度,结合上面两个指标,可以判断出算法的综合性能,一个算法能否在有效的时间达到收敛是非常重要的。同步sgd算法虽然在平均计算时间上表现并不好,但是有效更新次数是最多的,所以在整体的运行时间表现上还是在可以接受的程度。异步sgd算法在平均计算时间和迭代次数上存在明显劣势,当异构程度增加时,会导致算法的整体运行时间大大的增加,使得算法的效率降低明显。而异步传参sgd算法在整体运行时间上的表现依然是最好的。综上所述,异步传参sgd算法在异构程度增加时,有着非常好的稳定性。综上,本发明所提供的方法,将参数服务器与工作节点间传递的值由梯度值更改为权值参数,该算法还可以根据权值参数的延迟度,动态的更改全局参数的更新机制,从而减小高延迟对算法的影响。实验表明,本算法在图像分类问题上取得了较好的效果,并且在异构环境中也能稳定的运行。尽管上面对本发明说明性的具体实施方式进行了描述,以便于本
技术领域
的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本
技术领域
的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1