Ошибка нехватки памяти при обучении 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 шт):

Автор решения: CrazyElf

Здесь предлагают несколько вариантов решения проблемы. Основное:

  • Уменьшить batch_size
  • Увеличить reduction_factor (или outputs_per_step - там непонятно написано), но не более чем до 5, больше будет шум
  • Убрать из датасета сэмплы длиной больше чем 20с, длинные сэмплы - реальная проблема
  • Снизить частоту сэмплов, если она выше 16Khz до 16Khz или даже до 8Khz, но качество может пострадать, нужно смотреть
→ Ссылка