文章、图片来源于微信公众号“机器之心” :
原文标题: 深度 | 分布式深度学习:神经网络的分布式训练
说一说自己的感受:
术语:每一个机器 = 每一个worker
神经网络训练并行模式分为模型并行和数据并行,说说数据并行的几种情况:
1、基于参数平均化:
架构如下图:
假设有一个含有n个 worker 的集群,其中每个 worker 有m个样本,总的在平均化中就有nm个样本。如果我们将所有nm个样本在同一机器上以学习率α进行处理,那么我们的权重更新规律满足如下:
不进行分布式,只在一台机器上运行,是下面这样的公式:
如果分散在每个机器上,是下面这样的:
可以看出两种方式殊途同归,是一致的。
缺点: 1、成本高:网络通信和同步成本会超过我们从额外的机器中所获得的好处,原因:因为不同的机器执行一个周期的时间 不一样,所以大家上传参数的时间不一致,就需要等待,这样会浪费时间,万一某个机器死掉了,训练就进行不下 去了。可以设置等待时间,超过多少就不等他,对已经到达的进行平均,这样每个机器的本地参数可能就会不一样,当再次到达参数服务器之后,平均化后的效果可能就不好了。
2、N个不同的局部极小值的均值不能保证是一个局部极小值,如下图所示,中间值对应的Loss是红色圈圈标识的值,并 不是局部极小值:
3、与最优化相关的附加难题:例如adagrad、动量和RMSProp这些更新器(updater),如果对这些也算均值,网络传 输将比原来总量多2倍或更多。也有相应的研究工作也在试图在参数服务器层面上应用相似的(更新器)机制,而不 是只在每一个worker上应用。
2、基于梯度更新: