Следить за моделью нужно на четырёх слоях: работает ли сервис, не изменились ли входные данные, не изменились ли ответы и верны ли они. Первые три слоя считает машина без участия человека. Четвёртый требует правильных ответов, а они приходят поздно или не приходят вовсе, поэтому его собирают из выборочной проверки людьми и сигналов от пользователей. К каждому слою привязаны порог, адресат оповещения и готовый откат.

Что такое MLOps в целом, описано в статье «Что такое MLOps простыми словами». Здесь только эксплуатация: какие графики заводить, когда они означают беду и что делать дальше. Услуга описана на странице «MLOps и развёртывание моделей».

Коротко. Один график доступности ничего не говорит о качестве. Заведите четыре слоя: сервис, входные данные, выход модели и проверенное качество. Пороги берите из периода приёмки, а не из головы. Откат готовьте до выкатки новой версии: его не проверяют в момент аварии.

Четыре слоя мониторинга: что измеряем и кто смотрит

Типичная ошибка: у модели есть мониторинг сервера (процессор, память, задержка), и на этом всё. Сервер здоров, модель ошибается, и о проблеме узнают от пользователей. Слоёв четыре, и каждый отвечает на свой вопрос.

СлойВопросЧто измеряемКто получает сигнал
СервисОтвечает ли системаДоступность, время ответа, доля ошибок, длина очереди, загрузка видеокарты или процессораЭксплуатация, как для любого сервиса
Входные данныеПохожи ли запросы на те, на которых модель проверялиДоля пропусков в полях, диапазоны значений, длина текстов, набор категорий, доля новых значенийВладелец данных и разработчик модели
Выход моделиНе изменились ли ответыРаспределение предсказаний, доля класса «не знаю» или низкой уверенности, длина ответов, доля отказов отвечатьРазработчик модели
КачествоВерны ли ответыДоля верных ответов на выборке, проверенной людьми; доля исправлений оператором; жалобы пользователейВладелец процесса, разработчик модели

Первые два слоя дёшевы и должны быть в первый день. Третий добавляется вместе с выкаткой: достаточно сохранять выход модели и раз в сутки считать несколько чисел. Четвёртый дорог, потому что требует людей, поэтому его проектируют отдельно (см. ниже). Если бюджет ограничен, начните с выхода и с выборочной проверки: именно они ловят деградацию раньше всего.

Виды дрейфа и что с ними делать

Слово «дрейф» обозначает три разные ситуации, и действия при них различаются. Если не разделять их, любая тревога заканчивается одним решением: «переобучить».

Вид дрейфаЧто произошлоКак заметитьЧто делать
Дрейф входных данныхЗапросы стали другими: новый ассортимент, другая форма заявок, новый каналСдвиг распределений входов относительно периода приёмкиПроверить качество на новых данных; если упало, дообучить на свежей выборке
Дрейф смыслаТе же входы, но правильный ответ изменился: новые правила, другая политика, изменился критерий бракаВходы стабильны, а доля исправлений операторами растётОбновить разметку и правила; одним переобучением на старых метках не исправить
Поломка источникаПоле перестало заполняться, сменилась единица измерения, изменился формат файлаРезкий скачок на одном признаке, пропуски, новое значение категорииИсправить источник, а не модель; поставить проверку входа с отказом
СезонностьПериодические изменения: сезон, конец месяца, распродажиПовторяется по календарю, известна заранееЗакладывать в модель и в пороги, не считать тревогой

Поломка источника встречается чаще, чем кажется, и дороже всего обходится, когда её принимают за дрейф и переобучают модель на сломанных данных. Поэтому порядок такой: сначала проверка входа, потом сравнение распределений, и только затем разговор о новой версии. Для сравнения распределений достаточно простых статистик по признакам: доли категорий, квантили, индекс стабильности популяции или критерий Колмогорова — Смирнова. Главное не метод, а то, что сравнение идёт с зафиксированным эталоном.

Как оценивать качество, когда правильных ответов ещё нет

Правильный ответ часто становится известен через недели: заказ состоится или нет, оборудование откажет или нет, заявка закроется с другой категорией. Ждать нельзя, поэтому качество собирают из нескольких источников, и ни один не заменяет остальных.

  • Выборочная проверка людьми. Каждую неделю человек получает небольшую случайную выборку ответов и отмечает верные и неверные. Выборка достаточна, чтобы заметить сдвиг, но мала для точной оценки; её нужно брать и из уверенных ответов, и из неуверенных.
  • Исправления операторов. Если оператор меняет результат модели, это бесплатная разметка. Её нужно сохранять в хранилище с первого дня, вместе с версией модели.
  • Сигналы пользователей. Жалобы, повторные обращения, отмена результата. Это грубый, но быстрый признак.
  • Отложенная правда. Когда приходит фактический исход (оборудование отказало, заказ выкуплен), его сопоставляют с ранее сделанным предсказанием. Для этого предсказания хранятся с идентификатором объекта и временем.
  • Контрольный набор. Фиксированная размеченная выборка, на которой прогоняют каждую версию перед выкаткой. Она не заменяет живой мониторинг, но показывает, что новая версия не хуже старой.

Качество на контрольном наборе и качество в бою различаются, и это нормально: набор устаревает вместе с данными. Если разрыв растёт, контрольный набор пора обновить, а не игнорировать мониторинг. Как собрать выборку и какие метрики считать, разобрано в статье «Как измерить точность распознавания документов»; те же принципы подходят и для других моделей.

Пороги и оповещения: как не утонуть в ложных тревогах

Оповещение, на которое никто не реагирует, хуже его отсутствия: люди учатся его игнорировать. Поэтому пороги задаются по правилам, а не по настроению.

  1. Эталон берётся из приёмки. Распределения входов и выходов, зафиксированные в период испытаний, служат точкой отсчёта. Эталон хранится рядом с версией модели.
  2. Порог привязан к цене ошибки. Для задачи, где ошибка стоит недорого, допускается заметный дрейф; для задачи, где ошибка ведёт к простою линии или неверной отгрузке, порог строже. Его определяет владелец процесса, а не разработчик.
  3. Окно усреднения шире шума. Один плохой час не повод для тревоги. Сигнал строится по скользящему окну: сутки для потоковых задач, неделя для редких.
  4. Два уровня. Предупреждение уходит в отчёт, критическое оповещение — человеку. Критических сигналов должно быть мало, иначе они перестанут быть критическими.
  5. У каждого сигнала есть адресат и действие. В описании оповещения записано, что делает получатель: проверяет источник, переключает на правило, собирает внеплановую выборку.

Круглосуточной смены у нас нет, и если ваш процесс требует реакции ночью, это решается на вашей стороне: оповещение уходит дежурному у вас, а откат запускается одной командой по инструкции. Пакеты сопровождения описаны на странице «Сопровождение ПО».

Откат: четыре способа вернуться к рабочему состоянию

Откат готовят до выкатки. Если он впервые проверяется в момент аварии, это лотерея. Нужны версии модели, версии данных обработки и переключатель между ними.

СпособКак работаетКогда годитсяЦена и риск
Возврат на предыдущую версиюПереключатель направляет трафик на прошлую модель, которая лежит в реестре и готова к работеНовая версия ухудшила результат; прошлая проверена и подходит для текущих данныхНизкая, если старая версия хранится и совместима с текущим входом
Откат на правилоВместо модели временно работает простое правило или ручной режимСломан источник, модель непригодна на новых данных, исправление займёт времяКачество ниже, зато поведение предсказуемо; правило нужно сохранять живым
Теневой режимНовая версия получает те же запросы и считает ответы, но результат не используетсяПеред выкаткой: сравнить новую и старую версии на живом потоке без рискаДвойная нагрузка на оборудование на время проверки
Постепенная выкаткаНовая версия получает небольшую долю потока, доля растёт при хороших показателяхМодель с заметной ценой ошибки; есть поток достаточного размераНужен переключатель и сравнение групп; сложнее при редких событиях

Откат должен быть проверен вместе с данными, которые модель получает на входе. Версия модели, которой нужна другая обработка признаков, не заработает на текущем входе, если обработка тоже не откатилась. Поэтому версии модели и обработки хранятся вместе. Правило об откате записывается заранее: при каком сигнале и кто принимает решение, чтобы в аварии не искали ответственного. Почему многие пилоты не доходят до эксплуатации именно из-за отсутствия такого регламента, разобрано в статье «Почему ИИ-пилоты не доходят до продакшена».

Чем отличается мониторинг языковой модели

У приложения на языковой модели (ассистент, поиск по документам, извлечение полей) нет привычной метрики точности. Вместо неё используются другие измерения.

  • Набор контрольных вопросов. Размеченный список запросов с ожидаемыми ответами или критериями. Его прогоняют при каждом изменении промпта, модели или базы знаний и сравнивают с предыдущим результатом.
  • Качество поиска отдельно от качества ответа. Если система ищет фрагменты и по ним отвечает, нужно измерять, нашлись ли нужные фрагменты, и только потом, верно ли ответила модель. Ошибка чаще сидит в поиске. Устройство описано в статье «Архитектура LLM-приложения».
  • Версия внешней модели. Если используется внешний программный интерфейс, провайдер может обновить модель, и ответы изменятся без вашего участия. Для данных ограниченного доступа такие модели чаще не подходят по требованиям заказчика, а у модели на вашем сервере версия зафиксирована вами.
  • Журнал запросов и ответов. Он нужен для разбора спорных случаев, но содержит данные пользователей, поэтому хранится на ваших серверах с ограничением доступа и сроком хранения.
  • Доля ответов «не знаю». Резкий рост означает, что база знаний устарела или поиск сломан; резкое падение — что модель стала отвечать на всё подряд.

Порог уверенности и поведение при незнании разобраны в статье «Порог уверенности модели», а защита от вредных запросов — в статье «Чек-лист безопасности LLM перед запуском».

Мониторинг только на бумаге: признаки

Мониторинг можно нарисовать на схеме и не получить пользы. Вот признаки, что именно это произошло:

ПризнакЧто за ним стоитЧто проверить
Есть панель, но никто не знает, кто на неё смотритСигнал не привязан к человекуКто получает оповещение и что сделает за час
Пороги взяты из примеров в документацииЭталон не связан с вашими даннымиОткуда взято значение и когда оно пересчитывалось
Качество последний раз считали на приёмкеЖивой проверки нет, деградация идёт незаметноКогда последний раз человек проверял выборку ответов
Исправления операторов не сохраняютсяБесплатная разметка потерянаГде лежат исправления и привязаны ли они к версии модели
Откат ни разу не запускалиРабочий ли он, неизвестноКогда в последний раз возвращались на предыдущую версию на тестовом стенде
Модель обновили, а контрольный набор нетСравнение идёт с устаревшим эталономКогда последний раз обновляли контрольный набор

Минимум на первую неделю после запуска

Полноценная платформа нужна не всем. Для одной-двух моделей достаточно набора, который собирается за несколько дней:

  1. Сохранять каждый запрос и ответ вместе с версией модели и временем.
  2. Проверять вход: обязательные поля, диапазоны, формат; при нарушении отказывать с понятным сообщением.
  3. Раз в сутки считать несколько чисел: размер потока, доля пропусков, распределение предсказаний, доля неуверенных ответов.
  4. Раз в неделю отправлять человеку случайную выборку ответов на проверку и считать долю верных.
  5. Сохранять исправления операторов в отдельную таблицу с версией модели.
  6. Хранить предыдущую версию модели и инструкцию возврата на неё; один раз проверить возврат на тестовом стенде.
  7. Записать пороги и адресатов оповещений на одной странице вместе с эталоном приёмки.

Это не заменяет MLOps-платформу, но закрывает самые частые причины молчаливой деградации. Расширять набор имеет смысл, когда моделей больше пяти или они обновляются регулярно; о том, когда нужна платформа, сказано в статье про MLOps. Вопрос о том, когда модель стоит остановить, а не чинить, разобран в статье «Когда останавливать ИИ-пилот».

Что делаем мы и с чего начать

Начинаем с обследования: 200 000 ₽ и 2–3 недели за один-два процесса, 350 000 ₽ и 3–4 недели, если моделей и систем несколько. На выходе документ с метриками качества и порогами, схемой сбора правильных ответов, регламентом отката и списком того, что нужно собрать за первую неделю. Стоимость вычитается из первого этапа, если продолжаете с нами, а документом можно пользоваться и без нас.

Мониторинг строим в вашем контуре и передаём вместе с исходниками. Мы не продаём готовую платформу, не дежурим круглосуточно и не проводим аттестацию. Сопровождение помесячное: 20 000, 60 000 или 120 000 ₽ в месяц, сверх пакета 5 000 ₽ в час. Вывод пилота в эксплуатацию описан на странице «Вывод ИИ-пилота в продуктив», услуга — на странице «MLOps и развёртывание моделей». Все цены и сроки — на странице «Тарифы».

Частые вопросы

Как часто нужно переобучать модель?

Не по календарю, а по сигналу: когда качество на проверенной выборке или доля исправлений выходит за порог. Перед переобучением проверяется источник: если сломан вход, переобучение на нём только закрепит ошибку.

Что такое дрейф данных простыми словами?

Это изменение того, что приходит модели на вход, по сравнению с тем, на чём её проверяли. Запросы стали другими, и модель, которая хорошо работала, начинает ошибаться чаще, хотя код не менялся.

Как проверить качество, если правильные ответы приходят через месяц?

Комбинируют выборочную проверку людьми, исправления операторов, сигналы пользователей и отложенное сопоставление исхода с ранее сохранённым предсказанием. Для этого предсказания хранятся с идентификатором объекта и временем.

Нужна ли отдельная платформа для мониторинга?

Для одной-двух моделей обычно нет: хватает журнала, суточных расчётов, недельной выборки и инструкции отката. Платформа окупается, когда моделей больше пяти или они часто обновляются.

Чем мониторинг языковой модели отличается от обычной модели?

Нет единой метрики точности, поэтому используют набор контрольных вопросов, отдельное измерение качества поиска и доли «не знаю», а для внешних моделей ещё следят за версией, которую может сменить провайдер.

Как быстро нужно откатываться?

Столько времени, сколько стоит работа с плохими ответами. Для процессов с дорогой ошибкой откат должен выполняться одной командой по инструкции; для остальных хватает заранее согласованного окна. Скорость определяет владелец процесса.

Можно ли делать мониторинг в закрытом контуре?

Да. Журнал, расчёты, панели и реестр версий работают на ваших серверах, внешних сервисов не требуется. Данные пользователей остаются в контуре.

Сколько стоит настроить мониторинг модели?

Начинаем с обследования за 200 000 ₽ (350 000 ₽ при нескольких системах), оно вычитается из первого этапа. Мониторинг одной модели входит в лёгкий или тяжёлый пилот (150 000–400 000 ₽ и 400 000–1 200 000 ₽), дальше сопровождение от 20 000 ₽ в месяц.