【问题标题】:Implications of using MPI with TensorFlow将 MPI 与 TensorFlow 结合使用的意义
【发布时间】:2018-02-27 04:33:50
【问题描述】:

我来自某种 HPC 背景,我刚刚开始学习一般的机器学习,特别是 TensorFlow。我最初惊讶地发现,分布式 TensorFlow 默认设计为与 TCP/IP 通信,尽管事后看来,考虑到 Google 是什么以及它最常使用的硬件类型,它是有道理的。

我有兴趣在集群上以并行方式与 MPI 一起试验 TensorFlow。从我的角度来看,这应该是有利的,因为由于 MPI 在没有共享内存的机器上使用远程直接内存访问 (RDMA),延迟应该会低得多。

所以我的问题是,鉴于 TensorFlow 和机器学习的日益普及,为什么这种方法似乎没有更普遍?延迟不是瓶颈吗?是否有一些典型的问题得到解决,使这种解决方案不切实际?以并行方式调用 TensorFlow 函数与在 TensorFlow 库中实现 MPI 调用之间是否可能存在任何有意义的差异?

谢谢

【问题讨论】:

  • CNTK 基于 MPI,可能值得研究。
  • Uber 的 Horovod 也使用 MPI。

标签: python tensorflow mpi mpi4py


【解决方案1】:

似乎 tensorflow 已经支持 MPI,如 https://github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/mpi 所述 在https://arxiv.org/abs/1603.02339

上也讨论了 MPI 对 tensorflow 的支持

一般来说,请记住,MPI 最擅长发送/接收消息,但在发送通知和对事件采取行动方面并不那么出色。 最后但并非最不重要的一点是,MPI 对多线程应用程序的支持(例如MPI_THREAD_MULTIPLE)在 MPI 实现中并不总是可用于生产。 这是两个一般性陈述,老实说,我不知道它们是否与 tensorflow 有关。

【讨论】:

    【解决方案2】:

    根据Tensorflow git repo中的文档,实际上tf使用了detault的gRPC库,它基于HTTP2协议,而不是TCP/IP协议,this paper应该能给你一些见解,希望这个信息是有用。

    【讨论】:

      猜你喜欢
      • 2021-03-01
      • 2020-08-29
      • 2013-11-26
      • 2017-06-25
      • 2017-01-27
      • 2016-10-19
      • 2019-10-28
      • 2019-03-02
      • 2019-11-06
      相关资源
      最近更新 更多