有三个主要的挑战:a) 如何保存和加载优化器状态,b) 如何使用嵌套模型的多个GPU(请参见下文),以及c) 如何创建一个工作流程来优化GPU和CPU利用率?
挑战在于优化器一样。由于鉴别器包含在GAN中,您不能将
背景
我们有三个组件:- 判别器
- 生成器,以及
- 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。