个人理解
通过执行引擎来达到计算和收发的并行,例如后向时算完某一个参数的梯度后,执行引擎会立刻提交到发送队列中开始发送,这时候其他的后向计算还在进行中。
此外发送与接收的队列有优先级,时刻保证最高优先级参数的接收与发送
上述机制保证了对于较深的网络能够达到了很好的线性加速比,不过对于浅层网络,比如只有两层lstm的 encoder decoder这种方法的并行效果欠佳。
总的来说还是灰常牛逼滴!
简单来说是当计算开销大于通讯开销时,通过并行两者可以达到将近线性的加速。
具体可参见 Sec 4.4 和 4.5
http://www. cs.cmu.edu/~muli/mu-the sis.pdfps: 这里有新的在256块GPU上的加速,和10台机器vs单机的收敛:
详细见:
dmlc/mxnet