【问题标题】:tensorflow: difference between multi GPUs and distributed tensorflowtensorflow:多 GPU 和分布式 tensorflow 的区别
【发布时间】:2016-06-09 17:05:37
【问题描述】:

我对这两个概念有点困惑。

我在代码中看到了一些关于不使用集群和服务器的多 GPU 示例。

这两个有区别吗?有什么不同?

非常感谢!

【问题讨论】:

    标签: tensorflow deep-learning


    【解决方案1】:

    这在一定程度上取决于您看待它的角度。在任何多*设置中,无论是多 GPU 还是多机器,您都需要决定如何在并行资源之间拆分计算。在单节点、多 GPU 设置中,有两个非常合理的选择:

    (1) 模型内并行性。如果一个模型具有较长且独立的计算路径,那么您可以将模型拆分到多个 GPU 上,并让每个 GPU 计算其中的一部分。这需要仔细了解模型和计算依赖关系。

    (2) 重复训练。启动模型的多个副本,训练它们,然后同步它们的学习(梯度应用于它们的权重和偏差)。

    我们的released Inception model 在自述文件中有一些很好的图表,展示了多 GPU 和分布式训练的工作原理。

    但是对于 tl;dr 该消息来源:在多 GPU 设置中,通常最好通过将权重存储在 CPU 上(嗯,在其连接的 DRAM 中)来同步更新模型。但是在多机设置中,我们经常使用单独的“参数服务器”来存储和传播权重更新。要将其扩展到大量副本,您可以跨多个参数服务器分片参数。

    使用多个 GPU 和参数服务器时,您会发现自己使用 with tf.device('/gpu:1') 等结构来放置设备时更加小心,或者使用 tf.train.replica_device_setter 在参数服务器上放置权重以将其分配给 /job:ps 或 @987654327 @。

    一般来说,在单台机器上使用一堆 GPU 进行训练的效率要高得多——它需要超过 16 个分布式 GPU 才能达到单台机器上 8 个 GPU 的性能——但分布式训练可以让您扩展到甚至更大的数字,并利用更多的 CPU。

    【讨论】:

    • 非常感谢您的解释!
    • 初始链接已损坏。 Here 是另一个例子。
    【解决方案2】:

    直到最近,还没有开源集群版本的张量流——只有具有零个或多个 GPU 的单台机器。 新版本 v0.9 可能改变了也可能没有改变。 原始版本文档(2015 年 10 月)中的文章表明,Google 拥有基于集群的解决方案 - 但他们尚未将其开源。

    whitepaper 是这样说的:

    3.2 多设备执行 一旦一个系统有多个设备,有两个主要的复杂性:决定哪个设备在图中为每个节点放置计算,然后管理所需的 这些暗示的跨设备边界的数据通信 安置决定。本小节讨论这两个问题

    【讨论】:

    • 感谢您的回答!然而,他们宣布他们在 v0.8 中发布了分布式 tensorflow,并且他们有一个教程页面:tensorflow.org/versions/r0.8/how_tos/distributed/index.html。那不是真正的分布式张量流吗?
    • 这是个好消息! - 让我们希望有人在这方面“全力以赴”。
    猜你喜欢
    • 1970-01-01
    • 2020-01-14
    • 2017-10-22
    • 2017-01-28
    • 2019-03-08
    • 2019-07-11
    • 2018-01-20
    • 2020-07-13
    • 1970-01-01
    相关资源
    最近更新 更多