NVIDIA presenta NCCL 2.22 con eficiencia de memoria mejorada e inicialización más rápida


carolina obispo
21 de septiembre de 2024 13:38

NVIDIA presenta NCCL 2.22, centrado en la eficiencia de la memoria, una inicialización más rápida y una estimación de costos para aplicaciones HPC e IA mejoradas.



NVIDIA presenta NCCL 2.22 con eficiencia de memoria mejorada e inicialización más rápida

La Biblioteca de Comunicaciones Colectivas de NVIDIA (NCCL) ha lanzado su última versión, NCCL 2.22, que trae mejoras significativas destinadas a optimizar el uso de la memoria, acelerar los tiempos de inicialización e introducir una API de estimación de costos. Estas actualizaciones son cruciales para la informática de alto rendimiento (HPC) y inteligencia artificial (Aplicaciones de IA), según el Blog de tecnología de NVIDIA.

Aspectos destacados del lanzamiento

NVIDIA Magnum IO NCCL está diseñado para optimizar la comunicación entre GPU y múltiples nodos, lo cual es esencial para una computación paralela eficiente. Las características principales de la versión NCCL 2.22 son:

  • Establecimiento de conexión diferida: Esta característica retrasa la creación de conexiones hasta que se necesitan, lo que reduce significativamente la sobrecarga de memoria de la GPU.
  • Nueva API para estimación de costos: Una nueva API le permite optimizar el cálculo y la superposición de comunicación o buscar el modelo de costos NCCL.
  • Optimizaciones para ncclCommInitRank: Se eliminan las consultas de topología redundantes, lo que acelera la inicialización hasta en un 90 % para aplicaciones que crean múltiples comunicadores.
  • Soporte para múltiples subredes con el enrutador IB: Agrega soporte para la comunicación en tareas que abarcan múltiples subredes InfiniBand, lo que permite tareas de capacitación de DL más grandes.

Especificaciones detalladas

Establecimiento de conexión diferida

NCCL 2.22 introduce el establecimiento de conexiones diferidas, lo que reduce significativamente el uso de memoria de la GPU al retrasar la creación de conexiones hasta que realmente se necesitan. Esta característica es particularmente útil para aplicaciones que utilizan un alcance limitado, como ejecutar el mismo algoritmo repetidamente. La función está habilitada de forma predeterminada, pero se puede deshabilitar configurando NCCL_RUNTIME_CONNECT=0.

Nueva API de modelo de costos

La nueva API, ncclGroupSimulateEndpermite a los desarrolladores estimar el tiempo necesario para las operaciones, ayudando así a optimizar la superposición de cálculos y comunicaciones. Aunque las estimaciones no coinciden perfectamente con la realidad, proporcionan una guía útil para ajustar el rendimiento.

Optimizaciones de inicialización

Para minimizar la sobrecarga de inicialización, el equipo de NCCL introdujo varias optimizaciones, incluido el establecimiento de conexiones diferidas y la fusión de topologías dentro del nodo. Estas mejoras pueden reducir ncclCommInitRank tiempo de ejecución de hasta el 90%, lo que lo hace significativamente más rápido para aplicaciones que crean múltiples comunicadores.

Nueva interfaz de complemento de sintonizador

La nueva interfaz del complemento del sintonizador (v3) proporciona una tabla de costos 2D por colectivo, que muestra el tiempo estimado requerido para las operaciones. Esto permite a los sintonizadores externos optimizar las combinaciones de algoritmos y protocolos para un mejor rendimiento.

Enlaces de complementos estáticos

Para mayor comodidad y para evitar problemas de carga, NCCL 2.22 admite la vinculación estática de complementos de red o sintonizador. Las aplicaciones pueden especificar esto configurando NCCL_NET_PLUGIN O NCCL_TUNER_PLUGIN tiene STATIC_PLUGIN.

Semántica de grupo para abandonar o destruir.

NCCL 2.22 introduce la semántica de grupo para ncclCommDestroy Y ncclCommAbortpermitiendo que varios comunicadores sean destruidos simultáneamente. Esta característica tiene como objetivo evitar bloqueos y mejorar la experiencia del usuario.

Soporte de enrutador IB

Con esta versión, NCCL puede operar en diferentes subredes InfiniBand, mejorando la comunicación para redes más grandes. La biblioteca descubre y establece automáticamente conexiones entre puntos finales en diferentes subredes, utilizando FLID para un mayor rendimiento y enrutamiento adaptable.

Corrección de errores y actualizaciones menores.

NCCL 2.22 también incluye varias correcciones de errores y actualizaciones menores:

  • Soporte para allreduce algoritmo de árbol en DGX Google Cloud.
  • Registro de nombres de NIC en errores asincrónicos de IB.
  • Rendimiento mejorado de las operaciones de envío y recepción grabadas.
  • Se agregó código de infraestructura para NVIDIA Trusted Computing Solutions.
  • Clase de tráfico separada para mensajes de control IB y RoCE para permitir una calidad de servicio avanzada.
  • Soporte para comunicaciones PCI peer-to-peer en conmutadores PCI Broadcom particionados.

Resumen

La versión NCCL 2.22 presenta varias características y optimizaciones importantes destinadas a mejorar el rendimiento y la eficiencia de las aplicaciones HPC e IA. Las mejoras incluyen una nueva interfaz de complemento de ajuste, compatibilidad con enlaces de complementos estáticos y semántica de grupo mejorada para evitar interbloqueos.

Fuente de la imagen: Shutterstock