首页 文章

如何使用Keras使用多个GPU训练GAN?

提问于
浏览
2

有三个主要挑战:a)你如何使用嵌套模型的多GPU,如下所示,以及c),如何创建优化GPU和CPU利用率的工作流程?

上下文

我们有三个组成部分:

  • 鉴别者

  • 发电机,和

  • 具有鉴别器和发生器的GAN .

优化器状态

由于鉴别器包含在GAN中,它们也需要在培训期间单独使用 - 如何保存和加载GAN?现在,我单独保存生成器和鉴别器,并为每个训练集重新编译GAN,但是我以这种方式失去了优化器状态 .

多个GPU

这就是API的样子:

from keras.utils import multi_gpu_model
parallel_model = multi_gpu_model(model, gpus=8)

这里的挑战与优化者一样 . 由于鉴别器包含在GAN中,因此不能将 multi_gpu_model 应用于鉴别器和GAN . 您可以在创建GAN之前向识别器和生成器添加 multi_gpu_model ,但根据我的经验,它不能很好地扩展并导致GPU利用率较低 .

GPU和CPU利用率

可以使用多处理对数据进行预处理和排队 . 由于 multi_gpu_model API不支持GAN,因此您需要经常合并权重并在CPU和GPU之间跳转 . 因此,我还没有找到一种利用GPU和CPU的简洁方法 .

1 回答

  • 0

    multi_gpu_model可用于发生器,鉴别器和gan的每个函数

    def create_generator():
      #network architecture 
      generator = Model(inputs=input, outputs=output)
      generator = multi_gpu_model(generator, gpus=2)
      generator.compile()
      return generator
    

    鉴别器和甘也可以这样做 .

相关问题