TensorFlow 的 Mirrored 策略、batch size 和 Back Propagation

TensorFlow's Mirrored strategy, batch size and Back Propagation

我正在处理在多 GPU 服务器上训练神经网络。我正在使用 TensorFlow 2.1 中的 MirroredStrategy API,我有点困惑。

我有 8 个 GPU (Nvidia V100 32GB)

我真的很想确定我向服务器提交了什么样的实验,因为每个训练作业都非常耗时,并且根据可用 GPU 的数量影响批量大小来改变(和反向传播)结果正确性。

感谢您提供的任何帮助。

使用MirroredStrategy时,batch size指的是全局batch size。 You can see in the docs here

For instance, if using MirroredStrategy with 2 GPUs, each batch of size 10 will get divided among the 2 GPUs, with each receiving 5 input examples in each step.

因此在您的情况下,如果您希望每个 GPU 每步处理 32 个样本,您可以将批量大小设置为 32 * strategy.num_replicas_in_sync

每个 GPU 将在输入数据的不同切片上计算通过模型的正向和反向传递。然后,从这些切片中的每一个计算出的梯度在所有设备上聚合,并在称为 AllReduce 的过程中减少(通常是平均值)。然后,优化器使用这些减小的梯度执行参数更新,从而使设备保持同步。