Tensorflow 多GPU训练不会减少训练时间

Tensorflow 多GPU训练不会减少训练时间,tensorflow,keras,multi-gpu,Tensorflow,Keras,Multi Gpu,我尝试过使用keras对三个UNet模型进行图像分割,以评估多GPU训练的效果 第一个模型在1个GPU(P100)上使用1个批量进行训练。每一个训练步骤大约需要254ms。(注意这是一步,而不是一个纪元) 第二个模型使用1个GPU(P100)使用2个批量进行训练。每个训练步骤约需399ms 第三个模型使用2个GPU(P100)使用2个批量进行训练。每个训练步骤约需370毫秒。从逻辑上讲,它应该与第一种情况花费相同的时间,因为两个GPU并行处理一个批,但花费的时间更多 谁能说出多GPU训练是否能缩

我尝试过使用keras对三个UNet模型进行图像分割,以评估多GPU训练的效果

  • 第一个模型在1个GPU(P100)上使用1个批量进行训练。每一个训练步骤大约需要254ms。(注意这是一步,而不是一个纪元)
  • 第二个模型使用1个GPU(P100)使用2个批量进行训练。每个训练步骤约需399ms
  • 第三个模型使用2个GPU(P100)使用2个批量进行训练。每个训练步骤约需370毫秒。从逻辑上讲,它应该与第一种情况花费相同的时间,因为两个GPU并行处理一个批,但花费的时间更多

  • 谁能说出多GPU训练是否能缩短训练时间?作为参考,我尝试了使用keras的所有模型。

    我认为这是因为您使用的批量非常小;在这种情况下,将梯度/计算分布在两个GPU上并取回它们(以及CPU到GPU(2)的数据分布)的成本超过了与顺序训练(在1个GPU上)相比可能获得的并行时间优势


    例如,当批量大小为8/16时,预计会出现更大的差异。

    请检查此项。在相同的模型初始化情况下,您应该查看总收敛时间。否则,人们可能会对多GPU模型的“什么是一个步骤”以及“什么是一个时代”产生许多疑问。@DanielMöller:你能告诉我,你所说的总收敛时间是什么意思吗?你所说的最低验证误差是什么意思吗?是的,模型达到你所期望的结果所需的时间。Srihari在这里给出的答案似乎是类似的。你是对的。我刚刚试过在V100GPU上训练8个批量大小,在两个V100GPU上训练16个批量大小,两个步骤所用的时间是相等的。这意味着多个GPU训练模型在一个训练步骤中所花费的时间与单个GPU所花费的时间相同。但对于更大的批量,差异是明显的。