Как правильно обновлять модель: менять старую на новую или использовать более разумный подход?
Что проверяют
Понимаете ли вы, что модель в проде нельзя просто перезаписать файлом с лучшим скором на тесте. Хотят услышать про сравнение с текущей версией, постепенный выкат и откат. Следом часто спрашивают, по какой метрике вы решите, что новая модель победила.
Как отвечать
Опишите схему champion/challenger: текущая модель остаётся главной, пока новая не докажет преимущество на нескольких ступенях.
- офлайн-проверка: обе модели считаются на одной свежей отложенной выборке с разбиением по времени, а не на старом тесте. Смотрите не только общую метрику, но и срезы по сегментам, где регрессия прячется за средним;
- реестр моделей: каждая версия хранится вместе с кодом признаков, данными и метриками, например в MLflow Model Registry. В свежих версиях MLflow вместо стадий используют алиасы вроде
champion, и откат сводится к переносу алиаса на прошлую версию; - теневой режим: новая модель получает копию трафика, её предсказания пишутся в лог, но на пользователей не влияют. Так ловятся расхождения признаков между обучением и продом и проблемы с задержкой;
- канареечный выкат и A/B-тест: сначала небольшая доля трафика, затем сравнение по бизнес-метрике с заранее рассчитанным размером выборки;
- мониторинг: дрейф входных данных (например, PSI), распределение предсказаний, задержка, доля ошибок.
Отдельно скажите, как переобучаете: полностью на скользящем окне или дообучением, по расписанию или по сигналу дрейфа. Вывод: замена допустима, но как последний шаг после проверок и с готовым откатом.
Где спотыкаются
Сравнивают модели только по офлайн-метрике на старом тесте. Рост ROC AUC на тысячную долю не гарантирует роста конверсии или выручки.
Забывают про тех, кто пользуется скором. Если порог отсечения подбирали под старую модель, у новой другое распределение вероятностей, и порог нужно калибровать заново.
Не оставляют пути назад: старая версия удалена, признаки поменялись, и откатиться за минуты уже нельзя.