Модель тихо деградирует в проде и никто этого не видит
ML-инженер объясняет, почему рабочая модель молча теряет качество через полгода после запуска и какие сигналы ловить, чтобы не узнать об этом от разъярённого клиента.
Что такое дрейф на пальцах?
Модель училась на данных за один период, а мир поехал дальше. Мы делали скоринг заявок, и после смены рекламных каналов к нам пошла совсем другая публика. Веса те же, а входные данные другие. Формально сервис работает, метрики API зелёные, а бизнес-качество тихо сползает вниз.
Как это обычно обнаруживают?
Хуже всего, когда обнаруживает клиент. У нас так и вышло в первый раз: продажи заметили рост отказов раньше нас. Стыдно. После этого мы завели мониторинг не только доступности, но и распределений: следим, как меняются входные признаки и как плывёт разброс предсказаний.
Что конкретно вы мониторите?
Три слоя. Первый: живой ли сервис, латентность, ошибки. Второй: сдвиг распределений входа и выхода, тут помогает тест Колмогорова-Смирнова и индекс стабильности популяции. Третий, самый честный, отложенные метрики качества, когда приезжает реальный факт. Первые два кричат сразу, третий подтверждает через недели.
Как часто переобучаете?
Не по календарю, а по триггеру. Раньше был крон раз в месяц, и это глупость: то переучиваешь без нужды, то опаздываешь. Сейчас переобучение стартует, когда сдвиг признаков пробивает порог. Плюс обязательный теневой прогон новой модели рядом со старой, прежде чем пускать её на трафик.
Ложные тревоги не задалбывают команду?
Задалбывали, пока пороги были тупые. Каждый мелкий сдвиг будил дежурного, тот привыкал их игнорить, и в итоге проспал настоящую поломку. Пришлось развести уровни: небольшой дрейф просто пишем в отчёт, а человека дёргаем, только когда сдвиг устойчивый и бьёт по важному признаку. Меньше шума, больше доверия к алертам.
Главная ошибка новичков в MLOps?
Считать, что задеплоить это финиш. Деплой это старт. Модель в проде надо кормить, взвешивать и иногда усыплять. И ещё: держите версии данных, а не только версии кода. Когда качество упадёт, первый вопрос будет не «что в коде», а «на чём это вообще училось».