Tensorflow 多GPU keras怪异加速比

Tensorflow 多GPU keras怪异加速比,tensorflow,keras,Tensorflow,Keras,我实现了一个类似的代码,比如keras的多GPU代码 (). 在具有2个GPU的服务器上运行此命令时,我每个历元的训练时间如下: 仅显示一个GPU和设置变量GPU=1(仅使用一个GPU),一个历元=32s 显示Keras两个GPU,且GPU=1,一个历元=31秒 显示Keras两个GPU,并且GPU=2,一个历元=37秒 输出看起来有点奇怪,虽然初始化代码似乎会为每个GPU创建多个Tensorflow设备,但我不确定这是否是正确的行为。但我看到的大多数其他示例中,每个GPU只有一行这样的代码

我实现了一个类似的代码,比如keras的多GPU代码 (). 在具有2个GPU的服务器上运行此命令时,我每个历元的训练时间如下:

  • 仅显示一个GPU和设置变量
    GPU=1
    (仅使用一个GPU),一个历元=32s
  • 显示Keras两个GPU,且
    GPU=1
    ,一个历元=31秒
  • 显示Keras两个GPU,并且
    GPU=2
    ,一个历元=37秒
输出看起来有点奇怪,虽然初始化代码似乎会为每个GPU创建多个Tensorflow设备,但我不确定这是否是正确的行为。但我看到的大多数其他示例中,每个GPU只有一行这样的代码

第一次测试(显示一个GPU,GPU=1):

第二次测试(显示2个GPU,GPU=1):

奇怪的是,例如3(GPU=2):

守则:

LSTM=keras.layers.CuDNNLSTM
添加(LSTM(节点,输入_形状=(时间步,X_train.shape[-1]),返回_序列=真))
模型。添加(LSTM(节))
model.add(密集型(3,activation='softmax'))
如果GPU>=2:
模型\基本=模型
使用tf.device(“/cpu:0”):
model=model_basic
并行的gpu模型=多gpu模型(模型,gpu=gpu)
模型=平行模型
compile(优化器='adam',loss='classifical_crossentropy',metrics=['acc'])
hist=model.fit(myParameter)
这是典型的行为吗?我的代码有什么问题,每个GPU创建了多个设备。提前谢谢

我尝试了正确的密码。 它看起来似乎在某种程度上达到了预期的输出。但是为了看到预期的速度差异,我必须增加样本数量(20000),并且需要将高度和宽度增加到100(由于RAM限制)

我不完全确定为什么在我的情况下,我没有看到两个GPU的加速。我认为这是由于内存速度的限制。因为我的批量很小,每个样品也很小。这导致数据管理需要比实际计算更多的时间。 当使用2个GPU时,数据的分布会更加耗时,而每个GPU上的实际运行时间会减少。 如果我能检查图形卡的使用情况,就可以证明这种效果。遗憾的是,我不知道该怎么做

如果有人对此有其他想法,请告诉我。谢谢

我也面临同样的问题!
2017-12-04 14:54:04.071549: I tensorflow/core/common_runtime/gpu/gpu_device.cc:955] Found device 0 with properties: 
name: Tesla P100-PCIE-16GB
major: 6 minor: 0 memoryClockRate (GHz) 1.3285
pciBusID 0000:82:00.0
Total memory: 15.93GiB
Free memory: 15.64GiB
2017-12-04 14:54:04.071597: I tensorflow/core/common_runtime/gpu/gpu_device.cc:976] DMA: 0 
2017-12-04 14:54:04.071605: I tensorflow/core/common_runtime/gpu/gpu_device.cc:986] 0:   Y 
2017-12-04 14:54:04.071619: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1045] Creating TensorFlow device (/gpu:0) -> (device: 0, name: Tesla P100-PCIE-16GB, pci bus id: 0000:82:00.0)
2017-12-04 14:54:21.531654: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1045] Creating TensorFlow device (/gpu:0) -> (device: 0, name: Tesla P100-PCIE-16GB, pci bus id: 0000:82:00.0)
2017-12-04 14:48:24.881733: I tensorflow/core/common_runtime/gpu/gpu_device.cc:955] Found device 1 with properties: 
...(same as earlier)
2017-12-04 14:48:24.882924: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1045] Creating TensorFlow device (/gpu:0) -> (device: 0, name: Tesla P100-PCIE-16GB, pci bus id: 0000:82:00.0)
2017-12-04 14:48:24.882931: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1045] Creating TensorFlow device (/gpu:1) -> (device: 1, name: Tesla P100-PCIE-16GB, pci bus id: 0000:83:00.0)
2017-12-04 14:48:42.353807: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1045] Creating TensorFlow device (/gpu:0) -> (device: 0, name: Tesla P100-PCIE-16GB, pci bus id: 0000:82:00.0)
2017-12-04 14:48:42.353851: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1045] Creating TensorFlow device (/gpu:1) -> (device: 1, name: Tesla P100-PCIE-16GB, pci bus id: 0000:83:00.0)
2017-12-04 14:41:35.906828: I tensorflow/core/common_runtime/gpu/gpu_device.cc:955] Found device 1 with properties:
...(same as earlier)
2017-12-04 14:41:35.907996: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1045] Creating TensorFlow device (/gpu:0) -> (device: 0, name: Tesla P100-PCIE-16GB, pci bus id: 0000:82:00.0)
2017-12-04 14:41:35.908002: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1045] Creating TensorFlow device (/gpu:1) -> (device: 1, name: Tesla P100-PCIE-16GB, pci bus id: 0000:83:00.0)
2017-12-04 14:41:52.944335: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1045] Creating TensorFlow device (/gpu:0) -> (device: 0, name: Tesla P100-PCIE-16GB, pci bus id: 0000:82:00.0)
2017-12-04 14:41:52.944377: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1045] Creating TensorFlow device (/gpu:1) -> (device: 1, name: Tesla P100-PCIE-16GB, pci bus id: 0000:83:00.0)
2017-12-04 14:41:53.709812: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1045] Creating TensorFlow device (/gpu:0) -> (device: 0, name: Tesla P100-PCIE-16GB, pci bus id: 0000:82:00.0)
2017-12-04 14:41:53.709838: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1045] Creating TensorFlow device (/gpu:1) -> (device: 1, name: Tesla P100-PCIE-16GB, pci bus id: 0000:83:00.0)