Модель Keras Multi GPU медленно
Я пытаюсь multi_gpu_model в керасе. Версия multi-gpu всегда медленнее, чем single-gpu, за исключением примера Xception.
with tf.device('/cpu:0'):
model = Xception(weights=None,
input_shape=(height, width, 3),
classes=num_classes)
parallel_model = multi_gpu_model(model, n)
parallel_model.compile(loss='categorical_crossentropy',
optimizer='rmsprop')
Для других примеров версия 4-GPU медленнее. Для mnist_cnn.py версия с одним графическим процессором занимает около 3 с за эпоху, а версия с 4 графическими процессорами - около 4 с за эпоху.
Я использую 1 GTX1080 и 3 GTX1070. Попробовал это, используя и тензор потока, и бэкенды mxnet, в Windows 10 и в Ubuntu 18. Используя keras 2.2.0 и tenorflow-gpu 1.8.0
Итак, как правильно использовать multi_gpu_model для повышения скорости обучения?
with tf.device('/cpu:0'):
model = Sequential()
model.add(Convolution2D(nb_filters, kernel_size[0], kernel_size[1],
border_mode='valid',
input_shape=input_shape))
model.add(Activation('relu'))
model.add(Convolution2D(nb_filters, kernel_size[0], kernel_size[1]))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=pool_size))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(128))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(nb_classes))
model.add(Activation('softmax'))
model = multi_gpu_model(model, 4)
model.compile(loss='categorical_crossentropy',
optimizer='rmsprop',
metrics=['accuracy'])
model.fit(X_train, Y_train, batch_size=batch_size, nb_epoch=nb_epoch,
verbose=1, validation_data=(X_test, Y_test))
score = model.evaluate(X_test, Y_test, verbose=0)
print('Test score:', score[0])
print('Test accuracy:', score[1])