结果显示:
分布式深度学习、GPU、周期共享、志愿型计算、加权平均、粒度控制
论文的创新点在于:同步时,不等所有节点都计算完再同步,而是那些没计算完的节点,只把已经完成的部分拿去同步,剩下没做完的就直接“放弃”这一次了。这样可以避免整个系统被最慢节点拖住,提高整体效率。
没有计算完的部分,在本轮同步时就不参与同步,这部分数据“被跳过”,并且论文中的实现是这些数据暂时就不再计算,也不会马上补上(当然,未来改进方向是考虑再学习这些被丢弃的数据)。
在分布式深度学习中,通常会有很多个节点(机器),每个节点都用自己的数据在本地训练神经网络。这些节点如果各自训练自己的模型,最后得到的模型参数会不一样,也就无法得到全局最优的模型。
同步的目的是:让所有节点周期性地交换和整合彼此训练得到的模型参数,这样所有节点可以保持模型的一致性,并一起向着更好的方向优化。
每个机器都拥有一份完整的模型参数(比如完整的神经网络结构和所有的权重),这样大家才能分别处理自己的那部分数据,独立做前向、反向传播和参数更新。
但每台机器本地只处理全部数据集的一部分(比如4台机器,每台只负责1/4的数据)。这样做的好处是把整个数据集的训练压力分摊到所有机器上,整体训练更快。
同步的作用就是让所有机器用各自的“部分数据”训练之后,把成果合起来,确保最终大家手里的模型参数保持一致,不会各自跑偏。