Почему Keras не использует всю память GPU? - PullRequest
0 голосов
/ 12 сентября 2018

Я новый пользователь Keras, извините, если это вопрос новичка.Кажется, что у меня есть искусственный предел, который не позволяет мне использовать всю память GPU, но моя config.gpu_options.per_process_gpu_memory_fraction не имеет никакого ограничения.Кто-нибудь знает, что еще может мешать мне использовать всю память?Ниже я объясню, почему мне кажется, что я не могу использовать всю память.

У меня довольно большая модель Keras с бэкэндом Tensorflow, который я использую в AWS.Я могу тренироваться с batch_size 4, но если я тренируюсь с batch_size 8, это переполняет память.Мой экземпляр - p3.2xlarge с 16 ГБ памяти GPU, и я убедился, что он использует GPU из команды K.tensorflow_backend._get_available_gpus ().

Я попытался перейти на p3.8xlarge, который имеет в 4 раза больше памяти GPU (64 ГБ).Я ожидал, что смогу тренировать ту же модель с гораздо большим размером партии после этого.Все, что я читаю онлайн, показывает, что наиболее важные аспекты потребления памяти являются линейными в batch_size.Но он по-прежнему переполняет память, когда я использую размер пакета batch_size 8.

Кто-нибудь знает, почему я не могу получить доступ к своей полной памяти GPU, если есть что-то еще, что я могу проверить, чтобы отладить то, что идет не так?

1 Ответ

0 голосов
/ 13 сентября 2018

Только что понял, в чем была моя проблема.Добавленная память на новом узле разделена на 4 графических процессора, и для доступа к ним вам нужно использовать 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/

Я попробовал это иэто решило мою проблему.

...