Проект по курсу MLOps в ИТМО.
Студент: Киселев Георгий
Проект посвящен анализу корпоративных документов (счета, договоры и т.д). Пользователь загружает 2 файла (PDF, Word или изображения), например, оригинал документа и его предполагаемую копию. На выходе пользователь получает статистику выявленных расхождений и оценку степени схожести документов. Используются OCR и NLP пайплайны.
При работе над проектом используется Github Flow: есть релизная ветка main (master), на каждую новую фичу (домашнее задание) создается отдельная ветка. После завершения работы над фичей (домашним заданием), проверки преподавателем и исправления ошибок эта ветка вливается в main. Выбор модели ветвления обусловлен ее удобством при работе над проектом одному, так как не нужно создавать и поддерживать большое количество веток одновременно.
В качестве системы версионирования выбран DVC, хранилище - HuggingFace. В директории (ocr_model_training) находятся скрипты для генерации датасета и обучения моделей компьютерного зрения с использованием фреймворков EasyOCR и Doctr. Исходный датасет с изображениями (текст только на кириллице) хранится на стороннем репозитории HuggingFace. Он берется за основу, в дополнение к нему генерируются собственные изображения, включающие не только кириллицу, но и латиницу и специальные символы. После генерации полученный датасет сжимается и с помощью DVC загружается в собственный репозиторий HuggingFace, при этом обовляется версия датасета. Далее происходит обучение, валидация и тест модели на соответствующих данных, после чего обученная модель загружается на HuggingFace. После этого происходит сравнение обеих моделей актуальных версий на тестовой выборке данных, результаты сохраняются в таблицу.
- Для управления зависимостями - poetry
- Система версионирования - DVC
- Для больших данных - HuggingFace (GIT LFS)
- Линтер - flake8
- Docker
CI-пайплайны реализованы с помощью GitHub Actions и описаны в файлах в папке .github/workflows. Пайплайны запускаются при push в любую из веток. Включают в себя проверку линтером, сборку Docker-образа и сборку документации.
- Клон репозитория:
git clone https://github.com/something-original/mlops_itmo.git && cd mlops_itmo - Установка зависимостей с помощью poetry:
poetry install --no-root - Для использования pre-commit хуков:
poetry run pre-commit install - Можно использовать Docker:
docker build --tag "mlops_itmo" .или docker-composedocker-compose up