如何使用多个gpu和Keras来训练GANs?

2024-06-26 13:13:19 发布

您现在位置:Python中文网/ 问答频道 /正文

有三个主要的挑战:a)你如何save and load the optimizer state,b)你如何使用嵌套模型的多个GPU,见下文,和c),你如何创建一个工作流来优化GPU和CPU的利用率?在

上下文

我们有三个组成部分:

  1. 鉴别器
  2. 发电机,以及
  3. 既有鉴频器又有发生器的GAN。在

优化器状态

既然鉴别器包含在GAN中,而且在培训期间也需要单独使用它们-如何保存和加载GANs?现在,我分别保存生成器和鉴别器,并为每个训练片段重新编译GAN,但是这样就失去了优化器状态。在

多个GPU

API如下所示:

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

这里的挑战与优化器相同。因为鉴别器包含在GANs中,所以不能同时对鉴别器和GAN应用multi_gpu_model。在创建GAN之前,您可以在鉴别器和生成器中添加multi_gpu_model,但根据我的经验,它不能很好地扩展并导致GPU利用率低下。在

GPU和CPU利用率

数据可以通过多重处理进行预处理和排队。由于multi_gpu_modelAPI不支持GANs,因此需要经常合并权重并在cpu和gpu之间跳转。因此,我还没有找到一个干净的方法来使用gpu和cpu。在


Tags: andthemodelgpu状态saveload利用率
1条回答
网友
1楼 · 发布于 2024-06-26 13:13:19

在发生器、鉴别器和gan的每个功能中都可以使用多gpu模型

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

鉴别器和gan也是如此。在

相关问题 更多 >