我来自某种HPC背景,我刚开始学习机器学习,尤其是TensorFlow。我最初惊讶地发现,分布式TensorFlow默认设计用于与TCP / IP进行通信,但考虑到谷歌是什么以及最常用的硬件类型,事后才有意义。
我有兴趣在集群上以MPI并行方式试验TensorFlow。从我的角度来看,这应该是有利的,因为MPI在没有共享内存的机器上使用远程直接内存访问(RDMA),因此延迟应该低得多。
所以我的问题是,鉴于TensorFlow和机器学习越来越受欢迎,为什么这种方法似乎不常见?延迟不是瓶颈吗?是否有一些典型问题得到解决,这使得这种解决方案不切实际?以并行方式调用TensorFlow函数与在TensorFlow库中实现MPI调用之间是否存在任何有意义的差异?
由于
答案 0 :(得分:3)
似乎tensorflow已经支持MPI,如https://github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/mpi所述 MPI对张量流的支持也在https://arxiv.org/abs/1603.02339
进行了讨论一般来说,请记住,MPI最擅长发送/接收消息,但在发送通知和处理事件时效果不是很好。
最后但同样重要的是,MPI对多线程应用程序的支持(例如MPI_THREAD_MULTIPLE
)并不总是在MPI实现中生产就绪。
这是两个一般性陈述,老实说,我不知道它们是否与张量流有关。
答案 1 :(得分:2)
根据Tensorflow git repo中的文档,实际上tf通过detault使用gRPC库,它基于HTTP2协议,而不是TCP / IP协议,this paper应该给你一些洞察力,希望这些信息有用。