Компьютерное зрение: сколько видеопотоков тянет одна карта
Вопрос «сколько камер потянет одна карта» звучит просто, а корректного ответа в отрыве от задачи не имеет: разброс между сценариями — от восьми потоков до четырёхсот на одном и том же железе. Разбираем, что именно ограничивает плотность, даём формулу, считаем пример на 200 камерах и собираем конфигурации под 500, 2 000 и 10 000 камер.
Сравнительная таблица
| Карта | Движков NVDEC | Потоков 1080p по декоду | Детекция YOLO-s 640, INT8 | Потоков при анализе 5 к/с | Потребление |
|---|---|---|---|---|---|
| NVIDIA T4 / A2 | 1–2 | 25–40 | 300–450 FPS | 25–40 (упор в декод) | 60–70 Вт |
| NVIDIA L4 | 4 | 100–130 | 700–1 000 FPS | 100–130 | 72 Вт |
| NVIDIA L40S | 3 | 120–180 | 1 500–2 200 FPS | 120–180 (упор в декод) | 350 Вт |
| NVIDIA A100 80 ГБ | 5 | 200–300 | 1 800–2 600 FPS | 200–300 | 400 Вт |
| NVIDIA H100 | 7 | 300–400 | 3 000–4 500 FPS | 300–400 | 700 Вт |
| Jetson AGX Orin 64 ГБ | 1 (мультипоточный) | 8–16 | 150–250 FPS | 8–16 | 15–60 Вт |
От чего вообще зависит ответ
Плотность видеоаналитики определяют пять параметров, и все они умножаются друг на друга. Разрешение потока: переход с 1080p на 4K увеличивает и объём декодирования вчетверо, и стоимость предобработки. Частота анализа: анализировать 25 кадров в секунду обычно не нужно — детекция человека или транспорта на 5 кадрах даёт то же качество событий при впятеро меньшей нагрузке.
Дальше — модель. YOLO-n, YOLO-s и YOLO-l на одном железе различаются по скорости в 3–5 раз. Формат весов: INT8 после калибровки даёт ускорение в 2–3 раза относительно FP16 при потере точности в 1–2 процентных пункта — для большинства задач наблюдения это приемлемая сделка. И, наконец, батчинг: обработка кадров пачками по 8–32 повышает утилизацию карты в полтора-два раза, но добавляет задержку, что критично для реакции в реальном времени и безразлично для постанализа.
Прежде чем считать железо, зафиксируйте эти пять чисел. Без них любой ответ будет либо маркетинговым максимумом, либо перестраховкой втрое.
Два узких места, которые надо считать отдельно
Первое — декодирование. Прежде чем нейросеть увидит кадр, поток H.264 или H.265 надо распаковать. На картах NVIDIA это делают выделенные аппаратные блоки NVDEC, и их количество — фиксированная характеристика чипа, не связанная с числом вычислительных ядер. Один движок NVDEC вытягивает порядка 20–35 потоков 1080p30 в H.264; на H.265 производительность ниже примерно в полтора раза.
Второе — сам инференс: сколько кадров в секунду карта прогонит через модель детекции. Здесь работают тензорные ядра, и разница между картами куда больше, чем по декоду.
Итоговая плотность — это минимум из двух чисел, и в реальных проектах ограничитель оказывается разным. На T4 и L40S упор идёт в декод: карты умеют считать быстрее, чем распаковывать видео. На L4, где движков NVDEC четыре при скромных тензорных ядрах, баланс ровный — она и создавалась под видеонагрузку. Отсюда неочевидный вывод: L40S при кратно большей цене и впятеро большем потреблении даёт по числу камер результат, сопоставимый с L4, если задача сводится к одной детекции на кадр.
Важное практическое замечание про кодирование. У A100 аппаратного энкодера NVENC нет вообще, у H100 его тоже нет. Если ваша система должна не только анализировать, но и перекодировать или отдавать потоки обратно — превью для операторов, запись в другом качестве, — эти карты вам этого не сделают: придётся кодировать на процессоре или ставить отдельные карты с NVENC вроде L4 или L40S. Ошибка обнаруживается обычно уже после закупки.
Формула и пример на 200 камерах
Число потоков на карту — минимум из двух величин. По инференсу: FPS модели, делённые на частоту анализа одного потока. По декоду: суммарная производительность NVDEC в кадрах в секунду, делённая на полную частоту потока, а не на частоту анализа — декодировать приходится всё, если только не используется выборочное декодирование опорных кадров.
Считаем реальный пример: 200 камер 1080p, поток 25 к/с в H.264, задача — детекция людей и транспорта, анализ 5 кадров в секунду, модель уровня YOLO-s 640×640 в INT8.
По инференсу нужно 200 × 5 = 1 000 детекций в секунду. L40S даёт 1 500–2 200 FPS на такой модели — запас есть, хватает одной карты. По декоду нужно 200 × 25 = 5 000 кадров 1080p в секунду; три движка NVDEC на L40S дают ориентировочно 3 000–4 500 кадров в секунду по 1080p H.264. То есть по декоду одна карта не проходит — упираемся именно в него.
Вывод по примеру: берём две L40S либо две-три L4, у которой четыре движка NVDEC при вдвое меньшей цене и впятеро меньшем потреблении. Для чисто аналитической нагрузки без перекодирования пара L4 закроет задачу примерно за половину бюджета и на 145 Вт вместо 700.
Приём, который экономит больше всего: декодировать только те кадры, которые нужны для анализа. Многие платформы умеют брать из потока опорные кадры и пропускать остальные — на 5 к/с из 25 это снижает нагрузку на NVDEC в несколько раз и снимает главное ограничение. Проверяйте, поддерживает ли это ваша платформа видеонаблюдения: разница между «нужно две карты» и «нужна одна» часто именно здесь.
Что ломает расчёт на практике
Каскады моделей. Реальная система редко ограничивается детекцией: за ней идут трекинг, повторная идентификация, распознавание лиц или номеров, классификация действий. Каждый дополнительный этап работает не по кадрам, а по объектам, и на людной сцене с тридцатью объектами в кадре нагрузка от каскада легко превышает нагрузку от детектора в разы. Считать надо не кадры в секунду, а объекты в секунду на каждом этапе.
Кодек и разрешение. H.265 при том же битрейте требует примерно в полтора раза больше вычислений на декодирование, чем H.264. 4K вместо 1080p — вчетверо больше пикселей на всех этапах. Смешанный парк камер, где часть 4K H.265, а часть 1080p H.264, надо считать по группам, а не по среднему.
Реализация инференса. Модель, запущенная напрямую в PyTorch, работает в 3–5 раз медленнее той же модели, скомпилированной в TensorRT и откалиброванной в INT8. Большая часть разочарований вида «карта тянет втрое меньше обещанного» объясняется именно этим, а не железом.
Пиковые сцены. Проектировать по среднему числу объектов нельзя: система должна выдерживать час пик, когда в кадре не три человека, а сорок. Практический запас — 30–40 % к расчётной нагрузке, иначе в самый важный момент начнётся пропуск кадров.
И системные мелочи: пропускная способность сети (200 камер 1080p при 4 Мбит/с — это 800 Мбит/с только на приём), объём и скорость накопителей под запись, а также память карты, если моделей в каскаде несколько и каждая занимает свои гигабайты.
Конфигурации под 500, 2 000 и 10 000 камер
500 камер 1080p при анализе 5 к/с — это 2 500 детекций в секунду и потребность в декодировании 12 500 кадров в секунду. Практично: 4–5 карт L4 в одном двухпроцессорном сервере, потребление вычислительной части около 300–400 Вт, вся система в пределах 1–2 кВт. Если в каскаде есть распознавание, добавьте ещё одну карту с запасом.
2 000 камер — 10 000 детекций в секунду. Это 12–16 карт L4 либо 6–8 L40S, распределённых на 2–3 сервера, 5–8 кВт с обвязкой. На этом масштабе уже имеет смысл разделять роли: часть узлов только декодирует и детектирует, часть занимается тяжёлым каскадом по вырезанным объектам.
10 000 камер — 50 000 детекций в секунду и порядка 250 000 кадров в секунду на декодирование. Это 40–60 карт класса L4 или 20–30 класса L40S и A100 на 5–8 серверах, 20–35 кВт по площадке. Здесь уже нужны и нормальная стойка, и продуманное охлаждение, и отказоустойчивость — выход одного узла не должен ослеплять пятую часть периметра.
Все три конфигурации — ориентиры под одну модель детекции и анализ 5 к/с. Добавление распознавания лиц по всем объектам может увеличить требования вдвое и более, а снижение частоты анализа до 2 к/с — сократить их примерно вдвое. Прежде чем закупать, прогоните свою модель на своём видео хотя бы на одной карте: сутки замеров экономят десятки процентов бюджета.
Как подобрать карты под свою задачу
Правильный порядок: зафиксируйте число камер, разрешение, кодек и частоту анализа; определите каскад моделей; посчитайте нагрузку по инференсу и по декоду отдельно; возьмите минимум; добавьте 30–40 % на пиковые сцены. И только потом смотрите на прайс.
Общее правило выбора для видеоаналитики: карта с большим числом движков NVDEC и умеренными тензорными ядрами даёт больше камер на рубль и на ватт, чем флагман. Карты уровня H100 в этой задаче переплачены — их сила в обучении, а не в раскладывании потоков. Обратное верно, если вы обучаете свои детекторы: тогда нужны обе роли, и парк лучше разделить.
Собрать конфигурацию по этим числам помогает подборщик GPU под задачу; характеристики и доступность карт — в каталоге ИИ-ускорителей, готовые узлы под несколько карт — в разделе серверов. Для компактных объектов и edge-развёртывания есть рабочие станции и edge-платформы.
Если детекторы вы ещё и обучаете под свои объекты, режимы обучения и инференса разобраны в гайде обучение или инференс: как выбрать GPU. А чтобы измерить реальную плотность на своей модели до закупки, удобно взять карту на короткий срок в аренде вычислительных мощностей — это самый дешёвый способ проверить расчёт на своём видео.