Недостаточно памяти при каждой второй попытке использования Ray Tune

Я настраиваю гиперпараметры, используя настройку лучей. Модель построена в библиотеке tensorflow, занимает большую часть доступной памяти GPU. Я заметил, что каждый второй вызов сообщает об ошибке нехватки памяти. Похоже, что память освобождается, это видно на графике использования памяти GPU, это момент между вызовами последовательных испытаний, между которыми произошла ошибка OOM. Добавлю, что на моделях меньшего размера я не сталкивался с этой ошибкой, и график выглядит так же.

Как бороться с этой ошибкой нехватки памяти при каждой второй попытке?

График использования памяти


person Emil Nowosielski    schedule 14.01.2021    source источник


Ответы (1)


На самом деле есть утилита, которая помогает этого избежать:

https://docs.ray.io/en/master/tune/api_docs/trainable.html#ray.tune.utils.wait_for_gpu

def tune_func(config):
    tune.util.wait_for_gpu()
    train()

tune.run(tune_func, resources_per_trial={"GPU": 1}, num_samples=10)
person richliaw    schedule 14.01.2021
comment
Я пробовал это решение, я добавил эту строку в начало своей функции, и я получаю те же результаты, каждый второй вызов заканчивается OOM - person Emil Nowosielski; 15.01.2021
comment
Хм, возможно ли, что память GPU каким-то образом используется из-за десериализации? - person richliaw; 15.01.2021
comment
Например, если вы не позвонили train, а сделали только wait_for_gpu, остается ли это OOM? - person richliaw; 15.01.2021
comment
Спасибо за ответ, совет был полезен, однако проблема заключалась в использовании tenorflow раньше, чем в качестве пробного. Кроме того, в функции wait_for_gpu была ошибка, которую я решил, создав функцию с нуля. - person Emil Nowosielski; 18.01.2021