[英]How do you train GANs using multiple GPUs with Keras?
有三個主要挑戰:a)如何保存和加載優化器狀態 ,b)如何使用多個GPU與嵌套模型,見下文,以及c),如何創建工作流以優化GPU和CPU利用率?
我們有三個組成部分:
由於鑒別器包含在GAN中,它們也需要在培訓期間單獨使用 - 如何保存和加載GAN? 現在,我單獨保存生成器和鑒別器,並為每個訓練集重新編譯GAN,但是我以這種方式失去了優化器狀態。
這就是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利用率低下。
可以使用多處理對數據進行預處理和排隊。 由於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.