论文: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之旅 query
最后,TensorFlow在此步骤中进行的一项重要优化是(发送,接收)对的“规范化”。在图5b中显示的设置中,设备B上的每个recv节点的存在意味着分配和管理单独的缓冲器以存储ν的输出张量,从而可以将其分别馈送到节点α和β。然而,等效且更有效的变换仅在设备B上放置一个recv节点,将从ν输出的所有输出流到该单个节点,然后流到两个从属节点α和β。最后和最后的演变在图5c中给出。
``` 上述文档描述了如果图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
我认为,试图优化网络流量。
在分布式系统中进行通信优化的真实或最佳方式是什么?
我们也希望对此有更多的澄清,如果我获得更多实验调整结果,我们会尝试更新此问题。