gpt4 book ai didi

python - 使用 TF Estimator 时 Tensorflow 分布式训练的损失和学习率缩放策略

转载 作者:行者123 更新时间:2023-12-04 13:36:04 26 4
gpt4 key购买 nike

对于那些不想阅读整个故事的人:

TL;博士 : 使用时TF Estimator ,我们是否必须通过增加批量大小的因子来调整学习率(我知道这是正确的方法,我不确定 TF 是否在内部处理这个)?同样,我们是否必须按全局批量大小(batch_size_per_replica * 副本数)来缩放每个示例的损失?

Tensorflow 分布式学习的文档令人困惑。我需要澄清以下几点。

  • 现在了解到,如果将批量大小增加 k 倍。那么你需要增加学习率k (参见 thisthis 论文)。然而,Tensoflow 关于分布式学习的官方页面没有对此做出澄清评论。他们确实提到了 here需要调整学习率。他们自己处理学习率缩放吗?更复杂的是,Keras 和 tf.Estimator 的行为是不同的(见下一点)。关于我在使用 tf.Estimator 时是否应该将 LR 增加 K 倍的任何建议?
  • 人们普遍认为,每个示例的损失应该按 global_batch_size = batch_size_per_replica * number of replicas 缩放。 . Tensorflow 提到了它 here但是当说明如何使用 tf.Estimator 实现这一点时,他们要么忘记了,要么通过 global_batch_size 进行缩放。不需要。见 here , 在代码片段中,loss 定义如下。
  • loss = tf.reduce_sum(loss) * (1. / BATCH_SIZE)

    BATCH_SIZE据我所知,上面是根据副本批量大小定义的。

    更复杂的是,如果您使用 Keras,缩放会自动处理(出于我永远无法理解的原因,最好保持所有内容一致)。

    最佳答案

  • 学习率不会由全局步骤自动缩放。正如您所说,他们甚至建议您可能需要调整学习率,但仅在某些情况下才需要调整,因此这不是默认设置。我建议您手动提高学习率。
  • 如果我们看一个简单的tf.Estimator , tf.estimator.DNNClassifier ( link ),默认 loss_reductionlosses_utils.ReductionV2.SUM_OVER_BATCH_SIZE .如果我们到了那个 Reduction ( found here ),我们看到这是一个如何将单个样本的损失组合在一起的策略。在单台机器上,我们只使用 tf.reduce_mean ,但您不能在分布式设置中使用它(如下一个链接中所述)。 Reduction引导我们到 here ,它向您展示了 1) 如何实现全局步骤的实现,以及 2) 解释了原因。正如他们告诉你应该自己实现它,这意味着它不是由 tf.Estimator 处理的。 .另请注意,您可以在 Reduction 上找到一些解释。页面他们说明了差异之间的差异 KerasEstimator关于这些参数。
  • 关于python - 使用 TF Estimator 时 Tensorflow 分布式训练的损失和学习率缩放策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61994141/

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