Tensorflow keras中GPU的多处理

Tensorflow keras中GPU的多处理,tensorflow,keras,Tensorflow,Keras,我需要并行计算多个深度模型,并平均它们的结果。使用GPU 0完成计算后,我的作业将永远运行 def model_train(self, params): from nn_arch import nn_models X, y, gpu_no = params print("GPU NO ", gpu_no) with tf.device('/gpu:' + str(gpu_no)): model1 = nn_models.lenet5()

我需要并行计算多个深度模型,并平均它们的结果。使用
GPU 0
完成计算后,我的作业将永远运行

def model_train(self, params):
    from nn_arch import nn_models
    X, y, gpu_no = params
    print("GPU NO ", gpu_no)
    with tf.device('/gpu:' + str(gpu_no)):
        model1 = nn_models.lenet5()
        early_callback = CustomCallback()
        model1.fit(X, y, batch_size=256, validation_split=0.2, callbacks=[early_callback],
                   verbose=1,
                   epochs=1)
    return model1
下面是我的主要方法<代码>在这种情况下,我有2个GPU

def main(self, X_train, y_train, X_test, y_test):
    random_buckets = self.get_random()
    X = [X_train[random_buckets[k]] for k in sorted(random_buckets)]
    y = [y_train[random_buckets[j]] for j in sorted(random_buckets)]

    params = zip(X, y, [0, 1])
    models = pool1.map(self.model_train, params)

如何与Keras并行培训多个模型。(数据并行方法)

请参考多GPU TensorFlow教程


在keras中编译模型之前。添加这一行

模型=使_平行(模型,2)

其中2是可用的GPU数量

make_parallel函数在此文件中可用。只需在代码中导入文件,代码将在多个GPU上执行

使_并行是一个简单的函数,它:

  • 它在您告诉它的N个GPU上实例化您的模型副本
  • 它将您的批次分成N个大小均匀的小批次
  • 它将每个较小的批次传递到相应的模型中
  • 它连接模型的输出