Мониторинг и отладка (B7)
Модель уехала в прод — и начинается наблюдаемость: данные дрейфуют, каталог обновляется, сама модель влияет на свои будущие данные. Здесь — реальный дашборд этого сервиса и интерактивный симулятор инцидентов по схеме «симптом → причина → проверка → фикс».
⚠ Верхний дашборд — настоящие числа (живой замер на моделях). Инциденты ниже — синтетика с иллюстративными значениями: цель — плейбук отладки, а не фейковая точность. Бизнес/онлайн-метрики (CTR/CVR/retention) требуют живого трафика и здесь не считаются.
загрузка мониторинга…
Теория простым языком
Модель прошла offline-оценку и уехала в прод — и вот тут начинается самое интересное. Мир дрейфует, каталог обновляется, а сама модель влияет на данные, на которых потом учится. Мониторинг — это дисциплина замечать деградацию до того, как её заметит бизнес, и уметь пройти путь симптом → причина → проверка → фикс.
Что вообще мониторить: четыре слоя
Проблема может жить на любом уровне — и симптомы у них разные:
▸Почему offline-метрик недостаточно после запуска
Дрейф и train/serve skew
▸Формула PSI и пороги
по бинам. Практические пороги: <0.1 стабильно, 0.1–0.25 умеренный сдвиг, >0.25 значимый дрейф. Но это эвристика: пороги калибруют под домен, объём трафика, сезонность и конкретную фичу. И сравнивать лучше с релевантным baseline-окном (тот же день недели / час / сезон), а не всегда «сегодня против вчера». Тот же приём годится для train-vs-serving распределения фичи.
Деградация во времени: система влияет на свои же данные
Самое коварное — петля обратной связи: рекомендуем популярное → его больше кликают → оно ещё популярнее, а хвост не получает шанса. Coverage и diversity сползают неделя к неделе. Мы уже видели это с двух сторон:
Плейбук отладки и алертинг
Хороший инцидент-репорт идёт по цепочке: симптом (что заметили) → ранжированные причины (гипотезы) → проверки (как отличить одну от другой) → фикс. Выше на странице — интерактивный симулятор ровно по этой схеме на четырёх канонических инцидентах.
Алертить лучше на ранние диагностические (proximal) сигналы (freshness lag, PSI, p99), которые ближе к причине, чем выручка — но помни, что сам монитор причинность не доказывает (см. ниже). И на p99, а не только на среднее: медиана может быть в норме, когда хвост уже горит.
Сильные стороны
- Ловит деградации до того, как их заметит бизнес.
- Локализует слой проблемы (данные / модель / система / бизнес) → быстрее чинить.
- Guardrails не дают «выиграть» краткосрочную метрику ценой долгосрочной.
Слабые стороны
- Онлайн-эффект офлайн не измерить — нужен живой трафик и A/B.
- Слишком чувствительные алерты → усталость от алертов; слишком грубые → пропуски.
- Причинность требует эксперимента: корреляция монитора ≠ причина.
⚠️ Что может пойти не так
- Смотреть только на среднее качество: деградация часто прячется в хвосте (p99) или в сегменте (long-tail, новые юзеры).
- Мониторить модель, но не данные: свежесть/дрейф фич ломают качество тихо и без ошибок в логах.
- Игнорировать петлю обратной связи: без exploration метрики какое-то время растут, а система схлопывается.
- Алерт на выручку вместо ранних причинных сигналов — узнаёшь о проблеме последним.
- Считать, что offline-победа = online-победа: это проверяют A/B-тестом, а не NDCG.
🧠 Проверь себя: Офлайн-метрики модели в норме, latency в норме, но онлайн-качество после деплоя резко упало. Куда смотреть в первую очередь?
Где это в дорожной карте
Это B7 — мониторинг и отладка: наблюдаемость поверх всей воронки. Дальше — честная онлайн-оценка (A/B-тесты, interleaving) и counterfactual/IPS-оценка смещённых логов, а также exploration/bandits как системное лекарство от петли обратной связи.