论文:TensorFlow:大规模机器学习系统,3.3美元说:

We optimized TensorFlow for executing large sub- graphs repeatedly with low latency. Once the graph for a step has been pruned, placed, and partitioned, its sub- graphs are cached in their respective devices. A client session maintains the mapping from step definitions to cached subgraphs, so that a distributed step on a large graph can be initiated with one small message to each participating task. This model favours static, reusable graphs, but it can support dynamic computations using dynamic control flow, as the next subsection describes.

  • 如何理解'缓存在各自的设备中'?许多API拥有'caching_device'参数,但默认值为False,如何理解CACHE功能?

  • 通常,缓存机制将始终遵循“INVALID缓存”策略,那么缓存策略如何?

  • 如果我们在多个GPU之间使用更多克隆模型图与图之间的平行,也就是说,更多的模型克隆会在ps上引用共享变量,每个克隆如何读取远程变量?默认情况下,它是否在某些本地设备上缓存变量以减少网络通信?

更多细节:

``TensorFlow之旅https://arxiv.org/pdf/1610.01178.pdf

最后,TensorFlow在此步骤中进行的一项重要优化是(发送,接收)对的“规范化” . 在图5b中显示的设置中,设备B上的每个recv节点的存在意味着分配和管理单独的缓冲器以存储ν的输出张量,从而可以将其分别馈送到节点α和β . 然而,等效且更有效的变换仅在设备B上放置一个recv节点,将从ν输出的所有输出流到该单个节点,然后流到两个从属节点α和β . 最后和最后的演变在图5c中给出 .


换句话说,/ model /slim / deploy / model_deploy.py尝试创建缓存可变,如下所示:

我认为 `562 def caching_device(self): 563 """Returns the device to use for caching variables. 564 565 Variables are cached on the worker CPU when using replicas. 566 567 Returns: 568 A device string or None if the variables do not need to be cached. 569 """ 570 if self._num_ps_tasks > 0: 571 return lambda op: op.device 572 else: 573 return None` 试图优化网络流量 . 

在分布式系统中进行通信优化的真实或最佳方式是什么?

我们还希望对其进行更多的澄清,如果我获得更多的实验调整结果,我们将尝试更新此问题 .