【问题标题】:Understanding the conceptual basics of Distributed TensorFlow了解分布式 TensorFlow 的概念基础
【发布时间】:2016-11-30 03:02:34
【问题描述】:

让我先描述一下集群设置:

  • 我有两个节点(每个节点有 2 个 GPU)。我将它们称为节点 A 和节点 B
  • 每个节点都有自己的 SSD 存储。
  • OAR 是使用的集群管理器。

我已经阅读了分布式 TensorFlow 文档,但有一些我无法正确理解的功能基础知识,因此提出了这个问题。

考虑以下情况:

  • 我在节点 A 上复制了大约 600 GB 的数据。
  • 我可以使用 OAR 专门要求在两个节点之间分配 4 个 GPU。

如果我想使用分布式 TensorFlow 来训练模型:

  1. 如何为 tf.train.ClusterSpec 指定网络地址?那些网络地址是什么?在文档中,诸如 localhost:2222 之类的名称与为具有集群管理器的特定节点保留的名称相同?
  2. 我的数据被复制到节点 A。在训练期间,TensorFlow 本身会负责将此数据作为输入发送到节点 B 上的 GPU 吗?
  3. 是否需要使用 tf.device() 为每个节点上的每个 GPU 手动创建 TensorFlow Graph?
  4. 如果我还想使用一些额外的 CPU 节点,我是否必须事先拥有它们的名称并将它们放入代码中?

【问题讨论】:

    标签: python tensorflow


    【解决方案1】:
    1. 是的
    2. 您的客户端创建图表并在工作人员上执行此图表。如果您在howto 中使用带参数服务器的图间复制,则您的客户端和工作人员是相同的进程。这个过程只需要使用with tf.device为当前节点创建部分图。如果您对单个客户端使用图内复制,则您的客户端需要使用多个 with tf.graph 部分为所有节点创建图。

    使用单独的客户端/工作进程进行图内复制的最简单示例是here

    1. 您通常需要通过集群规范提前配置所有节点,并将它们的名称依次分配为/job:worker/task:0/job:worker/task:1

    【讨论】:

      猜你喜欢
      • 2013-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-02
      相关资源
      最近更新 更多