为什么Keras没有使用完整的GPU内存?

问题描述 投票:0回答:1

我是新的Keras用户,很抱歉,如果这是一个新手问题。好像我有一个人为的限制阻止我使用完整的GPU内存,但我的config.gpu_options.per_process_gpu_memory_fraction没有设置任何限制。有谁知道还有什么可能阻止我使用完整的内存?我将解释为什么我认为我无法使用下面的完整内存。

我有一个非常大的Keras模型,带有Tensorflow后端,我正在AWS上运行。我可以使用batch_size 4进行训练,但如果我使用batch_size 8训练它会溢出内存。我的实例是p3.2xlarge,有16 GB的GPU内存,我已经验证它正在使用K.tensorflow_backend._get_available_gpus()命令中的GPU。

我尝试升级到p3.8xlarge,它的GPU内存是4倍(64 GB)。我希望在完成这项工作后,我可以用更大的批量训练相同的模型。我在网上阅读的所有内容都表明,mem_size中内存消耗的最重要方面是线性的。但它仍然溢出内存,我使用的batch_size为8。

有谁知道为什么我可能无法访问我的完整GPU内存,如果还有什么我可以检查调试出错的地方?

keras out-of-memory gpu
1个回答
0
投票

刚刚意识到我的问题是什么。新节点上添加的内存分为4个GPU,为了访问它们,您需要使用keras.utils.training_utils.multi_gpu_model,如下所述:https://www.pyimagesearch.com/2017/10/30/how-to-multi-gpu-training-with-keras-python-and-deep-learning/

我尝试了这个,它解决了我的问题。

© www.soinside.com 2019 - 2024. All rights reserved.