【发布时间】:2018-12-03 19:42:02
【问题描述】:
面临三个主要挑战:a) 你如何save and load the optimizer state,b) 你如何使用多个 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。
【问题讨论】:
标签: python tensorflow keras deep-learning