/choto-vacansii

Primary LanguageJupyter Notebook

BERT Team solution

Задача

Для решения поставленной задачи, Вам требуется из текстового поля responsibilities(Должностные обязанности) выделять необходимую информацию и заносить в поля:

  • requirements(Требования к соискателю)
  • terms(Условия)
  • notes(Примечания)

В поле responsibilities(Должностные обязанности) зелёным выделены части текста, которые потом попадают в отдельные поля. Если текст не выделяется зеленым цветом, то он не нужен при заполнении полей.

Описание решения

Наш проект представляет собой сервис для обработки данных вакансий. Мы используем модель, основанную на LM IlyaGusev/saiga_13b_lora, которая позволяет выделять бОльший спектр полей, чем 3 основных поля. Также мы подготовили две версии пользовательского интерфейса - для интерактивной и пакетной обработки данных.

Модель хостилась на 3090 TI 24GB. Чтобы 13B параметров уместить в 24GB, мы использовали 8 bit квантизацию и fp16 в качестве промежуточных тензоров.

Структура сервиса

Модель была задеплоена на фреймворке TorchServe, который обеспечивает простоту и гибкость в использовании и управлении моделями в продакшн среде. Фронтенд разработан на Streamlit - открытом фреймворке для быстрой разработки интерактивных приложений для данных.

Инструкция по развертке

  1. Установите зависимости из файла backend/saiga/pyproject.toml.
  2. Установите torchserve, следовав инструкциям по ссылке: https://github.com/pytorch/serve/blob/master/README.md.
  3. Установите библиотеку bitsandbytes, следуя инструкциям по ссылке: https://github.com/TimDettmers/bitsandbytes.
  4. Выполните команду make start, чтобы запустить бекенд и фронтенд.
  5. Для остановки сервиса выполните команду make stop.