赞
踩
其中的并行思想有两部分:
1. 通过model parallel实现多个machine训练单个模型
2.通过复制 1 中训练的单个模型, 异步训练不同的数据集(data parallel)
详解上面两种思想的实现:
1.model parallel:将整个神经网络的的神经元划分到不同的机器上,只有处于机器边际的节点间才通过通信交换数据。
2.data parallel: 复制上图中构建的model,将数据集分成几小块,分别在这些model中训练。这里讲涉及到model parameters的共享问题。这里只记录了Downpour SGD算法。
如上图:model的参数都存放在parameter server,各个model replicas从parameter server对应的shard中获取参数,并将其计算的gradient推送到parameter server对应的shard。
这个,每个model replicas是相互独立的,而parameter server中的每个shard也是相互独立的。
此算法的“随机性”体现在一下几个方面:
1.因为model replicas是相互独立的,某个model replicas获取的参数可能已经过期(在其获取参数的同时,可能另一个model replicas对这些参数进行了更新)。
2.因为parameter server中的每个shards是相互独立的,每个shard更新的次数和顺序都可能不一样。
3.因为获取参数,推送梯度和处理训练数据集是由不同的线程进行执行的,所以存在时间戳。
此并行算法强调的是“异步”,其好处有:
1.避免了由于机器间性能的差异导致所有机器要等待最慢机器的问题。
2.及时某些machine down了,整个训练依然可以进行。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。