6

我试图了解 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相比如何?

4

2 回答 2

0

Mirror Strategy 有自己的 all_reduce 算法,它在后台使用远程过程调用 (gRPC)。

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

于 2020-10-06T00:06:49.060 回答
0

关于性能,我的一位同事在使用 4 个 Tesla V100 GPU 之前使用此处的代码进行了实验。结果表明 3 种设置效果最好:replicated使用all_reduce_spec=ncclcollective_all_reduce适当调整allreduce_merge_scope(例如 32)和horovod。我没有看到这3个之间有显着差异。

于 2020-10-06T04:15:25.560 回答