【问题标题】:tf.data, tf.distribute without GPUtf.data, tf.distribute 没有 GPU
【发布时间】:2020-12-28 17:38:56
【问题描述】:

我的机器上没有 GPU,因为 tensorflow 上的大多数性能建议都只提到 GPU,有人可以确认一下,例如

tf.data.prefetch
tf.distribute.mirroredstrategy
tf.distribute.multiworkerstrategy

仅适用于多 GPU 吗? 我在我的电脑上尝试过,大多数功能确实减慢了进程而不是增加了进程。所以多CPU在这里没有好处吗?

【问题讨论】:

    标签: python tensorflow tensorflow2.0 tf.data.dataset


    【解决方案1】:

    如果您的问题还没有解决,您可以使用 Google Colab (https://colab.research.google.com) 获取 GPU - 您可以将运行时更改为 GPU 或 TPU。

    【讨论】:

      【解决方案2】:

      我不完全明白你在问什么,但让我给你一个 10,000 英尺的解释。它可能会帮助您了解应该使用什么/何时使用它。

      1. tf.data.prefetch :假设您在训练模型时有 2 个步骤。 a) 读取数据,b) 处理数据。在处理数据时,您可能会读取更多数据以确保在当前批次数据完成“训练”后这些数据可用。想想生产者/消费者模型。当您产生更多数据时,您不希望您的消费者闲置。

      2. tf.distribute.mirroredstrategy :如果您有一台带有多个 GPU 的机器,这个会有所帮助。它允许在同一台机器上“并行”训练模型。

      3. tf.distribute.multiworkerstrategy:现在假设您有一个包含 5 台机器的集群。您可以使用所有这些以分布式方式训练您的模型。

      这只是对你在这里提到的那 3 个项目的简单解释。

      【讨论】:

      • 我很惊讶,因为我没有 GPU,我想例如.prefetch 会带来任何好处。但实际上它减慢了这个过程(在我的例子中大约 10%)。因此,我的问题是,如果我根本没有 GPU,预取似乎不会转发任务以释放任何其他 CPU 的容量。我猜其他任务也差不多,他们只处理 GPU 而不是释放 CPU
      • 这不是一成不变的规则。这取决于每种情况。假设您正在从远程位置获取批量数据并将其推送到您的模型中进行训练。第一批完成后,下一批可能需要一些时间才能可用。再次将其视为生产者/消费者模型。
      猜你喜欢
      • 1970-01-01
      • 2020-12-04
      • 2020-03-31
      • 2020-11-16
      • 2017-12-13
      • 2020-12-21
      • 2020-04-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多