MLOps на собеседовании Data Scientist
Содержание:
Зачем MLOps на собесе DS
MLOps — про то, как ML-модель доставляется в продакшен и поддерживается. На собесе junior-DS глубоко не спросят, но базовое понимание ожидается. Middle+ — обязательно.
Что проверяют:
- Понимание пайплайна от обучения до prod
- Serving: batch vs online, latency
- Мониторинг и переобучение
- A/B-тесты моделей
DS, который умеет только тренировать модели в Jupyter — junior. DS, который понимает, как модель попадает к пользователю и как поддерживается — middle+.
Pipelines: train, validate, deploy
Полный цикл ML-модели:
- Data collection — собираем данные из source-систем
- Data validation — проверяем качество, schema, distribution
- Feature engineering — создаём фичи (часто из feature store)
- Training — обучаем модель
- Validation — проверяем метрики на held-out set
- Registration — сохраняем модель в model registry
- Deployment — выкатываем в serving
- Monitoring — следим за метриками в проде
Инструменты:
- MLflow, Kubeflow, Vertex AI — оркестрация
- DVC, lakeFS — версионирование данных
- Airflow — оркестрация ETL для ML
Model serving
Главное архитектурное решение — batch vs online.
Batch inference
Модель применяется на больших объёмах данных раз в N часов/дней. Результаты сохраняются в БД, фронт читает оттуда.
Плюсы: простой, дёшев. Минусы: задержка от события до предсказания.
Подходит для: рекомендации (раз в день), churn prediction, scoring.
Online inference
Модель отвечает на запрос в реальном времени. Latency 10-100 ms.
Плюсы: актуальные предсказания. Минусы: нужна инфраструктура (REST/gRPC, autoscaling, monitoring).
Стек: FastAPI/BentoML/TorchServe + Kubernetes + Prometheus.
Подходит для: anti-fraud, ad ranking, dynamic pricing.
Streaming inference
Гибрид. Модель применяется к стриму событий (Kafka), результат пишется в БД или другой стрим.
На собесе спросят: «Когда выберешь batch, когда online?» Ответ: если допустима задержка > 1 час и предсказание не зависит от свежайших фичей — batch. Иначе online.
Мониторинг моделей
В проде модель деградирует со временем. Что мониторим:
Технические метрики
- Latency (p50, p95, p99)
- Error rate (5xx, timeouts)
- QPS (queries per second)
- Memory, CPU
ML-метрики
- Distribution входных фичей (feature drift)
- Distribution предсказаний (prediction drift)
- Качество предсказаний (когда есть ground truth)
- Калибровка (для классификации)
Бизнес-метрики
- CTR, conversion для рекомендаций
- True positive rate для anti-fraud
- Revenue lift
Data drift и model drift
Data drift
Распределение входных данных меняется. Например, средний возраст пользователей вырос, или появилась новая категория продуктов.
Метрики drift:
- PSI (Population Stability Index) — для категориальных и binned numerical
- KL divergence, JS divergence — для распределений
- Kolmogorov-Smirnov test — для непрерывных
Model drift / concept drift
Связь между фичами и target меняется. Модель работала, теперь работает хуже.
Например: covid изменил поведение пользователей в e-commerce, старая модель recommendations стала менее точной.
Решение — переобучение по расписанию или триггеру (drift detected).
A/B тесты моделей в проде
Перед раскатом новой модели — A/B-тест. Стандарт:
- Контрольная группа — текущая модель (baseline)
- Тестовая группа — новая модель
- Случайное разделение по user_id (50/50, 90/10 на старте)
- Метрики — primary (бизнес-метрика), secondary (ML-метрика), guardrails (latency, error rate)
- Длительность — пока не наберём statistical power
На собесе спросят: «Что если модель показывает лучший recall, но хуже precision?» Ответ: смотрим, какая метрика была primary, и какие guardrails. Финальный решение принимается по primary, но с проверкой, что guardrails не сломаны.
Multi-armed bandit
Альтернатива A/B — динамически перераспределяем трафик в пользу лучшей модели. Используется для рекомендаций и ads.
Эксперимент-трекинг и feature store
MLflow / Weights & Biases
Записывают каждый эксперимент: гиперпараметры, метрики, артефакты, версия датасета. Без этого — хаос.
Feature store
Централизованное хранение фичей с consistency между training и serving.
Главная проблема без feature store: фича вычислялась одним способом в обучении (на pandas), другим — в проде (на Spark/streaming). Result — silent prediction errors.
Инструменты: Feast, Tecton, Hopsworks. В РФ — обычно собственные решения на ClickHouse или Hive.
Частые ошибки
Тренировать модели только в Jupyter. Без воспроизводимого пайплайна — модель не попадёт в prod.
Не версионировать данные. Если данные меняются, и нет версии — не можешь воспроизвести эксперимент.
Игнорировать latency. Тяжёлая модель с лучшим качеством — может быть неприемлема при requirement 50ms.
Не мониторить input distribution. Distribution shift ловится за пару дней, если есть мониторинг. Без мониторинга — спустя месяцы, когда падают бизнес-метрики.
Деплоить без A/B. Новая модель может быть хуже на distribution prod (отличается от train). A/B — единственный надёжный способ проверки.
FAQ
Сколько MLOps нужно для junior DS?
Минимум: понимать batch vs online inference, использовать MLflow для tracking, уметь развернуть модель через FastAPI.
Сколько MLOps для middle?
Дополнительно: feature store basics, drift detection, A/B-тесты моделей, deployment patterns.
Чем MLOps отличается от DevOps?
DevOps — деплой кода. MLOps — деплой моделей + данных. Главное отличие — модели деградируют без изменений в коде, потому что меняются данные. Поэтому мониторинг и переобучение — часть процесса.
Это официальная информация?
Нет. Статья основана на индустриальных практиках и опыте кандидатов.