簡體   English   中英

如何使用Keras使用多個GPU訓練GAN?

[英]How do you train GANs using multiple GPUs with Keras?

有三個主要挑戰:a)如何保存和加載優化器狀態 ,b)如何使用多個GPU與嵌套模型,見下文,以及c),如何創建工作流以優化GPU和CPU利用率?

上下文

我們有三個組成部分:

  1. 鑒別者
  2. 發電機,和
  3. 具有鑒別器和發生器的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的簡潔方法。

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

鑒別器和甘也可以這樣做。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM