Как обеспечивать мониторинг качества модели CV после деплоя?

Обеспечение мониторинга качества модели компьютерного зрения (CV) после деплоя — это ключевой элемент жизненного цикла машинного обучения. Даже хорошо обученная модель может со временем терять эффективность из-за изменений во входных данных, условий съёмки, сезонности, дрейфа домена и других факторов. Без систематического мониторинга модель может производить ошибки незаметно для разработчиков и пользователей, что критично для продуктивных и безопасных приложений (видеонаблюдение, медицина, автономный транспорт, OCR и т. д.).

1. Зачем нужен мониторинг

  • Отслеживание деградации качества модели (performance decay)

  • Обнаружение дрейфа данных (data drift)

  • Обнаружение дрейфа предсказаний (prediction drift)

  • Алерты на аномальное поведение модели

  • Поддержка цикличного обновления модели (retraining loop)

  • Соблюдение требований по аудиту и соответствию

2. Что мониторить в CV-системах

A. Метрики качества (если есть GT)

Если ground truth доступен (например, пользователь размечает результат):

  • **Precision, Recall, F1-score
    **
  • mAP (mean Average Precision) для object detection

  • IoU / Dice для сегментации

  • Accuracy / Top-k Accuracy для классификации

  • Временные метрики (latency, FPS)

Пример:

  • Периодическая переоценка результатов на части потока с разметкой

  • Утилизация активного обучения для выборки наиболее спорных предсказаний

B. Метрики без ground truth (безразметочные)

Когда разметка недоступна, применяются косвенные признаки:

  • Распределение confidence-оценок модели

  • Entropy / Uncertainty карты

  • Частота появления каждого класса

  • Heatmap coverage (насколько внимание модели равномерно)

  • Распределение размеров bbox

  • Количество объектов в кадре

Примеры:

import numpy as np
confidences = model_outputs\['confidence'\]
entropy = -np.sum(confidences \* np.log(confidences + 1e-9), axis=1)

3. Мониторинг data drift / concept drift

A. Data drift (входные данные изменились)

  • Примеры: другое освещение, погода, фон, разрешение

  • Методы:

    • Измерение статистик изображений (среднее, дисперсия, цветовой баланс)

    • Сравнение embedding'ов изображений через CLIP / ResNet / Autoencoder

    • Фреймворки: evidently, Deepchecks, Fiddler, WhyLabs

from sklearn.metrics import wasserstein_distance
drift = wasserstein_distance(train_hist, prod_hist)

B. Concept drift (отношения вход→выход изменились)

  • Пример: раньше люди носили маски, теперь нет → меняется значение класса «лицо»

  • Методы:

    • Сравнение предсказаний одной и той же модели на новых данных

    • Обнаружение изменений в confidence-карте

    • Сравнение распределения классов или объектов со временем

4. Технический мониторинг (инфраструктурный)

  • Latency: задержка ответа модели (end-to-end или только инференс)

  • Throughput: число обработанных кадров/изображений в секунду

  • Failure rate: частота сбоев/ошибок/таймаутов

  • Resource usage: загрузка GPU/CPU/RAM/дисков

  • Статистика по batch-обработке: размер, частота, пропуски

Инструменты:

  • Prometheus + Grafana

  • Loki для логов

  • Sentry / OpenTelemetry для ошибок

  • NVIDIA DCGM / nvidia-smi API для GPU

5. Как собирать предсказания и метаданные

  • Все предсказания логируются:

    • изображение ID, timestamp

    • входной путь / камера / источник

    • результат модели (классы, bbox, mask)

    • confidence

    • latency

  • Использование брокеров сообщений (Kafka, Redis Streams) или очередь (RabbitMQ)

  • Хранение в базе данных (Clickhouse, PostgreSQL, MongoDB)

  • Оптимизированный формат хранения: JSONL, Avro, Protobuf

6. Механизмы обратной связи

  • Интерфейс для пользователей: «Модель ошиблась? Нажми сюда»

  • Полуавтоматическая разметка спорных результатов (human-in-the-loop)

  • Выгрузка edge-кейсов и отправка в Data Lake

  • Использование активного обучения: приоритет разметки спорных/низкоуверенных примеров

7. Интеграция с CI/CD и MLOps

  • Каждый деплой сопровождается созданием:

    • версии модели (например, через MLflow Model Registry)

    • мониторингового конфига

    • автоматики по алертам/откату

  • Модели разворачиваются с версионированием (A/B-тест, Canary deploy)

  • Метрики сравниваются до/после обновления модели (в рамках Golden Set)

  • Использование сервисов: Triton Inference Server, TorchServe, BentoML с REST/gRPC API

8. Выявление аномалий и алертинг

  • Statistical Alerting:

    • Confidence-дистрибуция ушла за 3σ

    • Новый класс появился неожиданно

    • Резкий рост времени ответа

  • ML-based Alerting:

    • Autoencoder detect unusual image features

    • Isolation Forest на embeddings

    • Drift detection model

  • Инструменты:

    • Evidently AI (dashboard + drift detection)

    • Arize, WhyLabs, Mona, Superwise (коммерческие ML мониторинговые решения)

    • Custom пайплайны на Kafka + Airflow + Prometheus

9. Работа с edge-устройствами (Jetson, Coral, IP-камеры)

  • Локальный инференс → передача только метаданных

  • Периодическая выгрузка изображений (например, только спорных)

  • Асинхронный анализ: инференс на edge, логгинг и анализ на сервере

  • Поддержка "heartbeat" сигналов от edge-устройств

  • Сбор hardware telemetry (температура, загрузка, ошибки)

10. Периодическая проверка производительности

  • Использование Golden Set (набор эталонных изображений)

    • Сравнение предсказаний текущей модели с версией N-1

    • Вычисление дрейфа метрик

  • Shadow inference: новая модель предсказывает, но не влияет на результат

  • Сравнение моделей по: mAP, latency, coverage, explainability

11. Explainability в продакшене как часть мониторинга

  • Генерация Grad-CAM / attention heatmap при предсказании

  • Хранение и анализ heatmaps для ошибок

  • Выявление "shortcut learning" (модель смотрит не туда)

  • Построение карты внимания + overlay для аналитики

12. Отчетность и визуализация

  • Dashboards:

    • Количество предсказаний по классам

    • Распределение confidence

    • Heatmaps: по камерам, классам, зонам

  • Отчёты:

    • Ежедневные / еженедельные PDF/HTML с метриками

    • Автоматическая отправка отклонений по email / Slack / Telegram

  • Реплей потоков: просмотр записанных видео с наложением bbox/mask/predictions

13. Полный CV-мониторинг пайплайн (пример)

1. Камера → Стрим обрабатывается на edge (Jetson)

2. Результаты (bbox, class, confidence, latency) → Kafka

3. Kafka → MongoDB (архив) + Clickhouse (аналитика)

4. Drift detector → сравнение с эталонным распределением

5. Алерт в Slack при превышении порога ошибок

6. Отчет в Grafana / Evidently dashboard

7. Выгрузка 100 спорных изображений в Label Studio

8. Новая модель обучается на них, логгируется в MLflow

9. Canary deploy через Triton + Shadow test

14. Рекомендации

  • Всегда логгировать метаданные предсказаний

  • Отделить технический мониторинг от ML-метрик

  • Поддерживать возможность ручной проверки edge-кейсов

  • Использовать explainability как регулярный контроль

  • Периодически пересматривать Golden Set / тестовые выборки

  • Автоматизировать аналитику и генерацию отчётов

Полноценный мониторинг CV-модели — это не единичная проверка после релиза, а непрерывный процесс анализа входных данных, выходов модели и внешней среды, интегрированный в MLops-инфраструктуру. Это позволяет не только отслеживать деградацию качества, но и предсказывать, когда и почему она может произойти.