平度市城乡建设局网站,上海企业服务云定位,外贸营销推广,制作的网站图片不显示论文链接#xff1a;Revisiting Distributed Synchronous SGD
ABS
本文介绍了用于分布式机器学习的同步和异步SGDSGDSGD#xff0c;同时指出各自的缺点#xff1a;stragglersstragglersstragglers和stalenessstalenessstaleness。
同时为了解决同步SGDSGDSGD存在straggle…论文链接Revisiting Distributed Synchronous SGD
ABS
本文介绍了用于分布式机器学习的同步和异步SGDSGDSGD同时指出各自的缺点stragglersstragglersstragglers和stalenessstalenessstaleness。
同时为了解决同步SGDSGDSGD存在stragglersstragglersstragglers的问题本文提出了一种新的算法通过back-up来加速同步SGDSGDSGD的速度。
注我第一次接触到stragglersstragglersstragglers是在MapReduce的论文中MapReduce中也提出了back-up的解决办法当然MapReduce中的back-up的方法不是由MapReduce提出的而是引用了另一篇文章中的方法。当然本文的back-up与MapReduce中的有着一些不同的地方。
MapReduce的back-up引用的文章是Arash Baratloo, Mehmet Karaul, Zvi Kedem, and Peter Wyckoff. Charlotte: Metacomputing on the web. In Proceedings of the 9th International Conference on Parallel and Distributed Computing Systems, 1996
1 INTRO
异步SGDSGDSGD解决分布式机器学习中的通信速率的问题的同时引入了新的问题过期的梯度。
过期的梯度对模型的收敛速度以及收敛精度都有着不小的影响。
而如果使用同步SGDSGDSGD有存在stragglersstragglersstragglers完成时间远远低于其他结点的节点的问题。
本文采用同步SGDSGDSGD但是引入了back−upback-upback−up机制能够一定程度的环节stragglersstragglersstragglers的情况本文的主要贡献如下
阐明了异步SGDSGDSGD中过期的梯度对测试精度的负面影响阐明了通过SGDSGDSGD中stragglersstragglersstragglers对训练时间的影响提出带有back−upback-upback−up机制的同步SGDSGDSGD做了实验来验证新方法的收敛速度以及收敛精确度通过实验证明新方法比异步SGDSGDSGD更加优秀不论是收敛速度还是收敛精度
1.1 Preliminaries and Notation
通常我们的训练需要让损失函数最小。
而我们可以通过梯度下降的方法来求出一个局部的最优解。
当将机器学习通过分布式来实现的时候所需要做的事情是类似的只是我们需要定期的从各个节点收集数据进行一次数据的汇总再将新的数据分发给各个节点进行新的训练。正是有了数据收集和分发的过程才产生了两种不同算法同步SGDSGDSGD和异步SGDSGDSGD。
2 Asynchronous Stochastic Optimization
异步SGDSGDSGD的算法如下所示 需要注意的是虽然叫做异步算法但是上述的过程还是存在一些同步机制例如工作结点在从参数服务器读取参数的时候必须要保证读取到的参数比上一轮读取到参数新如果不这样那么工作结点就会做多余的计算当然这往往是必然的因为在自己进行下一轮的读取的时候自己本轮的参数应该会上传到服务器进行更新也就是说在读取参数的时候不需要所有的工作结点都完成自己本轮的工作再上传参数这也就是异步的意思。
这样做能够充分的利用资源但是也同样存在问题在一个工作结点进行计算的过程中Algorithm1line3−7Algorithm\ 1\ line 3 -7Algorithm 1 line3−7时其他的工作结点可能完成了某一轮的计算将参数上传到服务器进行更新这也就代表正在进行工作的工作结点的参数过时了也就是出现了stalenessstalenessstaleness。
后续的实验会说明过时梯度对最终的影响有多大。
Table1Table\ 1Table 1展示了ImageNet上使用Inception模型进行训练工作结点个数为404040的异步SGDSGDSGD在各层出现梯度过期情况。 虽然异步SGDSGDSGD存在过期梯度的问题但是在工作结点的个数比较少的情况下异步SGDSGDSGD的效果还是不错的但是当工作结点的个数增加时异步SGDSGDSGD就变得力不从心了。
2.1 Impact of Staleness on Test Accuracy
实验的细节可以在原文的附录中找到。
Figure2Figure\ 2Figure 2展示了平均过期梯度数量与测试精度的关系。 从Figure2Figure\ 2Figure 2可以看出当梯度过期出现的次数越多的时候整体的错误率会有着明显上升特别是从100100100到120120120这一段。
事实上当梯度过期的平均值达到151515的时候就已经出现错误率剧烈上升了为了能够做更大数值的梯度过期作者使用了一些技巧
前三个epochsepochsepochs过期的数量增长较慢当梯度过期的数量过大时候降低学习率如果上述两点依然会导致非常大的错误率那么就多次进行实验取最好的结果。
3 Revisiting Synchronous Stochastic Optimization
过去提出了同步SGDSGDSGD该方法解决了异步SGDSGDSGD中过期梯度的问题但是同时又引入了新的问题现在每一次同步的时间取决于服务器最后收到的参数的时间通常是完成本轮本地计算最慢的工作结点也就是stragglersstragglersstragglers。
stragglersstragglersstragglers的出现是很常见的在规模越大的分布式集群中收到stragglersstragglersstragglers的影响就会越大而出现本地计算变慢的原因也是多种多样的例如硬件出现故障其他进程占用资源等等。
为了解决stragglersstragglersstragglers的问题作者提出了back-up的方法作者将参与训练的工作结点划分为两部分NNN个正常工作者和bbb个备用工作者。
这NbNbNb个结点依然执行不同的数据上的计算当服务器收到任意NNN个结点的参数之后服务器就可以进行本轮的参数聚合。
注意上述的过程中NNN和bbb仅仅只是两个参数在算法的过程中并没有实实在在地标注那个结点属于正常工作者还是备用工作者而是类似于自动分配的通常网络不出现卡顿情况下先完成本地计算的NNN个结点会成为正常工作者剩下的bbb个结点此时就是备用工作者也可以看做是bbb个stragglersstragglersstragglers每一轮更新的备用工作者可能会发生变化。
Algorithm3,4Algorithm 3, 4Algorithm3,4分别描述了工作结点的执行步骤和参数服务器执行的步骤 工作结点开始之前先从参数服务器读取本轮的参数如果本轮的参数还没准备好那么此时会阻塞之后工作结点计算自己本地的梯度计算完成后将梯度发送给服务器。可以看到工作结点的步骤与传统的同步SGDSGDSGD没有任何区别而不同的地方出现在参数服务器。
参数服务器会收集本轮工作结点梯度信息梯度信息带有时间戳会丢弃之前的梯度因为可能在进行新的一轮的时候之前的stragglersstragglersstragglers才完成当收集到NNN个梯度信息的时候就进行参数的聚合之后就可以将参数发送给工作结点进行新的一轮计算。
上面算法中的θ‾\overline {\theta}θ是用于性能估计的。
说明个人认为上面的算法存在一个问题。从我的理解来看当一个工作结点在某一轮成为了stragglerstragglerstraggler之后那么其他正常工作结点再开始下一轮计算的时候该结点可能还没有完成本轮的计算如果正常工作结点没有出现“卡顿”的情况那么该工作结点在下一轮依然有很大的可能再一次成为掉队者这样下去就会一直出现恶性循环stragglersstragglersstragglers会更有可能成为stragglersstragglersstragglers。这就相当于这些stragglersstragglersstragglers的数据完全没有参与到更新这等价于在一开始训练的时候我们人工的丢弃一些固定的数据这样并不能很好的利用数据。关于这个问题我认为至少有两种可以解决的方法
根据kkk折交叉验证的想法我想到了一个改进的想法每一次参数服务器完成本轮更新后应该向所有的工作结点发送信息这条信息的数据量非常小所以不会称为瓶颈当收到这条信息的时候还没有完成本轮本地计算结点应该停止本轮计算因为参数已经进行更新了再计算也没有意义了然后直接开始下一轮的读取参数操作这样当前的stragglersstragglersstragglers在下一轮的时候才有公平竞争的机会因为这些stragglersstragglersstragglers的性能可能在下一轮的时候恢复这个时候新的stragglersstragglersstragglers就很有可能是其他出现性能下降的结点这样每轮丢弃的数据具有随机性很类似于kkk折交叉验证。除了上面的方法服务器参数还可以在收到之前的梯度的时候不进行丢弃而是将该部分的梯度也对参数进行修改但是并不增加本轮收到的梯度个数这样做的目的就相当于是延迟修改这似乎比直接丢弃掉要好一些。但是延迟丢弃可能会对整体造成不好的影响这个就需要具体进行实验分析了或者设计更加合理的延迟更新操作。
3.1 Straggler Effects
这一部分的实验是展示stragglersstragglersstragglers的负面影响实验的细节可以在原文的附录找到。
Figure3Figure\ 3Figure 3展示了某个模型上等待不同个数的结点完成本地计算需要的时间一共有100100100个工作结点Figure4Figure\ 4Figure 4代表的是等待kkk个结点完成本地计算所需要的平均数(Mean)和中位数(Median) Figure3Figure\ 3Figure 3的纵轴代表的是整个迭代过程的占比横轴代表所需要的时间kkk代表等待kkk个结点完成本地计算。
从上图中我们可以看到的是如果要等待100100100个工作结点都完成本轮的计算需要的时间比等待的909090个结点的时候增加了很多而且图片的说明还指出最大的一次等待时间达到了310s310s310s。这表明stragglersstragglersstragglers的影响是非常大的同时上面的图片也说明stragglerstragglerstraggler的占比是非常低的。
为了确定NbNbNb的取值作者做了实验Figure5Figure\ 5Figure 5是不同的NNN收敛所需要的迭代次数Nb100Nb100Nb100可以看到N100,b0N100, b 0N100,b0的时候所需要的迭代次数最少。不过需要注意的时候迭代次数少时间并不一定短如果N100N100N100那么需要等待所有的工作结点完成计算那么由上一个实验可以看到这样的时间会非常长于是作者作者用Figure6Figure\ 6Figure 6来展示时间与NNN的关系。 可以看到N96,b4N96,b4N96,b4的时候收敛所花费的时间最少。
注意并不是N1,2,3,...,100N1, 2, 3, ..., 100N1,2,3,...,100的实验均做了作者只做了部分的实验其余的地方的是通过线性插值计算得来。
4 Experiments
更多的实验细节可以原文的附录中找到这里只介绍一些重要的结果。
4.1 Metrics of Comparison: Faster Convergence, Better Optimum
评价的指标有两个收敛速度和准确率。
做了关于不同学习率的实验学习率初始化后会随着训练的进行进行指数级别的衰减。
Table 2展示了不同的初始学习率下的收敛速率以及收敛后的准确。 Figure 7的左边展示了不同学习率初始值的测试集精度随着迭代次数的变化右边则展示了不同学习率到达某个精度所需要的迭代次数。 从上面的实验结果可以看出来较大的学习率具有较慢的收敛速度但是收敛速度变慢的情况下精确度相对也有所提高。有时候较小的学习率也有可能既不能获得更高的准确度也不能获取更快地收敛。
4.2 Inception
Inception是一个2016年提出的一个训练模型本部分的实验数据集是ImageNet更多该实验的细节可以在原文的附录部分找到。 Figure 8展示了这一部分的实验结果
(a)图展示了不同工作结点个数下各算法的测试准确度与迭代次数的变换关系。(b)图展示了不同工作结点个数下各算法最终收敛的测试精度。©图展示了不同工作结点个数下各算法收敛所需要的迭代次数。(d)图展示了不同工作结点个数下各算法收敛所需要的时间。(e)图展示了不同工作结点个数下各算法每一次迭代的平均时间。
从上面的结果可以看出本文提出的算法收敛的更快准确度更加高。
4.3 Pixel CNN Experiments
Pixel CNN是2016年提出的一个模型数据集是CIFAR-10。
实验结果如Figure 9所示 左图展示的是NLL和训练时间的变化NLL越小效果越好右图则是达到某个NLL值所需要的时间。
值得指出的异步的SGDSGDSGD的效果不如串行的RMSProRMSProRMSPro这也表明过期的梯度对训练结果有着较大的影响。
5 Related Work
这一部分介绍了一些相关工作个人认为其中有两篇很有参考意义后续会做这两篇论文的精读
软同步Staleness-Aware Async-SGD for distributed deep learning在进行异步SGDSGDSGD先进行一部分的本地聚合。
不需要参数服务器进行分布式机器学习Ako: Decentralised deep learning with partial gradient exchange使用轮转的方式来实现参数的聚合。
6 Conclusion and Future Work
随着数据集的以及模型的增大分布式机器学习会变得越来越重要。
本文介绍了同步SGDSGDSGD和异步SGDSGDSGD各自的缺点并且提出了一定程度上解决同步SGDSGDSGD缺点的新方法。
未来可以将能够共享的工作结点先进行本地的聚合再在服务器进行参数聚合。亦或是可以将back-up机制更改为超时机制这也意味着每轮参与参数聚合的结点个数将不再固定。