Tensorflow镜像策略和Horovod分布策略

Md *_*ker 5 mpi deep-learning tensorflow horovod distributed-tensorflow

我试图了解 Tensorflow 镜像策略和 Horovod 分布策略之间的基本区别是什么。

从文档和源代码调查中,我发现 Horovod ( https://github.com/horovod/horovod ) 正在使用消息传递协议 (MPI) 在多个节点之间进行通信。具体来说它使用了MPI的all_reduce、all_gather。

根据我的观察(我可能是错的)镜像策略也使用 all_reduce 算法(https://github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/distribute)。

他们都使用数据并行、同步训练方法。所以我有点困惑他们有什么不同?差异仅在实现上还是存在其他(理论上)差异?

镜像策略与horovod相比性能如何?

Ash*_*ran 0

镜像策略有自己的 all_reduce 算法,该算法在底层使用远程过程调用 (gRPC)。

就像您提到的,Horovod 使用 MPI/GLOO 在多个进程之间进行通信。