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