Ускоряем Vision AI: внедрение пакетного режима VC-6 и NVIDIA Nsight
В системах Vision AI производительность моделей продолжает расти, и все этапы обработки данных, такие как декодирование, предварительная обработка и планирование на GPU, должны идти в ногу с этими изменениями. В предыдущей статье обсуждался разрыв производительности между этапами пайплайна, который называется разрывом данных и тензоров. Кодек SMPTE VC-6 (ST 2117-1) решает эту проблему благодаря иерархической, блочной архитектуре. Изображения кодируются как постепенно улучшаемые уровни качества (LoQ), каждый из которых добавляет дополнительную детализацию. Это позволяет выборочно извлекать и декодировать только нужное разрешение, регион интереса или цветовую плоскость, обеспечивая произвольный доступ к независимо декодируемым кадрам. Таким образом, пайплайны могут извлекать и декодировать только то, что необходимо модели.
Тем не менее, эффективное выполнение с одной картинкой не всегда означает эффективное масштабирование. По мере увеличения размеров пакетов узким местом становится не эффективность ядра для одной картинки, а организация нагрузки, частота запусков и занятость GPU. Эта статья сосредоточена на архитектурных изменениях, необходимых для масштабирования декодирования VC-6 для пакетной инференции и обучения. Инструменты NVIDIA Nsight Systems и NVIDIA Nsight Compute позволяют разработчикам выявлять системные и ядерные ограничения, которые были использованы для переработки реализации CUDA VC-6 для пакетной производительности.
Результатом стали до 85% снижения времени декодирования на изображение по сравнению с предыдущей реализацией, с подмиллисекундным декодированием для LoQ-0 (~4K) в пакетном режиме и ~0.2 мс для более низких LoQ, сохраняя при этом идентичное качество выходных данных. Это значительно улучшает эффективность пайплайна для производственных задач Vision AI. Новая реализация основана на нескольких архитектурных изменениях, включая пакетный режим и оптимизации на уровне ядра. Пакетный режим: от N до одного декодера. Переработка модели выполнения и алгоритмические изменения позволяют декодировать несколько изображений одновременно с помощью одного декодера.
Оптимизация параллелизма включает использование нового измерения работы (изображения) наряду с существующими измерениями параллелизма (плоскости, тайлы), чтобы перенести начальную работу иерархии VC-6 на GPU. Оптимизации, основанные на Nsight Compute, привели к увеличению скорости ядра на 20%. Все эти изменения подробно описаны в следующих разделах. Как и для любой оптимизации CUDA, план состоял в том, чтобы начать с системного профайлера, такого как Nsight Systems, чтобы выявить и устранить начальные узкие места производительности, а затем использовать Nsight Compute для уточнения отдельных ядер.
Переход от N декодеров для N изображений к одному декодеру, который декодирует пакеты N изображений одновременно, позволяет перераспределить фиксированный объем работы на меньшее количество ядер, каждое из которых выполняет больше работы. Это изменение приводит к полной загрузке GPU и устранению неэффективности, связанной с запуском множества мелких ядер. В начальной реализации декодирование корневых и узких уровней иерархии VC-6 выполнялось на CPU. Для декодирования одной картинки объем работы на этих узких этапах был слишком мал для оправдания выполнения на GPU. Однако в пакетном дизайне агрегирование нескольких изображений предоставляет достаточную параллельность для эффективного использования GPU.
Кроме того, алгоритм был изменен для устранения логики на стороне хоста, связанной с переменными размерами изображений. Это позволило снизить количество точек синхронизации и задержек при отправке, увеличивая плавность пайплайна. Новая конструкция декодера делит каждый пакет на мини-пакеты, которые проходят через конвейер, состоящий из обработки на CPU, передачи по PCIe и декодирования на GPU. Изображения мини-пакета находятся на стадии конвейера одновременно, в то время как стадии работают параллельно и скрывают затраты друг друга.
Оптимизируйте затраты и надежность с Gemini API
Создавайте уникальные истории с помощью Flow
Похожие статьи
Adobe Premiere анонсирует новый режим цветокоррекции с ускорением на NVIDIA GPUs
На NAB Show 2026 Adobe представит новый режим цветокоррекции в Premiere с ускорением на NVIDIA GPUs.
NVIDIA NVbandwidth: инструмент для оценки производительности GPU
NVIDIA представила NVbandwidth — инструмент для оценки производительности передачи данных между GPU.
Оптимизация использования GPU для эффективного обучения моделей
Изучите, как оптимизировать использование GPU для повышения эффективности обучения моделей.