Tensorflow. Cifar10多GPU示例使用更多的GPU表现更差

3

我需要测试tensorflow在多个gpu上的分布式版本。

我在AWS g2.8x EC2实例上运行了Cifar-10多GPU示例。

对于cifar10_multi_gpu_train.py(代码在这里)的2000个步骤,单个gpu(flag num_gpu=1)的运行时间为427秒。之后,eval.py脚本返回精确度@1 = 0.537。

使用相同的示例,运行相同数量的步骤(其中一步在所有gpu上并行执行),但是使用4个gpu(flag num_gpu=4),运行时间约为530秒,并且eval.py脚本仅返回略高的精确度@1为0.552(可能由于计算中的随机性所致?)

为什么使用更多的gpu时,示例表现更差? 我只是出于测试目的使用了非常少量的步骤,并期望使用4个gpu获得更高的精度收益。 我错过了什么或犯了一些基本错误吗? 有其他人尝试过上面的示例吗?

非常感谢您的帮助。

1个回答

0

cifar10示例默认使用CPU上的变量,这是多GPU架构所需的。与单个GPU设置相比,您可以实现大约1.5倍的加速,使用2个GPU。

您的问题与Nvidia Tesla K80的双GPU架构有关。它具有用于内部通信的PCIe交换机。这将引入通信开销。请参见块图: enter image description here


我在GCP上使用2个Nvidia Tesla K80时遇到了相同的问题。我看到双重架构对内部GK210 GPU造成了很大的开销。然而,我印象中我们有两个单独的K80(请参见下面的屏幕截图):https://postimg.org/image/pitpneai9/ ,你认为我们的设置只是一个带有GK210的单个K80吗? - Fematich

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接