一种半异步并行神经网络的计算优化方法及系统
文献发布时间:2023-06-19 10:32:14
技术领域
本发明属于网络优化领域,尤其涉及一种半异步并行神经网络的计算优化方法及系统。
背景技术
同步随机梯度下降方法中,服务器需要服务器需要等待所有的计算节点的梯度都计算完后才能进行参数的更新。在计算节点的数量规模较大时,由于各种环境噪音的存在,很容易就出现某些节点计算速度显著慢于其它节点的情况;或者由于计算的网络链接拓扑的不对称,就会使得某些节点与服务器通信所需的时间显著长于其它节点。在这种情况出现时,整体计算过程就会被最慢的节点所拖慢。特别地,如果计算节点之间本身就是异构的,某些节点计算速度本身就比较缓慢,那么整体的计算速度也会变得极为缓慢,降低了网络的训练速度。
发明内容
为了解决上述技术问题,本发明的目的是提供一种半异步并行神经网络的计算优化方法及系统,克服了某些节点计算速度过慢导致整体速度过慢的问题。
本发明所采用的第一技术方案是:一种半异步并行神经网络的计算优化方法,包括以下步骤:
S1、初始化计算节点的相关参数和神经网络的相关参数;
S2、将神经网络的相关参数发送给空闲的计算节点并命令计算节点执行计算;
S3、基于速度预测器预测计算节点所需的计算时间,得到预测结果;
S4、根据预测结果和节点状态估计本次循环计算用时并将计算节点分类,得到分类结果;
S5、等待计算节点完成计算并根据分类结果命令计算节点执行对应的工作;
S6、根据预设规则判断本次循环计算结束并对神经网络和速度预测器进行参数更新,得到更新后的神经网络;
S7、返回步骤S2直至更新后的神经网络的准确度达到预设值。
进一步,还包括计算节点的工作步骤:
接收来自参数服务器发送的神经网络的相关参数;
获取样本并将样本通过神经网络,计算神经网络的梯度;
将梯度发送给参数服务器,接收参数服务器返回的命令并执行相应的工作。
进一步,所述预测计算节点所需的时间,得到预测结果这一步骤,其具体包括:
将计算节点上一次循环的计算时长输入到预构建的速度预测器;
根据计算节点上一次循环的计算时长预测该计算节点本次计算所需的时间,得到预测结果。
进一步,所述预构建的速度预测器采用长短期记忆网络模型。
进一步,所述根据预测结果和节点状态估计本次循环计算用时并将计算节点分类,得到分类结果这一步骤,其具体包括:
根据预测结果和节点状态计算本次循环计算的可能的结束时间点;
对可能的结束时间点进行打分并选取最优的结束时间点;
根据最优的结束时间点对每个计算节点进行分类,得到分类结果。
进一步,所述分类结果包括第一类别节点和第二类别节点,所述第一类别节点为本次循环中预计等待时间较短的计算节点,所述第二类别节点为本次循环中预计等待时间较长的计算节点。
进一步,所述等待计算节点完成计算并根据分类结果命令计算节点执行对应的工作这一步骤,其具体包括:
等待任一计算节点计算完毕,根据计算节点的类别给出不同的指令;
对于第一类别节点,参数服务器接收计算结果并发送停止计算命令给该计算节点,计算节点转为空闲等待状态;
对于第二类别节点,参数服务器接收计算结果并发送继续计算命令给该计算节点,计算节点继续开始计算。
进一步,所述根据预设规则判断本次循环计算结束具体为判断到第一类计算节点全部计算完毕,本次循环计算结束。
本发明所采用的第二技术方案是:半异步并行神经网络的计算优化系统,包括:
参数服务器,用于初始化参数、发送相关参数、预测计算时间、将计算节点分类、发送回应、参数更新和判断准确度;
计算节点,用于接收相关参数、执行计算和响应命令。
本发明方法及系统的有益效果是:本发明克服了某些节点计算速度过慢导致整体速度过慢的问题,有效缓解了慢速节点对整体训练速度的影响,同时也有效地减少了参数服务器更新参数的频率,减少了梯度的计算延时,保证了计算精度。
附图说明
图1是本发明一种半异步并行神经网络的计算优化方法的步骤流程图;
图2是本发明一种半异步并行神经网络的计算优化系统的结构框图。
具体实施方式
下面结合附图和具体实施例对本发明做进一步的详细说明。对于以下实施例中的步骤编号,其仅为了便于阐述说明而设置,对步骤之间的顺序不做任何限定,实施例中的各步骤的执行顺序均可根据本领域技术人员的理解来进行适应性调整。
参照图1,本发明提供了一种半异步并行神经网络的计算优化方法,该方法包括以下步骤:
S1、初始化计算节点的相关参数和神经网络的相关参数;
具体地,需要初始化的参数包括(1)所有节点的历史计算时间,一般默认设置为相同的一个数值(2)神经网络的相关超参数,如学习率、批次大小等(3)速度预测器的参数(4)将所有计算节点标记为空闲。
S2、将神经网络的相关参数发送给空闲的计算节点并命令计算节点执行计算;
具体地,将神经网络的参数发送给所有空闲的计算节点:对在上一次循环中计算完成并已经提交了计算结果(即梯度)的所有节点,参数服务器将更新后的参数分别发给它们,让它们开始下一轮的计算,此时将所有节点标记为忙碌;
S3、基于速度预测器预测计算节点所需的计算时间,得到预测结果;
具体地,根据每个计算节点以往的提交计算结果的速度,通过速度预测器预测它们接下来若干次计算所需的时间。
S4、根据预测结果和节点状态估计本次循环计算用时并将计算节点分类,得到分类结果;
具体地,根据预测结果和节点状态估计本次循环用时,将所有计算节点分为二类:第一类是该次循环中预计等待时间较短的节点,第二类是该轮中预计等待时间较长的节点;
S5、等待计算节点完成计算并根据分类结果命令计算节点执行对应的工作;
具体地,等待任一节点计算完毕,根据计算节点的类别,做出不同的反应:对于第一类节点,服务器会接收其计算结果,然后发送回应1给该节点,令其停止计算,进入空闲等待的状态;而对于第二类节点,当其计算完毕后,服务器会接收其计算结果,然后发送回应2给该节点,令该节点马上继续开始计算。
S6、根据预设规则判断本次循环计算结束并对神经网络和速度预测器进行参数更新,得到更新后的神经网络;
具体地,检查第一类节点是否全部都计算完完毕,若全部计算完毕,则对神经网络和速度预测器进行参数更新,否则回到步骤S5,继续等待节点计算。根据所有计算完成的结果,对网络进行一次梯度优化;同时根据每个计算节点本次的计算用时,对速度预测器也进行一次优化。
S7、返回步骤S2直至更新后的神经网络的准确度达到预设值。
具体地,对更新后的神经网络的准确度进行判断,若已达到要求,则完成训练,将回应3发送给所有计算节点,退出;否则继续回到步骤S2,进行下一轮循环的训练。
进一步作为本方法的优选实施例,还包括计算节点的工作步骤:
接收来自参数服务器发送的神经网络的相关参数;
具体地,从参数服务器获取整个网络的所有参数。
获取样本并将样本通过神经网络,计算神经网络的梯度;
具体地,随机抽取若干样本,在所有样本中独立地随机抽取一个批次的样本;将该批样本通过神经网络,计算神经网络的梯度:这一步就是计算节点的计算过程,得到的神经网络的梯度就是计算结果。
将梯度发送给参数服务器,接收参数服务器返回的命令并执行相应的工作。
具体地,将梯度作为计算结果发回给参数服务器并等待参数等待服务器的回应。因为参数服务器会将所有计算节点动态地分类,而计算节点本身是不清楚自己所处的类别的,所以需要在每轮计算中等待服务器的回应,来判断自己下一步的行为,当接收到回应1时,说明它属于第一类节点,它需要等待其它的所有第一类节点计算完毕后然后才能进行下一轮循环的计算;当接收到回应2时,其立即开始新一轮的计算;当接收到回应3时,说明训练已经完成,结束计算。
进一步作为本方法优选实施例,所述预测计算节点所需的时间,得到预测结果这一步骤,其具体包括:
将计算节点上一次循环的计算时长输入到预构建的速度预测器;
具体地,预测器的数量和计算节点的数量相等,每个节点都有一一对应的预测器。这么做的原因是每个计算节点的计算模式都可能不同,通过设置相互独立的预测器,可以最大限度保留、提取它们的计算特征。
根据计算节点上一次循环的计算时长预测该计算节点本次计算所需的时间,得到预测结果。
具体地,每个预测器的输入是上次计算时长,输出是下次计算时长的估计值。
进一步作为本方法的优选实施例,所述预构建的速度预测器采用长短期记忆网络模型。
进一步作为本方法的优选实施例,所述根据预测结果和节点状态估计本次循环计算用时并将计算节点分类,得到分类结果这一步骤,其具体包括:
根据预测结果和节点状态计算本次循环计算的可能的结束时间点;
具体地,假设计算节点的总数为n,每个节点的预测下轮计算所需时间为t
对可能的结束时间点进行打分并选取最优的结束时间点;
具体地,对每个可能的时间点进行打分,假设选取的时间点为T,打分方式如下:
上式中,
在计算完2n个时间点T的得分后,选取其中最高得分的时间点T
根据最优的结束时间点对每个计算节点进行分类,得到分类结果。
具体地,对于每个计算节点k,如果
进一步作为本方法的优选实施例,所述分类结果包括第一类别节点和第二类别节点,所述第一类别节点为本次循环中预计等待时间较短的计算节点,所述第二类别节点为本次循环中预计等待时间较长的计算节点。
具体地,每个节点在本轮计算中的开始时间并不一致,如果在上一轮中被分为了第二类节点,那么在本轮还没开始时就会提前开始计算。每个节点的循环用时=计算用时-提前计算的时长(即等待用时)。在计算用时不变的条件下,等待时间较短是会使得本次循环计算用时较长。
进一步作为本方法的优选实施例,所述所述等待计算节点完成计算并根据分类结果命令计算节点执行对应的工作这一步骤,其具体包括:
等待任一计算节点计算完毕,根据计算节点的类别给出不同的指令;
对于第一类别节点,参数服务器接收计算结果并发送停止计算命令给该计算节点,计算节点转为空闲等待状态;
对于第二类别节点,参数服务器接收计算结果并发送继续计算命令给该计算节点,计算节点继续开始计算。
进一步作为本方法的优选实施例,所述根据预设规则判断本次循环计算结束具体为判断到第一类计算节点全部计算完毕,本次循环计算结束。
如图2所示,一种半异步并行神经网络的计算优化系统系统,包括:
参数服务器,用于初始化参数、发送相关参数、预测计算时间、将计算节点分类、发送回应、参数更新和判断准确度;
计算节点,用于接收相关参数、执行计算和响应命令。
上述系统实施例中的内容均适用于本方法实施例中,本方法实施例所具体实现的功能与上述系统实施例相同,并且达到的有益效果与上述系统实施例所达到的有益效果也相同。
以上是对本发明的较佳实施进行了具体说明,但本发明创造并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做作出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。
- 一种半异步并行神经网络的计算优化方法及系统
- 一种面向近数据处理架构下键值存储系统的异步并行优化方法