Утечка памяти с моделью en_core_web_trf, Spacy

при использовании конвейера модели en_core_web_trf происходит утечка памяти, я запускаю модель с использованием графического процессора с 16 ГБ ОЗУ, вот образец кода.

      !python -m spacy download en_core_web_trf

import en_core_web_trf
nlp = en_core_web_trf.load()

#it's just an array of 100K sentences.
data = dataload()

for index, review in enumerate( nlp.pipe(data, batch_size=100) ):
    #doing some processing here
    if index % 1000: print(index)

этот код взламывает при достижении 31 КБ и вызывает ошибку OOM.

      CUDA out of memory. Tried to allocate 46.00 MiB (GPU 0; 11.17 GiB total capacity; 10.44 GiB already allocated; 832.00 KiB free; 10.72 GiB reserved in total by PyTorch)

Я просто использую конвейер для прогнозирования, а не для обучения каких-либо данных или другого материала и пробовал с разными размерами пакетов, но ничего не произошло, все равно сбой.

Ваше окружение

  • Версия spaCy: 3.0.5
  • Платформа: Linux-4.19.112+-x86_64-with-Ubuntu-18.04-bionic
  • Версия Python: 3.7.10
  • Конвейеры: en_core_web_trf (3.0.0)

1 ответ

Вам повезло с GPU - я все еще пытаюсь пройти через DLL Hell (torch GPU) в Windows :-). Но похоже, что Spacy 3 использует больше памяти графического процессора, чем Spacy 2 - мой графический процессор 6 ГБ, возможно, стал бесполезным.

Тем не менее, пробовали ли вы запустить свой корпус без графического процессора (и наблюдая за использованием памяти)?

«Утечка» Spacy 2 в больших наборах данных происходит (в основном) из-за растущего словарного запаса - каждая строка данных может добавлять еще пару слов, и предлагаемое «решение» перезагружает модель и / или просто словарь каждые nnn строк. Такая же проблема может возникнуть при использовании графического процессора ...

Другие вопросы по тегам