Введение в MLOPS (ИИ24, 5 модуль)
Содержание
Введение в MLOps (ИИ24, 5 модуль)
Аннотация
Курс посвящён практическим инструментам и подходам MLOps, которые позволяют автоматизировать процесс обучения и эксплуатации моделей машинного обучения. Студенты знакомятся с Docker, Airflow и MLflow, учатся строить пайплайны, логировать эксперименты и организовывать сервинг моделей. Практическая часть реализуется на Python.
Цели
- Развернуть окружение для MLOps с помощью Docker и docker-compose.
- Понимать архитектуру Airflow и MLflow.
- Строить DAG’и и использовать XCom для передачи данных.
- Работать с MLflow для логирования экспериментов и организации Model Registry.
- Разворачивать MLflow Tracking Server с внешними хранилищами (S3).
- Использовать MLflow Model Serving для развёртывания моделей.
- Реализовать end-to-end пайплайн: обучение моделей в Airflow + логирование в MLflow.
Структура курса
Вебинар 1. Введение и установка окружения.
- Обзор Архитектуры Airflow&MLFlow
- Docker и docker-compose. Установка Jupyter, Airflow, MLflow. Подключение S3.
Вебинар 2. Airflow для ML-пайплайнов
- Архитектура Airflow (scheduler, worker, executor, база данных)
- DAG: структура, параметры, расписание
- Connections, Variables, Hooks
- XCom и передача данных между задачами
- Примеры DAG для ML
Вебинар 3. MLflow: эксперименты и хранилище моделей
- Архитектура MLflow Tracking Server
- Логирование экспериментов в Jupyter и Airflow
- MLflow Projects и Models
- Model Registry
Вебинар 4. MLflow Model Serving и финальный проект
- Развёртывание моделей через MLflow Model Serving
- Пример: интеграция через Flask/FastAPI
- DockerOperator
- Финальный проект и разбор требований
Система оценивания
- Домашнее задание 1 (Airflow) — 20%
- Домашнее задание 2 (MLflow + Serving) — 20%
- Финальный проект (Airflow + MLflow) — 60%
Формула: Итог = ДЗ1 × 0.2 + ДЗ2 × 0.2 + Проект × 0.6
Домашнее задание 1 Airflow
Цель: познакомиться с Airflow и научиться строить DAG для автоматизации ML-задачи.
Требования к функционалу:
1. Написать DAG, который реализует простой pipeline:
- инициализация (логирование старта работы);
- загрузка датасета из интернета (например, Titanic / Iris / Wine);
- предобработка данных (train/test split, нормализация или one-hot encoding);
- обучение простой модели (LogisticRegression или RandomForest);
- вычисление и сохранение метрик.
2. Использовать **XCom** для передачи данных между шагами.
3. Добавить расписание DAG (каждый вторник в 6 утра).
Что сдаём
- Код DAG’а: `dags/*.py`.
Домашнее задание 2. MLflow: эксперименты и логирование моделей
Цель: освоить возможности MLflow — логирование экспериментов, nested runs и хранение моделей.
Требования к функционалу:
1. Создать новый эксперимент в MLflow со своим ФИО. 2. Обучить ≥ 3 моделей на одном датасете (классический мл, легковесные сетки). 3. Для эксперимента использовать **nested runs**:
- общий **parent run** (для всего эксперимента);
- отдельные **child runs** для каждой модели.
4. Для каждой child-модели:
- залогировать метрики (accuracy / ROC-AUC и др.);
- залогировать артефакты (файл модели, preprocessing-пайплайн).
5. Зарегистрировать хотя бы одну модель в **MLflow Model Registry**.
Что сдаём
- Код обучения моделей с логированием в MLflow (с nested runs).
Подсказки и соглашения (tbc)
Домашнее задание 3 (Финальный проект). End-to-End MLOps c MLflow → Docker → Serving
Цель: собрать полноценный конвейер: обучение моделей в Airflow → логирование в MLflow → выбор лучшей версии → сборка Docker-образа → сервинг
Требования к функционалу:
1. Обучение и логирование
- DAG в Airflow обучает ≥2 моделей на одном датасете (можно классический ML, легковесные сетки).
- Логирование метрик, артефактов и самих моделей в MLflow Tracking.
- Регистрация модели в MLflow Model Registry под именем `NAME_SURNAME_MODELTYPE`.
2. Выбор лучшей модели
- Автоматический выбор по метрике (например, ROC-AUC/F1/MAPE).
- Перевод версии в `Staging` или `Production` (правила — на ваше усмотрение).
3. Сборка и публикация Docker-образа
- Сборка PyFunc-сервиса с помощью mlflow.
- Публикация образа в registry.
4. Сервинг
- docker run...
- Проверка через `POST`:
- JSON-ответ согласно формату MLflow PyFunc (`{"inputs": [[...], [...]]}` или DataFrame-подобный формат).
Что сдаём
- Код DAG’а: `dags/*.py`.
Критерии оценивания (60% итоговой оценки курса)
- Точность и воспроизводимость (10%)— читаемый понятный код, запускаемый без дебага, выполняющий все шаги из задания.
- Airflow (20%) — чистая DAG-логика, XCom/Variables/Connections, понятные таски.
- MLflow (20%) — корректное логирование, Registry, промоушен версий.
- Сборка/сервинг (10%) — рабочий образ, публикация в реестр, успешный REST.
Обязательные требования к неймингу Airflow Variables (будут дополнены позже):
- `MLFLOW_TRACKING_URI`, `MODEL_NAME`, `MODEL_STAGE` (Staging/Production),
- `REGISTRY`, `IMAGE_NAME`, `TAG`,
- `CI_REGISTRY_USER`, `CI_REGISTRY_PASSWORD`
Метрики и данные — на ваш выбор.
Литература
- Noah Gift, Alfredo Deza — Practical MLOps. O’Reilly, 2021.
- А. В. Платонов — Машинное обучение. Юрайт, 2023.
- Б. Харенслак — Apache Airflow и конвейеры обработки данных. ДМК Пресс, 2022.