我是新的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内存,如果还有什么我可以检查调试出错的地方?
刚刚意识到我的问题是什么。新节点上添加的内存分为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/
我尝试了这个,它解决了我的问题。