咋看uber开源的基于mpi的分布式tensorflow训练框架horovod?

我认为horovod主要解决的问题在于:在处理的数据较多时,分布式的tensorflow虽然是scalable,但当GPU超过50个时,硬件的利用率明显下降,计算活处理能力与硬件规模不再呈线性关系。
咋看uber开源的基于mpi的分布式tensorflow训练框架horovod?

而此前Facebook有一篇名为《Accurate, Large Minibatch SGD: Training ImageNet in 1 Hour 》的paper提出了一种在不同节点间进行梯度平均的数据并行训练方式,充分发挥了硬件的计算能力。
咋看uber开源的基于mpi的分布式tensorflow训练框架horovod?

标准的分布式tensorflow即可实现文中的思想,然而使用worker计算梯度,用ps平均梯度与更新参数。这样很容易产生因ps与worker分配不合理所导致的计算或通信瓶颈。后来百度发表了《Bringing HPC Techniques to Deep Learning》,提出了ring-allreduce方法,对计算网络做了优化,数据的分布式处理获得了很好的scaling。
咋看uber开源的基于mpi的分布式tensorflow训练框架horovod?

而Horovod正式基于MPI实现了ring-allreduce,并且相对于标准分布式tensorflow在模型的代码实现上也提升了用户体验。在GPU较多时,算力的发挥提升了近一倍。
咋看uber开源的基于mpi的分布式tensorflow训练框架horovod?



■网友
Deep Learning training说白了是浮点数运算,非常适合以MPI为核心的并行计算。
之前Google,百度,以及Facebook那篇ImageNet in one hour也用的是MPI。
【咋看uber开源的基于mpi的分布式tensorflow训练框架horovod?】 以Spark为核心的编程模型比较适合于数据中心处理streaming之类的操作,一般在计算类应用中要比MPI慢的多。

■网友
不就是千千万万TensorFlow衍生物中的一个...


    推荐阅读