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, остальные разбираются в тренажёре.
- Чем 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 полноценное переобучение и пересмотр фичей.
- Что такое мониторинг ML-модели в проде?A)Разовая единичная проверка качества модели ровно один раз перед её самым первым запускомB)Постоянное отслеживание здоровья модели: дрейф, качество, ошибки, латентностьC)Процесс однократного обучения модели на исторических данныхD)Ручной просмотр кода модели ревьюером перед релизом в продакшн
показать ответ и разбор
+B)Постоянное отслеживание здоровья модели: дрейф, качество, ошибки, латентность// разбор: Модель в проде деградирует со временем: меняются данные и поведение пользователей (дрейф). Мониторинг — непрерывное отслеживание её здоровья: входные распределения, дрейф скоров, доля ошибок и пропусков, латентность, а по мере прихода меток — и качество. Это не разовая приёмка, а постоянный процесс с алертами.
- Кредитный скоринг одобряет только «хороших», по отказникам исхода нет. Чем это ломает переобучение на будущих данных?A)Ничем: модель учится на одобренных заёмщиках, и этого достаточно для корректного переобучения в будущемB)Проблема в объёме данных — одобренных мало, достаточно дождаться, пока их накопится большеC)Selection bias: обучающая выборка — лишь одобренные (усечённая популяция); нужен reject inference или разведочные одобренияD)Достаточно один раз переобучить модель на исторических данных и больше её не трогать во избежание смещения
показать ответ и разбор
+C)Selection bias: обучающая выборка — лишь одобренные (усечённая популяция); нужен reject inference или разведочные одобрения// разбор: Модель формирует собственную будущую обучающую выборку: метки (дефолт/возврат) есть только у одобренных, а отклонённые в данные не попадают. Это selection bias — модель учится на усечённой, нерепрезентативной популяции и всё сильнее уверена в своей же зоне комфорта. Борются reject inference (моделирование исхода отказников), придержанной случайной выдачей кредитов для разведки и мониторингом сдвига популяции.
- Чтобы мониторить точность модели в проде, нужны истинные метки. Как их обычно добывают?A)Истинные метки в проде взять неоткуда, поэтому качество модели после выката измерить не получитсяB)Их заменяет уверенность самой модели: если модель уверена в предсказании, оно и считается истинной меткойC)Логируют предсказания и позже соединяют их с фактическим исходом (доставлено/вернул/дефолт), когда он становится известенD)Берут метки прямо из обучающей выборки — если модель хорошо обучилась, то прод-метки ей после выката уже и не требуются
показать ответ и разбор
+C)Логируют предсказания и позже соединяют их с фактическим исходом (доставлено/вернул/дефолт), когда он становится известен// разбор: Для замера прод-точности предсказание логируют вместе с идентификатором и ждут наступления реального исхода (заказ доставлен/возвращён, кредит погашен/дефолт, клик/не клик), затем джойнят предсказание с фактом по ключу — так собирается размеченный поток для мониторинга. Исход часто приходит с лагом, поэтому до него следят за прокси и дрейфом входа. Уверенность модели не равна истине, а трейн-метки к проду не относятся.
- Модель по офлайн-метрике хороша, а бизнес недоволен. Зачем мониторить бизнес-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 не «вместо» и не только для отчёта.
дальше
Теорию прочитали. Навык ставится повторением
В Сеньорчике эта подтема идёт в ежедневных сессиях: движок возвращает её, пока ответы не станут уверенными, и ведёт прогресс отдельно по каждой подтеме. Теория внутри тоже бесплатна, лимит только на количество вопросов в день.