natasha/slovnet

Использование slovnet на нескольких процессах многократно замедляет обработку

sergotail opened this issue · 1 comments

Здравствуйте! При использовании POS-таггера в режиме скрипта внутри одного процесса, обработка происходит достаточно быстро. Но если запустить celery очередь на 4 процессах, то POS-разметка занимает экстремально много времени: на одной машине и в celery-очереди одни и те же данные обрабатываются соответственно 6 и 250 секунд.

Я запустил профилирование, и увидел вот такое:
image

Это файл slovnet/exec/model.py.

Каким образом я могу настроить многопроцессную обработку данных с использованием slovnet? И чем может быть вызвано такое увеличение времени обработки?

Заранее спасибо!

Если вдруг кому-то будет полезно: если numpy использует openBLAS библиотеку, то нужно явно выставлять значение переменной OPENBLAS_NUM_THREADS, причём не сильно большим. Иначе, по умолчанию openBLAS пытается задействовать все ядра системы. Для меня оптимальным стало значение 1, т.к. в моём случае распараллеливание основной задачи происходит с помощью постановки celery-задач.