Что такое MLOps и как он связан с DevOps?

«Что такое MLOps и как он связан с DevOps?» — вопрос из категории Архитектура и DevOps-практики, который задают на 24% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

MLOps (Machine Learning Operations) — это культура и набор практик, направленных на надежное и эффективное развертывание, мониторинг и поддержку машинного обучения (ML) в production. Это адаптация принципов DevOps (CI/CD, автоматизация, мониторинг, коллаборация) к специфическому жизненному циклу ML-систем, где помимо кода есть данные и модели.

Ключевые отличия и дополнения к классическому DevOps:

Аспект DevOps MLOps
Версионирование Код, конфиги Код + Данные + Модели + Гиперпараметры
Тестирование Unit, интеграционные тесты + Тесты на качество данных (дрейф), тесты на fairness модели
Мониторинг Метрики приложения (латентность, ошибки) + Метрики модели (accuracy, precision/recall), мониторинг дрейфа данных
Развертывание Контейнеризация, оркестрация + Канареечное/теневое развертывание моделей, A/B-тесты
Паipeline Build -> Test -> Deploy + Data Validation -> Train -> Validate Model -> Deploy

Пример архитектуры MLOps-пайплайна с использованием GitLab CI и DVC:

# .gitlab-ci.yml
stages:
  - data
  - train
  - evaluate
  - deploy

data_versioning:
  stage: data
  image: dvcorg/dvc:latest
  script:
    - dvc pull # Загружаем версионированные данные из удаленного хранилища (S3)
    - python scripts/validate_data.py # Проверяем качество и схему данных

train_model:
  stage: train
  image: python:3.9
  script:
    - pip install -r requirements.txt
    - python train.py # Обучаем модель, на выходе model.pkl
    - dvc add model.pkl # Версионируем артефакт модели
    - dvc push

evaluate_model:
  stage: evaluate
  script:
    - python evaluate.py # Считаем метрики на тестовом наборе
    - python tests/model_tests.py # Запускаем специфичные тесты модели
  artifacts:
    reports:
      junit: report.xml

deploy_to_staging:
  stage: deploy
  script:
    - docker build -t ml-model:${CI_COMMIT_SHORT_SHA} .
    - kubectl set image deployment/ml-model-deploy ml-model=ml-model:${CI_COMMIT_SHORT_SHA} --namespace=staging

Основные инструменты стека MLOps:

  • Версионирование данных: DVC, Pachyderm, Delta Lake.
  • Экспериментирование и трекинг: MLflow, Weights & Biases, Neptune.ai.
  • Пайплайны и оркестрация: Kubeflow Pipelines, Apache Airflow, Metaflow.
  • Развертывание и обслуживание: Seldon Core, KServe, TorchServe, Triton Inference Server.

Цель MLOps — превратить разовое создание модели в предсказуемый, управляемый и воспроизводимый инженерный процесс.