首页 文章

在TensorFlow中进行多GPU培训的优势是什么?

提问于
浏览
3

this TensorFlow tutorial中,您可以使用N个GPU将N个小批量(每个包含M个训练样本)分配到每个GPU并同时计算梯度 .

然后平均从N GPU收集的梯度并更新模型参数 .

但这与使用单个GPU计算N * M训练样本的梯度,然后更新参数具有相同的效果 .

因此,在我看来,唯一的优势是您可以在相同的时间内使用更大尺寸的迷你批次 .

但更大尺寸的迷你批次必然更好吗?

我认为你不应该使用大尺寸的小批量,以使优化对马鞍点更加稳健 .

如果大尺寸的小批量确实不是更好,为什么你会关心多GPU学习,甚至多服务器学习?

(上面的教程是一个同步训练 . 如果是异步训练,那么我可以看到优点,因为参数将被更新而不平均每个GPU计算的梯度)

1 回答

  • 2

    多GPU学习的主要目的是使您能够在更短的时间内训练大型数据集 . 对于较大的小批量,它不一定更好,但至少你可以在更可行的时间内完成学习 .

    更确切地说,如果您使用异步SGD算法,那么N个小批量不会以同步方式进行训练 . 由于算法在使用多GPU时会发生变化,因此不等于使用SGD算法在单GPU上使用MxN大小的小批量 .

    如果您使用同步多GPU培训,则主要是减少时间 . 您可以使用M / N大小的迷你匹配来维持有效的小批量大小,当然可扩展性受到限制,因为较小的小批量大小会导致更多的开销 . 大量计算节点上的数据交换和同步也是灾难 .

    最后,为了解决可扩展性问题,人们在同时使用大量GPU时转移到A-SGD . 因此,您可能不会看到有人在数百个(甚至数十个)GPU上使用同步多GPU培训 .

相关问题