Введение в MLOPS (ИИ24, 5 модуль)

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск

Введение в 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.