Обучение NER на своих данных и упаковка ее в сервис на Flask

Добрый день!

Пробую обучить NER на своих данных. Вроде обучилась и модель сохранилась. Есть следующие вопросы:

  1. Как теперь вызвать именно эту модель и сделать инференс на незнакомых данных?
  2. Можно ли и как сериализовать файл с моделью?
  3. Как упаковать эту модель в сервис на фласк, чтобы получать предикт? Не загружая весь диппавлов и не подгружая предобученные модели, а только свою?
  1. Как теперь вызвать именно эту модель и сделать инференс на незнакомых данных?

В конфигурационном файле модели есть параметры save_path и load_path, они должны указывать на именно вашу модель. Затем, по примерам из документации модель можно использовать из python:

from deeppavlov import configs, build_model
ner_model = build_model(YOUR_CONFIG_FILE)
ner_model(['Bob Ross lived in Florida'])
  1. Можно ли и как сериализовать файл с моделью?
  2. Как упаковать эту модель в сервис на фласк, чтобы получать предикт? Не загружая весь диппавлов и не подгружая предобученные модели, а только свою?

DeepPavlov может запустить serving обученной модели (используется uvicorn+fastapi) с помощью команды:

python -m deeppavlov riseapi YOUR_CONFIG

Больше информации (описание доп параметров) есть в документации.
При этом используется DeepPavlov и только нужная модель.

Если вы собираетесь хостить модель не у себя локально, то удобно указать в конфиге в секции downloads url до сохраненной модели (можно использовать s3), пример секции downloads есть, например, в этом конфиге: DeepPavlov/ner_rus_bert_torch.json at master · deepmipt/DeepPavlov · GitHub

Тогда команда

python -m deeppavlov riseapi YOUR_CONFIG -d

скачает модель и запустит сервис готовый к инференсу модели.

2 Likes