TensorFlow的镜像策略、批量大小和反向传播

2024-10-03 02:40:27 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我有8个GPU(Nvidia V100 32GB)

  • 我指定的批大小为32(如何管理?每个gpu将有一批32个样本?是否应指定256作为批大小-32x8-?)
  • 何时以及如何应用反向传播?我读过MirroredStrategy是同步的:这是否意味着在前进步骤之后,所有批次都被分组为一个32x8大小的批次,然后应用反向传播?还是按顺序为每批尺寸为32的产品使用一次后支撑

我真的很想确定我提交给服务器的是什么样的实验,因为每项培训工作都非常耗时,并且根据可用GPU的数量更改批大小(和备份)会影响结果的正确性

谢谢你提供的任何帮助


Tags: 服务器apigpu顺序产品尺寸tensorflow步骤
1条回答
网友
1楼 · 发布于 2024-10-03 02:40:27

使用MirroredStrategy时,批大小是指全局批大小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的过程中减少(通常是平均值)。优化器然后使用这些降低的梯度执行参数更新,从而保持设备同步

相关问题 更多 >