сеньорчикОткрыть в Telegram
← вся теориятеория к собесу · ML System Design

ML System Design: мониторинг и дрифт

Зачем это спрашивают

Модель в проде умирает молча: сервис зелёный, а предсказания - мусор. Вопрос «как узнаешь о деградации, если лейблы приходят через месяц» отделяет тех, кто жил с моделью после деплоя.

// Ответ строится на слове «прокси»: сигналы, доступные до прихода правды.

Три слоя мониторинга и два дрейфа

Слои: системный (латентность, ошибки, RPS), данные (распределения фичей, пропуски, свежесть), качество (метрики на подтянувшихся лейблах). Только первый слой это мониторинг сервиса, не модели.

Data drift - сместился вход P(X): новая аудитория, сломанный логгер. Concept drift - сместилась сама связь P(Y|X): мир изменился. Первый ловится сразу по фичам, второй виден только по лейблам, и опаснее.

// Каждому предсказанию - лог фичей и версии модели: без этого не разберёшь инцидент и не соберёшь датасет для ретрейна.

data drift / concept drift
сместился вход P(X) / сместилась связь P(Y|X)
RPS
requests per second

Прокси-сигналы до прихода лейблов

Лейблы опаздывают: фрод подтверждается неделями, churn - месяцами. До них живут прокси: дрейф распределения скоров, доля уверенных предсказаний, дрейф топ-важных фичей, бизнес-метрики воронки.

Детект дрейфа: PSI (population stability index), KS-тест (Колмогорова-Смирнова), расстояния распределений против трейн-референса. Алерты - по топ-важным фичам, не по всем тремстам: алерт на каждую - команда отключит алерты через неделю.

// Мониторь сегменты: глобальная метрика держится, пока модель разваливается на важном сегменте - новый регион, новая платформа.

PSI
population stability index - сдвиг распределения против референса

Ретрейн - по триггеру и с воротами

Ретрейн запускают по расписанию или по триггеру (дрейф, деградация). Сам пайплайн ретрейна тоже мониторится: свежесть данных, сходимость, и обязательное сравнение с чемпионом до выкатки.

Автоматический ретрейн без ворот качества - усилитель инцидентов: сломанный логгер фичей испортил данные → модель переобучилась на мусоре → авто-деплой.

// Правило: любой ретрейн, ручной или авто, проходит одни и те же ворота - оценка на эталоне, сравнение с текущей версией, canary.

champion / challenger
текущая модель против кандидата - сравнение до выкатки

Как отвечать: «Лейблы приходят через месяц. Как заметишь деградацию раньше?»

Прокси-сигналами, доступными сразу. Данные: PSI по топ-важным фичам против трейн-референса, доля пропусков, свежесть фичей в сторе. Модель: распределение скоров - его сдвиг почти всегда предвестник беды, доля уверенных предсказаний, доля fallback-ответов. Продукт: метрики воронки, на которые модель влияет, конверсия из показа в клик отреагирует за дни, а не за месяц. Всё это по сегментам, не только глобально. А когда лейблы подтянутся - считаю фактическую метрику и закрываю петлю: прокси откалибровались об правду.

Три семейства прокси + сегменты + замыкание петли лейблами - полная система, а не «поставим алерт».

На чём валят

  • Мониторить только латентность и 200-е - модель может стабильно отвечать мусором.
  • Ждать лейблов, чтобы заметить деградацию, прокси существуют ровно для этого.
  • Алерт на дрейф каждой из 300 фичей - алерты отключат через неделю.
  • Автоматический ретрейн на данных, испорченных тем же инцидентом.

Проверьте себя

Пять вопросов из банка по этой подтеме. Всего их 11, остальные разбираются в тренажёре.

  1. #monitoring_drift1 / 5
    Чем concept drift отличается от data drift и почему различие практично?
    A)Concept drift и data drift — это на самом деле просто полные синонимы одного и того же явления
    B)Data drift — сдвиг P(X) при прежней связи; concept drift — сдвиг P(Y|X)
    C)Concept drift встречается лишь в задачах обработки текста (NLP)
    D)Data drift во всех без исключения случаях опаснее, чем concept drift
    показать ответ и разбор
    +B)Data drift — сдвиг P(X) при прежней связи; concept drift — сдвиг P(Y|X)

    // разбор: Пришли юзеры из нового канала (сдвиг X, скоринг может остаться верным) vs изменилось поведение после кризиса — те же фичи предсказывают другой исход (сдвиг P(Y|X)). Первый детектится без меток (PSI на фичах), второй — в основном по падению качества на свежих метках. Отсюда разные реакции: перекалибровка/довыборка vs полноценное переобучение и пересмотр фичей.

  2. #monitoring_drift2 / 5
    Что такое мониторинг ML-модели в проде?
    A)Разовая единичная проверка качества модели ровно один раз перед её самым первым запуском
    B)Постоянное отслеживание здоровья модели: дрейф, качество, ошибки, латентность
    C)Процесс однократного обучения модели на исторических данных
    D)Ручной просмотр кода модели ревьюером перед релизом в продакшн
    показать ответ и разбор
    +B)Постоянное отслеживание здоровья модели: дрейф, качество, ошибки, латентность

    // разбор: Модель в проде деградирует со временем: меняются данные и поведение пользователей (дрейф). Мониторинг — непрерывное отслеживание её здоровья: входные распределения, дрейф скоров, доля ошибок и пропусков, латентность, а по мере прихода меток — и качество. Это не разовая приёмка, а постоянный процесс с алертами.

  3. #monitoring_drift3 / 5
    Кредитный скоринг одобряет только «хороших», по отказникам исхода нет. Чем это ломает переобучение на будущих данных?
    A)Ничем: модель учится на одобренных заёмщиках, и этого достаточно для корректного переобучения в будущем
    B)Проблема в объёме данных — одобренных мало, достаточно дождаться, пока их накопится больше
    C)Selection bias: обучающая выборка — лишь одобренные (усечённая популяция); нужен reject inference или разведочные одобрения
    D)Достаточно один раз переобучить модель на исторических данных и больше её не трогать во избежание смещения
    показать ответ и разбор
    +C)Selection bias: обучающая выборка — лишь одобренные (усечённая популяция); нужен reject inference или разведочные одобрения

    // разбор: Модель формирует собственную будущую обучающую выборку: метки (дефолт/возврат) есть только у одобренных, а отклонённые в данные не попадают. Это selection bias — модель учится на усечённой, нерепрезентативной популяции и всё сильнее уверена в своей же зоне комфорта. Борются reject inference (моделирование исхода отказников), придержанной случайной выдачей кредитов для разведки и мониторингом сдвига популяции.

  4. #monitoring_drift4 / 5
    Чтобы мониторить точность модели в проде, нужны истинные метки. Как их обычно добывают?
    A)Истинные метки в проде взять неоткуда, поэтому качество модели после выката измерить не получится
    B)Их заменяет уверенность самой модели: если модель уверена в предсказании, оно и считается истинной меткой
    C)Логируют предсказания и позже соединяют их с фактическим исходом (доставлено/вернул/дефолт), когда он становится известен
    D)Берут метки прямо из обучающей выборки — если модель хорошо обучилась, то прод-метки ей после выката уже и не требуются
    показать ответ и разбор
    +C)Логируют предсказания и позже соединяют их с фактическим исходом (доставлено/вернул/дефолт), когда он становится известен

    // разбор: Для замера прод-точности предсказание логируют вместе с идентификатором и ждут наступления реального исхода (заказ доставлен/возвращён, кредит погашен/дефолт, клик/не клик), затем джойнят предсказание с фактом по ключу — так собирается размеченный поток для мониторинга. Исход часто приходит с лагом, поэтому до него следят за прокси и дрейфом входа. Уверенность модели не равна истине, а трейн-метки к проду не относятся.

  5. #monitoring_drift5 / 5
    Модель по офлайн-метрике хороша, а бизнес недоволен. Зачем мониторить бизнес-KPI рядом с ML-метрикой?
    A)ML-метрика (AUC, MAE) не равна бизнес-цели (выручка, отток); модель может расти по метрике, не двигая KPI или даже вредя ему
    B)Бизнес-KPI и ML-метрика — это одно и то же число, просто названное по-разному в разных отделах
    C)Бизнес-KPI мониторят строго вместо ML-метрики, потому что технические метрики модели в проде вообще ничего полезного не показывают
    D)Мониторинг KPI нужен для отчётности перед руководством и на решения о самой модели не влияет
    показать ответ и разбор
    +A)ML-метрика (AUC, MAE) не равна бизнес-цели (выручка, отток); модель может расти по метрике, не двигая KPI или даже вредя ему

    // разбор: Офлайн-метрика измеряет предсказательную способность, а не пользу для бизнеса: модель может улучшить AUC, но не сдвинуть выручку/удержание или даже навредить (например, оптимизируя клики ценой качества). Поэтому ML-метрики держат вместе с бизнес-KPI и guardrail'ами, проверяя, что технический рост переходит в целевой эффект. KPI и метрика — разные вещи, KPI не «вместо» и не только для отчёта.

дальше

Теорию прочитали. Навык ставится повторением

В Сеньорчике эта подтема идёт в ежедневных сессиях: движок возвращает её, пока ответы не станут уверенными, и ведёт прогресс отдельно по каждой подтеме. Теория внутри тоже бесплатна, лимит только на количество вопросов в день.