机器学习之分布式深度学习

因为经常会搞混一些基本的并行概念,所以特此记录一下。

之所以要上分布式并行,是因为单机的计算力/资源不够。如果单机计算力已经足够强,那完全没有必要上分布式,毕竟还有通信开销。

对于深度学习来说,由于计算量太大,所以有时GPU单卡太慢,那就有必要上多卡。如果多卡不是共享内存,那就相当于分布式了。下面讲的两种模型并行方法则都是分布式并行,一定要与共享内存的区分开来。

注意分布式并行有足够强的数学理论基础(凸优化理论),保证了其正确性。

数据并行

May 11, 2019 - 分布式深度学习

每个处理器/节点上存储一份模型,这里所有的模型都是同一个,属于重复存储。然后不同的节点取不同的数据,各自完成前向和后向的梯度计算,这是worker干的事情。然后每一个worker将各自算得的梯度送到参数服务器(parameter server)上,由参数服务器进行更新操作,再将更新后的模型传回各个节点。

模型并行

May 11, 2019 - 分布式深度学习

如果神经网络非常大的话,就需要将其划分成多份,存储在不同的GPU上,实际上也相当于将矩阵进行分块。

而通过流水线的方法可以实现模型并行,即每一个GPU上放一层(或某几层),然后依次传播。第一个数据读入(t1),由第一个GPU算第一层;第二个数据读入(t2),第一个GPU算第二个数据的第一层,第二个GPU算第一个数据的第二层,以此类推。

May 11, 2019 - 分布式深度学习

参考资料

以上是 机器学习之分布式深度学习 的全部内容, 来源链接: utcz.com/a/127974.html

回到顶部