Расчет ресурсов для работы аналитики¶
Аналитика использует память для моделей, декодированных кадров и обработки одновременных камер. Потребление зависит от версии модели и вычислительного сервиса, выбранного устройства, разрешения и режима анализа. Рассчитывайте его отдельно от записи и выдачи видео.
За обнаружение и обработку объектов отвечает сервис inference, за сопоставление распознанных объектов — identification. Эти сервисы и медиаслой могут работать на разных узлах. На одном сервере суммируйте их расходы вместе с Watcher, базой и ОС.
Расчет видеопамяти для работы аналитики на GPU¶
Сначала проверьте, что выбранный вычислительный сервис видит GPU и поддерживает нужный алгоритм на этом устройстве. Для контейнерного варианта CUDA требуется доступ контейнера к устройствам NVIDIA; Vulkan использует доступ к /dev/dri. Наличие видеокарты в сервере без доступа из контейнера не подтверждает работу аналитики на GPU.
Для выбранного HW должны присутствовать совместимые модели и runtime. Наличие CPU, CUDA, Jetson или Vulkan в конфигурации само по себе не задает нижнюю границу RAM или VRAM.
До запуска оцените видеопамять как сумму весов всех загруженных экземпляров моделей, пиковых рабочих буферов и активаций, буферов кадров и декодера, расходов драйвера и выбранного запаса. Размер файлов весов не равен общему потреблению. Учитывайте число параллельных обработчиков: каждый может загрузить собственные модели.
Для оценки выполните измерения на выбранной версии моделей:
- Измерьте занятую память после запуска и загрузки нужных моделей без камер.
- Подключите группу камер с рабочим разрешением, частотой кадров и настройками анализа. Измерьте установившееся потребление и пики.
- Повторите замер при целевом числе камер и при одновременной работе всех нужных алгоритмов.
- Проверьте, что память не исчерпывается после прогрева, переподключения потоков и максимальной активности в кадре.
Расчет по замерам:
Память GPU = модели и постоянные буферы
+ рабочие буферы всех одновременно обрабатываемых камер
+ измеренный запас на пики
Если при неизменных настройках измерен прирост m на камеру, предварительная оценка для N камер равна M₀ + N × m. M₀ — измеренное потребление без камер. Эта оценка требует проверки на целевом числе камер: пакетная обработка и общие буферы могут изменять зависимость.
Для устройств NVIDIA снимите загрузку и память командой:
nvidia-smi
Время GPU-операции измеряйте с завершением вычислений на устройстве: асинхронный запуск не измеряет всю операцию. Складывать времена отдельных операций можно только для оценки последовательного выполнения при фиксированном размере пакета. Параллельные потоки исполнения и перекрытие передачи данных с вычислениями требуют отдельного замера общей производительности.
Проверяйте также скорость обработки и задержку появления эпизодов. Свободная видеопамять не доказывает, что вычислительной производительности хватает для выбранных камер.
Расчет оперативной памяти для аналитики на CPU¶
При обработке на CPU модели и кадры занимают оперативную память сервера. Замерьте постоянное потребление процессов и прирост после подключения камер с теми же настройками, которые будут на объекте.
RAM сервера = ОС и остальные службы
+ inference и identification с моделями
+ буферы кадров и обработки камер
+ запас на измеренные пики
Если аналитика работает рядом со стримером, добавьте память приема и выдачи видео, архива и операционных буферов. При работе рядом с управляющим сервером учитывайте PostgreSQL, Redis и фоновые задания Watcher.
Проверьте систему под нагрузкой:
free -h
vmstat 1 10
Недостаток CPU может увеличивать задержки при свободной памяти. Проверьте процессор и состояние аналитики вместе с памятью. Не переносите фиксированные значения Мбайт на камеру между версиями моделей и устройствами без повторного замера.
Установка сервисов и выбор вычислительного варианта описаны в установке аналитики.