【问题标题】:Training Multi-GPU on Tensorflow: a simpler way?在 TensorFlow 上训练多 GPU:更简单的方法?
【发布时间】:2017-04-23 01:54:57
【问题描述】:

我一直在使用 cifar10_multi_gpu_train 示例中提出的训练方法进行(本地)多 GPU 训练,即创建几个塔然后平均梯度。但是,我想知道以下问题:如果我只是将来自不同 GPU 的损失计算出来,将它们相加,然后将梯度下降应用于新的损失,会发生什么。

这行得通吗?可能这是一个愚蠢的问题,并且在某个地方必须有一个限制。如果你能对此发表评论,我会很高兴。

感谢和最好的问候, G.

【问题讨论】:

  • 交换梯度和平均操作的顺序在数学上是等价的(微分是线性算子)。但是,问题是您希望塔 i 操作的梯度操作与塔 i 在同一设备上。有colocate_gradients_with_ops 选项,不知道效果如何,但在写cifar10_multi_gpu_train 的时候还不存在。

标签: machine-learning tensorflow gpu


【解决方案1】:

它不适用于总和。你会得到更大的损失,因此会产生更大的甚至可能是错误的梯度。在对梯度进行平均时,您可以获得权重必须采用的方向的平均值以最小化损失,但每个方向都是为精确损失值计算的方向。

您可以尝试的一件事是独立运行塔,然后不时平均权重,收敛速度较慢,但​​每个节点上的处理速度更快。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-10
    • 2020-11-27
    • 2017-03-30
    • 1970-01-01
    • 2017-01-28
    • 2019-09-09
    • 1970-01-01
    相关资源
    最近更新 更多