Этот проект демонстрирует систему MLOps для прогнозирования цен на недвижимость. В нем используются различные инструменты и технологии для сбора данных, обучения моделей, тестирования, развертывания и мониторинга.
Платформа MLOps состоит из следующих пунктов:
- Сбор данных с помощью Web парсера Selenium по расписанию AirFlow.
- Версионирования данных и автоматизация пайплайна обучения с помощью DVC.
- Автотестирование кода и проверка качества данных с помощью Continuous Integration.
- Отслеживание экспериментов с помощью MLFlow сервиса.
- Авторазвертывание REST API приложение с помощью FAST API и Continuous Deployment.
- Мониторинг модели с помощью Prometheus и визуализация в Grafana.
- Web сервис Streamlit для взаимодействия с моделью.
Укажите значения для набора переменных среды в ".env_example":
# Данные для AirFlow (id -u)
AIRFLOW_UID=<...>
AIRFLOW_S3_BUCKET=airflow-data
# Данные для S3 Minio
AWS_ACCESS_KEY_ID=<...>
AWS_SECRET_ACCESS_KEY=<...>
AWS_S3_BUCKET=mlflow-arts
MINIO_ROOT_USER=<...>
MINIO_ROOT_PASSWORD=<...>
...
Переименуйте ".env_example" в файл ".env":
mv .env_example .env
Запускаем ETL планировщик с AirFlow сервисом для сбора данных:
docker-compose -f ./docker-compose-airflow.yaml up -d
Запускаем MLFlow микросервис:
docker-compose -f ./docker-compose-mlflow.yaml up -d
Запустите DAG extract_houses_data в AirFlow, зайдя по адресу localhost:8080, дождитесь его завершения.
Устанавливаем Python 3.11 с необходимыми пакетами:
python -m venv ./env
source ./env/bin/activate
# For Windows .\env\Scripts\Activate
pip install -r requirements.txt
Запускаем DVC pipeline с предобработкой данных, обучением и трекингом модели MLFlow:
dvc repro
Запускаем Production микросервис:
docker-compose -f ./docker-compose-app.yaml up -d
Получить предсказание стоимости жилья по ссылке localhost:8501. Мониторинг performance модели по ссылке localhost:3000.
Примечание:
- Для валидации модели можно использовать пример ноутбука.
- Результаты экспериментов показаны в MLFlow Tracking сервере localhost:5000.
- Для заимодействия с Postgres используется pgAdmin localhost:5050.
- Для настройки CI/CD pipeline необходимо использовать GitLab Runner с оболочкой PowerShell и указать ему теги test, data, deploy.
Возможные доработки и сервисы для платформы:
- Использование очередей RabbitMQ/Kafka с Redis для асинхронного прогнозирования.
- Использование Feature Store и Metric Store.
- Мониторинг дрифта данных и качество модели с помощью Evidently AI.
- Масштабирование модели с помощью репликации Kubernetes.
- Настройка Canary развертывания и User сервиса для A/B тестирования.