В данном репозитории создана модель, отвечающая на вопросы по естественнонаучным дисциплинам по информации из Википедии. Производится сравнение BERT и GPT2 на тестовой выборке, затем модель GPT2 дообучается для повышения качества.
Данные представлены в текстовом формате (файлы формата parquet) в виде пар "вопрос-ответ". В датасете представлены короткие и длинные ответы, в данном репозитории используются только короткие ответы.
В качестве метрики качества модели выбрана F1-мера по совпадению токенов. В данном случае требуется получить метрики выше бейзлайна BERT.
Датасет представлен в виде обучающей и валидационной выборки:
- Обучающая выборка состоит 307 тысяч примеров.
- Валидационная выборка фиксирована и состоит из 7 тысяч примеров.
В данной работе используется датасет Natural Questions от Google Research. Датасет содержит выборку реальных вопросов из поисковой системы Google по естественным наукам с соответствующими ответами из топ-5 страниц Википедии и ссылками на источники. Ответы разделены на короткие и длинные. Для обучения модели отобраны пары "вопрос-ответ" только с короткими ответами.
В качестве бейзлайн модели используется BERT.
В качестве основной модели для дообучения предполагается использовать GPT-2.
Модель может быть использована в качестве простого чат-бота для ответа на вопросы по естестенным науками. Кроме того, модель не требует значительных ресурсов для запуска.
- Клонируйте репозиторий
git clone https://github.com/vladimir-molotkov/natural-questions-answer-model.git cd natural-questions-answer-model - Установите Poetry. Убедитесь, что у вас установлен
poetry. Если нет, установите его:# Linux/macOS curl -sSL https://install.python-poetry.org | python3 - # Windows (PowerShell) (Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | py -
- Установите зависимости. В директории проекта выполните:
poetry install
- Активируйте виртуальное окружение
poetry env activate
- Загрузите датасет
dvc pull
- Запуск эксперимента. После активации окружения выполните:
Если не активировали окружение в п.4, используйте:
python main.py
poetry run python main.py
При запуске main.py без параметров происходит сравнение BERT и GPT2 на тестовой выборке, затем происходит обучение GPT2. Если нужно запустить сразу обучение, то можно запустить с параметром benchmark False
main.py --benchmark FalseИли можно изменить соответствующий параметр в конфигурации Hydra (configs/config.yaml)
Для запуска модели представлен файл inference.py, в котором модель можно запустить для ответа на один вопрос (флаг single) или в формате чат-бота (interactive). В параметре checkpoint_path передается путь до обученной модели. Если его пропустить, то будет использована модель GPT2 с Hugging Face. Для выбора устройства torch используется параметр device (mps, cpu, cuda). Пример использования модели для ответа на один вопрос:
inference.py single ask --question "What is Data Science?"Пример запуска модели в интерактивном режиме и выборе устройства mps:
inference.py interactive \
--checkpoint_path "lightning_logs/version_0/checkpoints/epoch=2-step=100.ckpt" \
--device "mps"