【问题标题】:batch size on multiple GPUs tensorflow多个 GPU 上的批量大小
【发布时间】:2020-08-23 07:04:57
【问题描述】:

对于 tensorflow keras,如果我使用 batch_size=8,并且有 4 个 GPU 的 tf.distribute.MirroredStrategy(),那么对于训练中的每一步,它是否有 (1) 8个batch,其中每个GPU有2个batch 或 (2) 4x8 batch,其中每个 GPU 有 8 个 batch

我以为是第二种情况。如果我错了,请纠正我。如果是第二种情况,那么如何跨 GPU 计算梯度?通过简单的平均?这是否意味着4个batch_size = 8的GPU的算法和准确性等于一个batch_size = 32的GPU?当然,训练时间会有所不同。

感谢您的帮助。

【问题讨论】:

    标签: tensorflow tensorflow2.0


    【解决方案1】:

    第一个解释是正确的。所以如果你设置batch_size=8。每个 GPU 的批量大小为 2,并根据批量大小 2 执行前向和反向传递。最后,通过平均来合并来自 4 个 GPU 的梯度,这相当于在单个 GPU 上处理 batch_size=8。

    在这里可以找到很好的解释。 https://keras.io/guides/distributed_training/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-13
      • 2021-04-11
      • 2017-07-02
      • 2020-03-17
      • 2017-12-21
      • 2014-04-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多