2024-10-03 02:40:27 发布
网友
我正在处理在多gpu服务器上训练神经网络的问题。我使用的是TensorFlow 2.1中的MirroredStrategy API,我有点困惑
我有8个GPU(Nvidia V100 32GB)
我真的很想确定我提交给服务器的是什么样的实验,因为每项培训工作都非常耗时,并且根据可用GPU的数量更改批大小(和备份)会影响结果的正确性
谢谢你提供的任何帮助
使用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
32 * strategy.num_replicas_in_sync
每个GPU将在输入数据的不同切片上计算通过模型的向前和向后传递。然后,从这些切片中计算出的梯度在所有设备中聚合,并在称为AllReduce的过程中减少(通常是平均值)。优化器然后使用这些降低的梯度执行参数更新,从而保持设备同步
使用MirroredStrategy时,批大小是指全局批大小You can see in the docs here
因此,在您的情况下,如果您希望每个GPU每一步处理32个样本,可以将批处理大小设置为
32 * strategy.num_replicas_in_sync
每个GPU将在输入数据的不同切片上计算通过模型的向前和向后传递。然后,从这些切片中计算出的梯度在所有设备中聚合,并在称为AllReduce的过程中减少(通常是平均值)。优化器然后使用这些降低的梯度执行参数更新,从而保持设备同步
相关问题 更多 >
编程相关推荐