使用tf.distribute.MirroredStrategy(单主机多GPU)的有效学习率疑问
使用tf.distribute.MirroredStrategy时的学习率缩放问题
核心结论:通常需要按GPU数量缩放学习率,逻辑和批量大小的缩放保持一致,具体说明如下:
- 当你把全局批量大小调整为单GPU训练时的N倍(N是GPU数量)——比如单GPU用64样本批量,8GPU时全局批量设为512(每个GPU处理64样本),此时学习率应该乘以N。对应你的例子:单GPU目标学习率1E-3,8GPU时就设置为8E-3。
- 背后的原因是:MirroredStrategy会在每个GPU上独立计算子批次的梯度,然后对所有GPU的梯度做平均聚合。当全局批量放大N倍后,平均后的梯度幅度和单GPU用N倍批量时的梯度幅度一致,同步放大学习率才能让模型参数的更新幅度和单GPU训练时保持近似一致,维持训练效果。
- 如果你没有放大全局批量(即每个GPU处理的样本数是单GPU的1/N),学习率可以保持原有的1E-3,但这种设置会浪费多GPU的算力优势,一般不推荐。
内容的提问来源于stack exchange,提问作者Marco
相关产品推荐
相关产品推荐

