Los sistemas de inteligencia artificial en visión están mejorando continuamente su rendimiento. Sin embargo, las etapas del pipeline que rodean el modelo, como la decodificación, el preprocesamiento y la programación en GPU, deben mantenerse al día. En una publicación anterior, se abordó el desajuste de rendimiento entre las etapas del pipeline de IA, conocido como la brecha de datos a tensor.
El códec SMPTE VC-6 (ST 2117-1) soluciona esta brecha mediante una arquitectura jerárquica basada en mosaicos. Las imágenes se codifican en niveles de calidad progresivamente refinables, lo que permite la recuperación y decodificación selectiva de la resolución, región de interés o plano de color requerido, con acceso aleatorio a fotogramas decodificables de forma independiente.
Sin embargo, la ejecución eficiente de una sola imagen no se traduce automáticamente en un escalado eficiente. A medida que crecen los tamaños de lote, el cuello de botella se desplaza de la eficiencia del kernel de una sola imagen a la orquestación de cargas de trabajo, la cadencia de lanzamiento y la ocupación de la GPU.
Cambios arquitectónicos para el escalado de VC-6
Este artículo se centra en los cambios arquitectónicos necesarios para escalar la decodificación de VC-6 en cargas de trabajo de inferencia y entrenamiento por lotes. Herramientas como NVIDIA Nsight Systems y NVIDIA Nsight Compute permiten identificar limitaciones a nivel de sistema y kernel, y se utilizaron para rediseñar la implementación de CUDA de VC-6 para mejorar el rendimiento por lote.
El resultado es una reducción de hasta un ~85% en el tiempo de decodificación por imagen en comparación con la implementación anterior, logrando tiempos de decodificación en submilisegundos para LoQ-0 (~4K) en lotes y ~0.2 ms para LoQs inferiores, manteniendo la calidad de salida. Esto mejora significativamente la eficiencia del pipeline para las cargas de trabajo de producción en visión AI.
Implementación del modo por lotes de VC-6
La nueva implementación se basa en varios cambios arquitectónicos, incluyendo optimizaciones a nivel de kernel y un modelo de ejecución por lotes.
Modelo de ejecución rediseñado
- Rediseño del modelo de ejecución
- Cambios algorítmicos para decodificar múltiples imágenes simultáneamente con un solo decodificador
- Mejorada paralelización
- Utilización de la nueva dimensión de trabajo (imágenes) junto a dimensiones de paralelización existentes (mosaicos, planos) para trasladar el trabajo inicial de la jerarquía de mosaicos VC-6 a la GPU.
- Pipelining de minibatch
Optimización a nivel de kernel
- Optimización del kernel del decodificador de rango impulsada por Nsight Compute
- Las optimizaciones llevaron a una aceleración del ~20% en la velocidad del kernel
Las secciones siguientes detallan estos cambios en el decodificador VC-6. El enfoque inicial fue utilizar un perfilador a nivel de sistema como Nsight Systems para identificar y corregir cuellos de botella de rendimiento, seguido de refinamientos en kernels individuales con Nsight Compute.
Transición a un solo decodificador
La parte superior de la Figura 1 muestra el punto de partida. En el siguiente análisis, se observa una gran utilización de la GPU al cambiar de múltiples pequeños kernels a unos pocos grandes.
La nueva implementación demuestra que la ejecución de un solo decodificador permite un uso más eficiente de la GPU, reduciendo el tiempo de decodificación.
Desplazamiento de más trabajo a la GPU
En la implementación inicial, la decodificación de los niveles raíz y estrechos de las jerarquías de mosaicos VC-6 se realizaba en la CPU. Con el diseño por lotes, la agregación de múltiples imágenes proporciona suficiente paralelismo para utilizar eficientemente la GPU.
Además, se modificó el algoritmo para eliminar la lógica del lado del host que maneja dimensiones de imagen variables, lo que aumentó la fluidez del pipeline.
Resultados de rendimiento y escalado
La Figura 8 compara el tiempo de decodificación por imagen en diferentes tamaños de lote, mostrando mejoras significativas en la eficiencia del procesamiento.

Se observan comportamientos de escalado distintos, donde la implementación optimizada continúa mejorando con el aumento del tamaño del lote.
Conclusiones y recursos
Para comenzar con la decodificación VC-6, se requiere más que el ajuste de kernels. La nueva implementación logra hasta un ~85% menos de tiempo de decodificación por imagen, lo cual es crítico para la eficiencia del pipeline en cargas de trabajo de visión AI.
Para más información, consulte los siguientes recursos:
- Ejemplos de VC-6
- Ejemplos para la codificación VC-6 y decodificación selectiva
- VC-6 AI Blueprint
- Demostración de decodificación selectiva en pipelines de visión AI


