在this TensorFlow tutorial中,您可以使用N个GPU将N个小批量(每个包含M个训练样本)分配给每个GPU并同时计算梯度。在TensorFlow中进行多GPU训练的优势是什么?
然后,您对从N个GPU中收集的渐变进行平均并更新模型参数。
但这与使用单GPU来计算N * M个训练样本的梯度,然后更新参数的效果相同。
因此,我认为唯一的优点是可以在相同的时间内使用更大尺寸的微型批次。
但是大型小批量一定更好吗?
我以为你不应该使用一个大型的小批量,为了使优化更强大的鞍点。
如果大尺寸微型批次确实不是更好,为什么你会关心多GPU学习,甚至是多服务器学习?
(上面的教程是一个同步的训练。如果是异步的训练,然后我可以看到的优点,因为参数将在不平均由每个GPU计算出的梯度来更新)
较大的小批量不是更好,但也不是较小的小批量。批量大小的最佳选择严重依赖于各种因素。 – Aenimated1
假设由于VRAM尺寸的原因,每GPU有1000个采样。假设最佳的最小批量为2000。然后在这个同步多GPU设置中,使用两个以上的GPU应该没有任何优势。对? – mp2893
我认为,相反,理论上(但不是实际上),您可以从2000个GPU中受益,每个GPU都可以计算单个示例的渐变。实际上,GPU开始使用相当多的并行性,但是我希望通过在(例如)4个GPU(每个负责计算每批500个样本的梯度)之间分配计算来看到性能的提高。 – Aenimated1