分散 - 收集数据流管道的横向扩展性能是有限的,我不确定是否这样

我使用Tensorflow来构建“令人尴尬的并行”问题的自定义管道(即我编写自己的OpKernel)(不需要“本地”管道之间的协调) . 通常,这些涉及本地管道在我的集群中的所有机器上复制,并且具有源和宿队列以分别馈送输入和接收输出 .

除了之外,各个机器上的管道之间没有协调

  • 从"source"队列中出列输入

  • 将输出排队到"sink"队列

由于我使用的确切代码库仍然是闭源,我创建了一个similar example in vanilla Tensorflow . 我是通过pip安装的(v0.12.1) .

此脚本通过while循环复制我的"local"管道,导致一定的延迟 . 这个while循环的效率除了这一点 . 关键是当我在机器上扩展时,我看到的加速并不是很好 . Here is the data I collected on a cluster of 10 machines(最多只能达到9,因为托管源/接收队列的机器是"unloaded") .

scale-out performance of nodes

理想的时间是平坦的,因为工作负载随着节点的数量线性增加(因此无论节点的数量如何,都应该采用恒定的时间) .

我的问题是

  • 这是Tensorflow的已知限制吗?我目前通过使用ZeroMQ在本地节点之间进行协调来避开这种情况(即我不使用分布式会话),而且我知道其他使用MPI或其他非TF系统的人 .

  • 有没有办法通过我目前没有使用的Tensorflow中的某些原语使得这种分散 - 聚集模式更快,或者可能通过构造图形来执行时需要较少协调的方法?