Обученная модель это примерно половина работы. Senior DS и ML-инженеров спрашивают про деплой, мониторинг, дрейф и переобучение, а в отдельной секции просят спроектировать ML-систему целиком.
Режимы инференса
- Батч: прогнозы для всех объектов раз в сутки, результат в таблице. Дёшево и просто: скоринг базы для рассылки, прогноз спроса.
- Онлайн: ответ на текущее событие за десятки миллисекунд: антифрод платежа, поиск, рекомендации.
- Гибрид: тяжёлые признаки считаются батчем, свежие в реальном времени.
Training-serving skew
Модель отлично прошла валидацию, а с первого дня в проде хуже. Частая причина: признаки в проде считаются иначе, чем в обучении (другой код, часовые пояса, единицы, задержки данных, обработка пропусков). Проверка: логировать признаки в проде и сравнивать с офлайн-расчётом. Профилактика: общий код признаков и feature store с point-in-time корректностью.
Дрейф
- Data drift: меняется распределение признаков P(x). Видно без меток.
- Concept drift: меняется связь P(y | x), например мошенники сменили схему. Видно по падению качества, когда приходят метки.
Мониторинг, когда метки приходят поздно:
- распределения признаков, доля пропусков, новые категории;
- распределение скоров, доля одобрений или срабатываний;
- ранние прокси-метрики качества;
- технические метрики: латентность, ошибки, нагрузка.
PSI (Population Stability Index):
PSI = Σ (a - e) · ln(a / e) по бинам долей
Ориентиры: меньше 0.1 стабильно, 0.1-0.25 умеренный сдвиг, больше 0.25 значительный. Пустые бины сглаживают. Пороги эвристические.
Переобучение и выкатка
- Частоту переобучения выбирают по тому, как быстро стареет модель на истории.
- Новую модель сравнивают со старой на свежем отложенном периоде.
- Shadow-режим: модель получает реальный трафик и логирует ответы, но не принимает решений. Ловит skew и проблемы задержки без риска.
- Канареечный запуск и A/B для измерения эффекта.
- Версионирование кода, данных, параметров и артефактов (MLflow, DVC, model registry), чтобы воспроизвести и откатить.
Модель меняет свои данные
Антифрод блокирует подозрительные платежи, и по ним не приходит метка. Обученная на пропущенных платежах новая модель «забывает» паттерны, которые ловила старая. Решения: небольшой случайный holdout без вмешательства модели, логирование вероятностей решений, ручная разметка части заблокированного.
Как вести секцию ML system design
- Требования: бизнес-цель, действие по прогнозу, цена ошибок, латентность, объёмы.
- Метрики: онлайн (деньги, конверсия) и офлайн (PR-AUC, NDCG, WAPE), связь между ними.
- Данные и метки: откуда, с какой задержкой, смещения (selective labels, exposure bias).
- Признаки: батчевые и онлайновые, point-in-time.
- Модель: бейзлайн, затем основная; архитектура (двухэтапная для рекомендаций, правила плюс модель для антифрода).
- Валидация: по времени, по группам, отложенный период.
- Прод: инференс, feature store, фолбэки, мониторинг, переобучение, A/B.
Типичные кейсы: антифрод платежей, кредитный скоринг, прогноз спроса, модерация объявлений, рекомендации, поиск и ранжирование, ETA доставки.
Частые ошибки
- Не задать вопрос о действии и цене ошибок.
- Забыть про задержку меток и смещение выборки.
- Описать только модель и ничего про данные, мониторинг и запуск.
- Не предусмотреть фолбэк при недоступности модели.
Что спросят на собесе
- Чем data drift отличается от concept drift, как мониторить без меток.
- Что такое training-serving skew и как его избежать.
- Как и когда переобучать, зачем shadow и A/B.
- Посчитать PSI.
- Спроектировать антифрод, скоринг, прогноз спроса или модерацию.