Видео‑аналитика на GPU: мультикамерные пайплайны
Задача страницы. Дать практический план построения мультикамерной видео‑аналитики на облачных GPU: приём RTSP‑потоков, GPU‑декод, пайплайны инференса (детекция/сегментация/треккинг), оркестрация, наблюдаемость и расчёт стоимости. Это прикладовой гайд для онлайна (низкая латентность) и пакетной обработки архивов.
TL;DR
- Онлайн: держите декод на GPU (NVDEC), фиксируйте SLA по p95‑латентности и drop‑rate, используйте on‑demand пулы.
- Мультикамеры: разводите «камера→GPU» по аффинити, включайте ring‑буферы и политику сброса кадров при перегрузе.
- Батч архивов: шардирование по файлам/кадрам, interruptible пулы, чанк ≤ 2 мин.
- Базовые детекторы и трекеры — см. YOLO: https://cloudcompute.ru/solutions/computer-vision/yolo/ и трекинг: https://cloudcompute.ru/solutions/computer-vision/tracking/.
- Наблюдаемость/алерты — https://cloudcompute.ru/solutions/monitoring-logging/ и https://cloudcompute.ru/solutions/llm-inference/observability/.
- Производительность/стоимость — https://cloudcompute.ru/solutions/performance-tuning/ и https://cloudcompute.ru/solutions/cost-planner/.
- Экспорт на edge/серверинг — https://cloudcompute.ru/solutions/computer-vision/edge-export/ и https://cloudcompute.ru/solutions/triton-inference-server/.
Архитектура мультикамерной системы
Поток данных (типовой контур):
RTSP → GPU-декод → Препроц (resize/letterbox/normalize) → Инференс (детектор/сегментатор) → NMS/постпроц
→ Треккинг (ассоциация ID) → Правила/алерты → (опц.) Overlay + GPU-энкод → Вывод/шина событий/хранилище
↘ Метрики/логи/трейсы → Дашборды
Роли компонентов:
- Ingest: устойчивое подключение к RTSP, переподключение с backoff, контроль таймаута.
- GPU‑decode/encode: минимизируют копии, обеспечивают стабильный fps.
- Inference: детекция/сегментация/классификация (см. https://cloudcompute.ru/solutions/computer-vision/yolo/ и https://cloudcompute.ru/solutions/computer-vision/sam/).
- Tracking: ID‑последовательности, агрегация/фильтрация событий (см. https://cloudcompute.ru/solutions/computer-vision/tracking/).
Output: события в шину, превью/кадры в хранилище (см. https://cloudcompute.ru/solutions/storage-data/).
Режимы: онлайн vs батч
- Онлайн (реальное время) SLA: p95 latency/кадр, fps/поток, drop‑rate. Режим: on‑demand пулы, прогретые модели, выделенные GPU на горячие камеры.
- Батч (архивы/файлы) Цели: frames/min, Cost_per_1000. Режим: interruptible, чанк ≤ 2 мин, кэш кадров/весов на NVMe. Паттерны — https://cloudcompute.ru/solutions/interruptible-patterns/ и https://cloudcompute.ru/solutions/image-video-gen/batch-render/.
Декодирование, буферизация, сброс кадров Рекомендации:
- Держите NVDEC на той же GPU, где инференс; используйте zero‑copy в препроц.
- На каждый поток — ring‑buffer 200–500 мс; при перегрузе включайте drop‑политику (например, «каждый N‑й кадр»).
- Нормализуйте таймстемпы (monotonic), обрабатывайте потерю пакетов.
При разрыве RTSP — экспоненциальный backoff и health‑пробы по отдельному каналу.
Топологии развертывания
A) Single‑GPU (4–8 потоков 720p/1080p, зависит от модели):
GPU0: [NVDEC] → [Preproc] → [Detector] → [Tracker] → [Overlay/NVENC]
B) Multi‑GPU (мультикамеры с разделением):
GPU0: NVDEC (камера 1..N) → Inference GPU0
GPU1: NVDEC (камера N+1..) → Inference GPU1
... общий Event Bus/Метрики/Хранилище
C) Узел с выделенным GPU под энкод:
GPU0/1..K: Decode+Infer → шина кадров → GPU_E: Overlay + Encode
Аффинити «камера→GPU» снижает кросс‑копии и джиттер. Производственный тюнинг — https://cloudcompute.ru/solutions/performance-tuning/ и https://cloudcompute.ru/solutions/throughput-vs-latency/.
Инференс: детекция/сегментация/классификация
-
Детекторы (YOLOv8/v9): основные параметры — size, conf, iou, агностический NMS. См. https://cloudcompute.ru/solutions/computer-vision/yolo/
-
Сегментация/ROI (SAM/SEEM): для выделения зон интереса до OCR/классификации — https://cloudcompute.ru/solutions/computer-vision/sam/
-
Классификация/эмбеддинги (DINOv2/CLIP): дополнительная фильтрация, поиск по похожести — https://cloudcompute.ru/solutions/computer-vision/dinov2/
-
Микробатчи: для изображений 8–64; для видео — батчи из нескольких камер или из временных соседей (соблюдайте порядок вывода).
-
Сервинг многомодельных графов — https://cloudcompute.ru/solutions/triton-inference-server/ Трекинг и бизнес‑правила
-
Трекинг ассоциирует детекции по кадрам (скор/IoU, Kalman/скорость, max_age). См. https://cloudcompute.ru/solutions/computer-vision/tracking/
-
Для мультикамерных систем добавляйте ReID‑фичи и правила пересадок между камерами.
-
Бизнес‑логика: зоны интереса, правила остановки/срабатывания, агрегации событий, подавление шума.
Качество и безопасность
- Качество: mAP/Precision/Recall на контрольных потоках, IDF1/MOTA, стабильность fps, доля «ложных» алертов.
- Безопасность: защита RTSP‑секретов, маскирование PII (лица/номера) в логах/превью, политика хранения (retention/region). См. https://cloudcompute.ru/solutions/security/ и https://cloudcompute.ru/solutions/llm-inference/guardrails/
Наблюдаемость и алерты
Собирайте (см. https://cloudcompute.ru/solutions/monitoring-logging/ и https://cloudcompute.ru/solutions/llm-inference/observability/):
- Технические: fps/поток, p50/p95 latency, drop‑rate, queue_wait, GPU util/HBM, VRAM пик, NVDEC/NVENC ошибки.
- Качество: mAP@val, Precision/Recall, IDF1/MOTA, доля ID‑switch.
- Сервисные: время переподключения RTSP, частота сбоев, доля таймаутов. Алерты: рост p95, падение fps, всплеск drop‑rate, ID‑switch, OOM.
Стриминг прогресса/событий для UI — https://cloudcompute.ru/solutions/llm-inference/streaming/
Хранилище, ретеншн, экспорт
- Ring‑архив: хранение последних X часов на NVMe, выгрузка событий/кадров/клипов в объектное хранилище.
- Структура путей: /site/camera/YYYY/MM/DD/HH/<file>.mp4 + метаданные о событиях.
- Экспорт: превью/клипы рядом с JSON‑событиями; отчёты по камерам/времени/классам. Подробнее — https://cloudcompute.ru/solutions/storage-data/
Расчёт производительности и стоимости
Пусть C — камеры, fps — целевой fps, t_inf — среднее время инференса кадра (с учётом препроц/NMS), α — накладные (декод/трек/правила), U — целевая загрузка GPU (например, 0.7).
GPU_needed ≈ (C × fps × t_inf × (1 + α)) / U
Cost_per_camera ≈ (GPU_hour_price × GPU_needed) / C
Понижаем t_inf и α: FP16/INT8, TensorRT‑форматы, zero‑copy, аффинити «камера→GPU», предобработка на GPU, группировка операций. Баланс скоростей — https://cloudcompute.ru/solutions/throughput-vs-latency/ Сравнение on‑demand vs interruptible (для батча) — https://cloudcompute.ru/solutions/cost-planner/ и https://cloudcompute.ru/solutions/interruptible-patterns/
Конфиг (пример YAML)
pipeline: cv-realtime-rtsp
cameras:
- id: cam01
url: rtsp://<host>/stream1
decode: gpu
drop_policy: every_n
drop_n: 2
- id: cam02
url: rtsp://<host>/stream2
decode: gpu
preprocess:
size: 1280x736
letterbox: true
normalize: imagenet
models:
detector:
family: yolo_v9m
precision: fp16
nms: { conf: 0.35, iou: 0.6, agnostic: false }
tracker:
match_iou: 0.3
max_age: 30
min_hits: 3
output:
events_bus: bus://events/cv
store_preview: true
overlay: false
sla:
target_fps: 25
p95_latency_ms: 120
limits:
max_streams_per_gpu: 6
max_retries_rtsp: 5
Оркестрация, CI/CD, сервинг
- Сервинг многомодельных графов и препроц — https://cloudcompute.ru/solutions/triton-inference-server/
- HTTP/UI для демо/операторов — https://cloudcompute.ru/solutions/gradio-fastapi/
- CI/CD контейнеров, health‑чеки, миграция весов — https://cloudcompute.ru/solutions/containers-ci-cd/
Траблшутинг
| **Симптом** | **Причина** | **Что сделать** |
| Дёргается fps | Узкое место декод/копии | NVDEC+zero‑copy, аффинити, уменьшить постпроц/оверлей |
| Высокая p95‑латентность | Очереди/батчи/фоновые GC | Снизить batch, увеличить воркеры, ограничить GC/логгинг |
| Много ID‑switch | Порог/ассоциация | Подобрать match\_iou/max\_age/min\_hits, добавить ReID |
| Пропуски кадров | Нет drop‑политики | every\_n/latency‑aware drop, ring‑buffer |
| OOM на 1080p×N | VRAM переполнен | Снизить размер/параллельность, INT8/FP16, разгрузить overlay |
| RTSP «сыпется» | Нестабильная сеть | Backoff/health‑пробы, троттлинг реконнектов |
Шаблоны cloudcompute.ru (готовые пресеты)
Хаб шаблонов — https://cloudcompute.ru/solutions/templates/
- “CV‑Realtime (RTSP)” — NVDEC, детектор+трекер, алерты/дашборды.
- “CV‑Batch (Video Archive)” — шардирование, чанк ≤ 2 мин, отчёты по качеству/стоимости.
- “Edge‑Export (TensorRT)” — упаковка моделей/конфигов под устройства: https://cloudcompute.ru/solutions/computer-vision/edge-export/
- “Triton‑Ensemble (CV)” — препроц→детект→NMS→постпроц в одном сервинге: https://cloudcompute.ru/solutions/triton-inference-server/
Чек‑лист перед продом
- Определены SLA: fps/поток, p95‑латентность, drop‑rate, метрики качества (mAP, IDF1/MOTA).
- Подобран профиль GPU (24/48/80 ГБ) и топология (single/multi‑GPU, выделенный энкод).
- Настроены NVDEC/zero‑copy, ring‑буферы, drop‑политика.
- Конфиг инференса, NMS, треккинга подтверждён на контрольных потоках.
- Подключены метрики/алерты/трейсинг; заведены ретеншн/экспорт.
- Рассчитан Cost_per_camera; выбран режим on‑demand/interruptible (для архива).
- Подготовлены CI/CD и процедуры обновления моделей/весов.
Навигация по разделу «Компьютерное зрение»
Хаб: https://cloudcompute.ru/solutions/computer-vision/ • Детекция: https://cloudcompute.ru/solutions/computer-vision/yolo/ • Интерактивная сегментация: https://cloudcompute.ru/solutions/computer-vision/sam/ • Эмбеддинги/поиск: https://cloudcompute.ru/solutions/computer-vision/dinov2/ • OCR: https://cloudcompute.ru/solutions/computer-vision/ocr/ • Трекинг/ReID: https://cloudcompute.ru/solutions/computer-vision/tracking/ • 3D‑реконструкция: https://cloudcompute.ru/solutions/computer-vision/3d-reconstruction/ • Гео/SAR: https://cloudcompute.ru/solutions/computer-vision/geospatial/ • Экспорт на edge: https://cloudcompute.ru/solutions/computer-vision/edge-export/ • Инфраструктура: https://cloudcompute.ru/solutions/performance-tuning/ • https://cloudcompute.ru/solutions/storage-data/ • https://cloudcompute.ru/solutions/monitoring-logging/ • https://cloudcompute.ru/solutions/llm-inference/observability/ • https://cloudcompute.ru/solutions/cost-planner/ • https://cloudcompute.ru/solutions/interruptible-patterns/ • https://cloudcompute.ru/solutions/throughput-vs-latency/ • Сервинг: https://cloudcompute.ru/solutions/triton-inference-server/ • UI/API: https://cloudcompute.ru/solutions/gradio-fastapi/ • CI/CD: https://cloudcompute.ru/solutions/containers-ci-cd/
Готовы запустить?
Запустить GPU-сервер