gpt4 book ai didi

graph - 分布式 tensorflow : the difference between In-graph replication and Between-graph replication

转载 作者:行者123 更新时间:2023-12-03 11:37:14 25 4
gpt4 key购买 nike

我对这两个概念感到困惑:In-graph replicationBetween-graph replication阅读 Replicated training 时在 tensorflow 的官方 How-to 中。

  • 在上面的链接中说

    In-graph replication. In this approach, the client builds a single tf.Graph that contains one set of parameters (in tf.Variable nodes pinned to /job:ps); ...



    这是否意味着有 多个 tf.Graph s 在 Between-graph
    replication
    方法?如果是,对应的代码在哪
    提供的例子?
  • 虽然已经有 Between-graph replication上面链接中的例子,谁能提供一个 In-graph replication实现(伪代码很好)并突出其主要
    Between-graph replication 的区别?

    提前致谢!


  • Edit_1:更多问题

    非常感谢您的详细解释和要点代码 @mrry @YaroslavBulatov !看了之后
    你的回答,我有以下两个问题:
  • Replicated training中有如下说法:

    Between-graph replication. In this approach, there is a separate client for each /job:worker task, typically in the same process as the worker task. Each client builds a similar graph containing the parameters (pinned to /job:ps as before using tf.train.replica_device_setter() to map them deterministically to the same tasks); and a single copy of the compute-intensive part of the model, pinned to the local task in /job:worker.



    我有两个与上述粗体字相关的子问题。

    (A) 为什么说每个客户端都构建相似图 ,但不是 同图 ?
    我想知道Replicated training的例子中每个客户端内置的图
    应该是相同的,因为下面的图形构建代码在所有 worker 中共享s:
    # Build model...loss = ...global_step = tf.Variable(0)
    (B) 不应该是多份计算密集的部分
    模型,因为我们有多个 workers ?
  • Replicated training中的例子吗?支持在多台机器上训练,每台机器都有多个 GPU?如果没有,我们可以
    同时使用 In-graph replication支持多方面的培训
    每台机器上的 GPU 和 Between-graph replication为了
    跨机训练?我问这个问题是因为
    @mrry 表示 In-graph replication与方式基本相同
    用于 CIFAR-10 example model for multiple GPUs .
  • 最佳答案

    首先,对于一些历史背景,“图内复制”是我们在 TensorFlow 中尝试的第一种方法,并没有达到许多用户要求的性能,因此更复杂的“图间”方法是当前执行分布式训练的推荐方法。更高级别的库,例如 tf.learn使用“图之间”方法进行分布式训练。

    要回答您的具体问题:

  • Does this mean there are multiple tf.Graphs in the between-graph replication approach? If yes, where are the corresponding codes in the provided examples?



    是的。典型的图间复制设置将为每个工作副本使用单独的 TensorFlow 进程,并且每个副本都将构建一个单独的 tf.Graph对于模型。通常每个进程都使用全局默认图(可通过 tf.get_default_graph() 访问)并且没有显式创建。

    (原则上,您可以使用具有相同 tf.Graph 和多个共享相同底层图的 tf.Session 对象的单个 TensorFlow 进程,只要您为每个 session 配置了不同的 tf.ConfigProto.device_filters 选项,但这是不常见的设置。)
  • While there is already a between-graph replication example in above link, could anyone provide an in-graph replication implementation (pseudocode is fine) and highlight its main differences from between-graph replication?



    由于历史原因,图内复制的例子并不多(Yaroslav's gist 是一个异常(exception))。使用图内复制的程序通常会包含一个循环,该循环为每个工作人员创建相同的图结构(例如 line 74 of the gist 上的循环),并在工作人员之间使用变量共享。

    图内复制持续存在的一个地方是在单个进程中使用多个设备(例如多个 GPU)。 CIFAR-10 example model for multiple GPUs是这种模式的一个例子(参见 GPU 设备上的循环 here)。

  • (在我看来,处理多个 worker 和单个 worker 中的多个设备之间的不一致是不幸的。图内复制比图间复制更容易理解,因为它不依赖于副本之间的隐式共享。更高级别的库,例如 tf.learn 和 TF-Slim,隐藏了其中的一些问题,并希望我们将来可以提供更好的复制方案。)
  • Why do we say each client builds a similar graph, but not the same graph?



    因为它们不需要相同(并且没有强制执行此操作的完整性检查)。特别是,每个工作人员可能会创建一个具有不同显式设备分配( "/job:worker/task:0""/job:worker/task:1" 等)的图。首席 worker 可能会创建不是在非首席 worker 上创建(或由其使用)的其他操作。然而,在大多数情况下,这些图在逻辑上(即模设备分配)是相同的。

    Shouldn't it be multiple copies of the compute-intensive part of the model, since we have multiple workers?



    通常,每个工作人员都有一个单独的图,其中包含模型的计算密集部分的单个副本。 worker i 的图不包含 worker j 的节点(假设 i ≠ j)。 (异常(exception)情况是,您使用图间复制进行分布式训练,使用图内复制在每个工作器中使用多个 GPU。在这种情况下,工作器的图通常包含 N 个计算副本-图中的密集部分,其中 N 是该工作程序中的 GPU 数量。)
  • Does the example in Replicated training support training on multiple machines, each of which has multiple GPUs?



    示例代码只涉及在多台机器上的训练,并没有说明如何在每台机器上的多个 GPU 上进行训练。但是,这些技术很容易组成。在示例的这一部分中:
    # Build model...
    loss = ...

    ...您可以在本地机器的 GPU 上添加一个循环,以实现分布式训练多个 worker ,每个 worker 都有多个 GPU。
  • 关于graph - 分布式 tensorflow : the difference between In-graph replication and Between-graph replication,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41600321/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com