Как выкатывать новые признаки и модели в сервис ранжирования
Команда хочет добавить новые признаки или модель в ранжирующий сервис. Как сделать это безопасно?
Ответить самому
Сначала сформулируйте ответ как на собеседовании, затем откройте разбор и оцените себя.
Короткий ответ
Нужны feature contracts, offline backfill, online freshness checks, shadow/canary, A/B и мониторинг latency/error/empty results. Новая фича не должна ломать старую модель, если она пустая или запаздывает.
Полный разбор
Сначала фиксируется контракт признака: тип, диапазон, default, freshness, источник, кто владелец и как выглядит backfill. Offline-датасет и online serving должны считать одно и то же, иначе модель пройдет offline и сломается в проде.
Перед полным rollout полезны shadow scoring и canary: посчитать фичу и score без влияния на выдачу, затем включить малый процент трафика. Мониторинг должен ловить latency, error rate, долю null/default, свежесть, распределение признака и изменение top-K.
Для A/B нужно держать версионирование модели и признаков, возможность rollback и fallback на старую модель. Если новая фича недоступна, сервис должен отдавать нормальный ответ, а не падать или возвращать пустую выдачу.
Теория
В сервисе ранжирования опасны не только плохие веса модели, но и рассинхрон offline/online признаков.
Типичные ошибки
- Выкатить фичу без default и freshness monitoring.
- Не проверить распределение online-признака против train.
- Не иметь быстрого rollback модели или feature flag.