MLOps
| Полное название | Machine Learning Operations |
|---|---|
| Истоки | DevOps, статья Google «Hidden Technical Debt in Machine Learning Systems» (2015) |
| Этапы | данные, обучение, оценка, развёртывание, мониторинг |
| Отслеживание экспериментов | MLflow, Weights & Biases |
| Данные и признаки | DVC, Feast, lakeFS |
| Оркестрация | Airflow, Kubeflow, Prefect, Dagster |
| Сервинг | KServe, BentoML, Triton, vLLM |
| Мониторинг | Evidently, Prometheus, Grafana |
MLOps (англ. Machine Learning Operations) — набор практик, процессов и инструментов, позволяющих надёжно доводить модели машинного обучения от эксперимента до продакшена и поддерживать их работу. Это перенос идей DevOps — автоматизации, CI/CD, мониторинга, воспроизводимости — на системы, поведение которых определяется не только кодом, но и данными.
Без MLOps типичная судьба модели — ноутбук на компьютере исследователя, который никто не может воспроизвести, или модель в продакшене, качество которой тихо деградирует месяцами.
Почему ML сложнее обычного ПО
В 2015 году инженеры Google опубликовали статью «Скрытый технический долг в системах машинного обучения»: код самой модели — лишь малая часть реальной ML-системы, а вокруг него — сбор и проверка данных, извлечение признаков, конфигурация, инфраструктура обслуживания и мониторинг.[1] Специфические трудности:
- Три артефакта вместо одного. Результат зависит от кода, данных и гиперпараметров; изменение любого из них меняет модель.
- Тихие отказы. Модель не падает с ошибкой — она просто начинает ошибаться чаще, когда меняются входные данные (Дрейф данных).
- Недетерминированность. Повторное обучение даёт немного другую модель; без фиксации версий и случайных зёрен невозможно понять, что изменилось.
- Связь обучения и обслуживания. Признаки должны вычисляться одинаково при обучении и в продакшене, иначе возникает перекос (training-serving skew).
Жизненный цикл
| Этап | Что делается | Инструменты |
|---|---|---|
| Данные | сбор, проверка, версионирование, разметка | DVC, lakeFS, Great Expectations |
| Признаки | единые вычисления для обучения и инференса | Feature store (Feast) |
| Эксперименты | обучение, логирование параметров и метрик | MLflow, Weights & Biases |
| Конвейер обучения | автоматическое переобучение | Airflow, Kubeflow Pipelines, Dagster |
| Реестр моделей | версии, стадии (staging, production), метаданные | MLflow Model Registry |
| Развёртывание | API, пакетная обработка, на устройстве | KServe, BentoML, Triton, Docker, Kubernetes |
| Мониторинг | качество, дрейф, задержки, стоимость | Evidently, Prometheus, Grafana |
Уровни зрелости
Google описывает три уровня автоматизации:[2]
- Уровень 0 — ручной процесс. Исследователь обучает модель в ноутбуке и передаёт файл инженерам; переобучение редкое и ручное.
- Уровень 1 — автоматизированный конвейер обучения. Переобучение на свежих данных запускается по расписанию или по сигналу, модель проверяется и выкатывается автоматически (continuous training).
- Уровень 2 — CI/CD для конвейеров. Сам конвейер обучения тестируется, собирается и развёртывается автоматически, что позволяет быстро проверять новые идеи.
Мартин Фаулер и коллеги описали похожий подход под названием CD4ML — непрерывная поставка для машинного обучения.[3]
Пример: отслеживание экспериментов
import mlflow
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import f1_score
mlflow.set_experiment("churn")
with mlflow.start_run():
params = {"n_estimators": 300, "max_depth": 8}
model = RandomForestClassifier(**params).fit(X_train, y_train)
mlflow.log_params(params)
mlflow.log_metric("f1", f1_score(y_test, model.predict(X_test)))
mlflow.sklearn.log_model(model, name="model", registered_model_name="churn-rf")
Каждый запуск сохраняет параметры, метрики и саму модель; в веб-интерфейсе MLflow запуски можно сравнить, а лучшую модель — перевести в продакшен через реестр.[4]
Мониторинг
В продакшене отслеживают несколько слоёв:
- Сервисные метрики — задержка, ошибки, нагрузка, стоимость (как у любого сервиса, см. Мониторинг и алертинг).
- Данные на входе — пропуски, выход значений за привычные диапазоны, сдвиг распределений признаков.
- Предсказания — распределение ответов модели, доля уверенных предсказаний.
- Качество — истинные метрики, когда становятся известны правильные ответы (часто с задержкой).
Библиотеки вроде Evidently строят отчёты о дрейфе данных и качестве модели.[6] Сигнал о деградации запускает расследование или автоматическое переобучение.
LLMOps
С распространением языковых моделей появилось направление LLMOps. Модели обычно не обучают, а используют через API или дообучают; на первый план выходят версионирование промптов, оценка качества на наборах тестовых вопросов, трассировка цепочек вызовов агентов, контроль стоимости токенов и защита от prompt injection. Базовые принципы — воспроизводимость, автоматические проверки, мониторинг — остаются теми же.[5]
См. также
Источники
- D. Sculley et al. — Hidden Technical Debt in Machine Learning Systems (NeurIPS 2015)
- Google Cloud — MLOps: Continuous delivery and automation pipelines in machine learning
- Martin Fowler — Continuous Delivery for Machine Learning (CD4ML)
- MLflow — документация
- ml-ops.org — MLOps Principles
- Evidently — документация