我是Keras的新用户,如果这是一个菜鸟问题,对不起。似乎我有一个人为限制,使我无法使用完整的GPU内存,但是config.gpu_options.per_process_gpu_memory_fraction并未设置为任何限制。有人知道还有什么可能会阻止我使用全部内存吗?我将解释为什么我认为无法使用下面的全部内存。
我有一个非常大的Keras模型,该模型具有在AWS上运行的Tensorflow后端。我可以使用batch_size 4进行训练,但是如果我使用batch_size 8进行训练,则会溢出内存。我的实例是一个p3.2xlarge,具有16 GB的GPU内存,并且我已经通过K.tensorflow_backend._get_available_gpus()命令验证了它正在使用GPU。
我尝试升级到p3.8xlarge,它具有4倍的GPU内存(64 GB)。我期望这样做之后可以训练更大批量的相同模型。我在网上阅读的所有内容都表明,内存消耗的最重要方面在batch_size中是线性的。但是使用8的batch_size仍然会溢出内存。
有人知道为什么我可能无法访问我的全部GPU内存吗,还有其他我可以检查来调试出问题的东西吗?
答案 0 :(得分: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/
我尝试了一下,它解决了我的问题。