【问题标题】:Tensorflow Mirror Strategy and Horovod Distribution StrategyTensorflow镜像策略和Horovod分布策略
【发布时间】:2019-07-27 05:44:54
【问题描述】:

我正在尝试了解 Tensorflow 镜像策略和 Horovod 分布策略之间的基本区别。

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

根据我的观察(我可能错了)Mirror Strategy 也在使用 all_reduce 算法(https://github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/distribute)。

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

镜像策略和horovod相比表现如何?

【问题讨论】:

标签: tensorflow deep-learning mpi distributed-tensorflow horovod


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-02
      • 1970-01-01
      • 1970-01-01
      • 2020-04-15
      • 2020-05-24
      • 1970-01-01
      • 2014-11-01
      相关资源
      最近更新 更多