Ошибка нехватки памяти при обучении Tacotron2 Pytorch
решил обучить tts Tacotron2 на датасете RUSLAN(22000 аудио записей). Использую одну видеокарту A4000 20Gb При обучении даных с batch_size=8 на 2000+ итерации падает ошибка:
torch.cuda.OutOfMemoryError: CUDA out of memory. Tried to allocate 2.00 MiB (GPU 0; 19.68 GiB total capacity; 17.58 GiB already allocated; 2.00 MiB free; 18.32 GiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation. See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF
пытался ставить переменную окружения PYTORCH_CUDA_ALLOC_CONF, но, к сожалению, ничего не меняется Пробовал очищать кэш а начале каждой итерации, но тоже не помогло
torch.cuda.empty_cache()
Не могли бы люди сведущие подсказать в чем может быть проблема? может данные для обучение какие то аномальные попадаются? Или стоит еще сильнее занизить batch_size?
Буду очень благодарен за помощь
Ответы (1 шт):
Здесь предлагают несколько вариантов решения проблемы. Основное:
- Уменьшить
batch_size
- Увеличить
reduction_factor
(илиoutputs_per_step
- там непонятно написано), но не более чем до5
, больше будет шум - Убрать из датасета сэмплы длиной больше чем
20с
, длинные сэмплы - реальная проблема - Снизить частоту сэмплов, если она выше
16Khz
до16Khz
или даже до8Khz
, но качество может пострадать, нужно смотреть