← Маршрут ML-инженерии

Урок · 2 мин чтения · упражнения и самопроверка

MLOps: наблюдение и откат

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

Перед началом

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

Эксплуатация начинается после запуска

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

Лабораторный /metrics считает фактически обработанные запросы /predict, ошибки и суммарное время. В одном процессе это счётчики с момента старта; перезапуск обнуляет их. Для нескольких workers нужны корректный сбор и агрегация — нельзя просто считать память одного процесса общими метриками системы. Среднее время из суммы и количества не является p95; для перцентилей нужна выборка задержек или гистограмма.

Качество входов и drift

Следите за пропусками, диапазонами, новыми категориями и версией схемы. Data drift — изменение распределения входов; изменение связи признаков с целью называют concept drift. Изменение входов — сигнал для расследования, а не автоматическое доказательство падения качества. Когда появляется разметка, сравните качество по временным окнам и значимым группам.

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

Доставка и откат

Поставляйте код, окружение, схему и модель как согласованную версию. Перед переключением проверьте /health и контрольный запрос. Сохраните прошлый артефакт и команду возврата. Для этой лаборатории остановите сервер, задайте путь к прежней модели и запустите снова; после возврата проверьте версию и ответ.

Завершение проекта

Дополните модель RandomForest-кандидатом, тестом неизменности артефакта при запросах и model card. В отдельном терминале вызовите клиент и /metrics, затем воспроизведите неверный запрос. В отчёте укажите реальные результаты. Это завершает начальный цикл ML-инженерии; DL, NLP и распределённая инфраструктура будут отдельными продолжениями.

Пошаговый пример

python
durations = [0.01, 0.02, 0.03]
errors = 1
requests = len(durations)
print(round(sum(durations) / requests, 3))
print(round(errors / requests, 3))

Ожидаемый вывод

text
0.02
0.333

Это ручная проверка формул среднего и доли ошибок. На /metrics значения вычисляются по настоящим HTTP-запросам, а не берутся из этого примера.

Сделайте самостоятельно

Сервис отвечает 200 за 10 мс, но точность на новых размеченных данных снизилась. Что проверять и можно ли заключить, что API здоров полностью?

Ответ и критерии проверки

HTTP-путь доступен, но модель требует расследования. Проверьте схему, порядок и единицы признаков, распределение входов, качество разметки и метрики по группам. Готовность API не заменяет качество предсказания.

Проверьте понимание

1. Доказывает ли data drift, что качество уже снизилось?
2. Можно ли получить p95 только из суммы времени и числа запросов?