Видео‑аналитика на GPU: мультикамерные пайплайны

Задача страницы. Дать практический план построения мультикамерной видео‑аналитики на облачных GPU: приём RTSP‑потоков, GPU‑декод, пайплайны инференса (детекция/сегментация/треккинг), оркестрация, наблюдаемость и расчёт стоимости. Это прикладовой гайд для онлайна (низкая латентность) и пакетной обработки архивов.

TL;DR

Архитектура мультикамерной системы

Поток данных (типовой контур):

RTSP → GPU-декод → Препроц (resize/letterbox/normalize) → Инференс (детектор/сегментатор) → NMS/постпроц

→ Треккинг (ассоциация ID) → Правила/алерты → (опц.) Overlay + GPU-энкод → Вывод/шина событий/хранилище

↘ Метрики/логи/трейсы → Дашборды

Роли компонентов:

Output: события в шину, превью/кадры в хранилище (см. https://cloudcompute.ru/solutions/storage-data).

Режимы: онлайн vs батч

Декодирование, буферизация, сброс кадров Рекомендации:

  • Держите 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‑фичи и правила пересадок между камерами.

  • Бизнес‑логика: зоны интереса, правила остановки/срабатывания, агрегации событий, подавление шума.

Качество и безопасность

Наблюдаемость и алерты

Собирайте (см. 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, сервинг

Траблшутинг

**Симптом** **Причина** **Что сделать**
Дёргается 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-tuninghttps://cloudcompute.ru/solutions/storage-datahttps://cloudcompute.ru/solutions/monitoring-logginghttps://cloudcompute.ru/solutions/llm-inference/observabilityhttps://cloudcompute.ru/solutions/cost-plannerhttps://cloudcompute.ru/solutions/interruptible-patternshttps://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-сервер