Как обеспечивать мониторинг качества модели 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-инфраструктуру. Это позволяет не только отслеживать деградацию качества, но и предсказывать, когда и почему она может произойти.