NVIDIA presentó una nueva capa de telemetría para NCCL Inspector, su herramienta de instrumentación de la NCCL (NVIDIA Collective Communication Library). A partir de NCCL 2.30, NCCL Inspector soporta un modo Prometheus que exporta métricas de comunicación GPU-a-GPU como series temporales y permite visualizarlas en dashboards Grafana, sin pasar por el archivo intermedio JSON que se usaba hasta ahora.

El cambio apunta a un problema recurrente en deep learning distribuido: cuando un entrenamiento se ralentiza, el origen puede estar en el cómputo, en la comunicación, en un rank específico o en el hardware. Las métricas en vivo aceleran ese diagnóstico.

¿Qué cambió respecto al modo JSON?

NCCL Inspector ahora opera en dos modos:

  • Modo JSON (offline): cada rank escribe sus métricas en un archivo JSON, normalmente en almacenamiento compartido. El análisis se hace después de la ejecución. Es la opción para deep-dive detallado.
  • Modo Prometheus (online): las métricas se exponen continuamente en formato de exposición Prometheus y el node exporter las envía a la base de datos. El archivo de salida se reescribe sobrescribiendo el contenido, eliminando los requisitos de almacenamiento que tenía el modo JSON.
Figura 2. NCCL Inspector en modo Prometheus (tiempo real).
Figura 2. NCCL Inspector en modo Prometheus (tiempo real).

Los archivos de salida tienen formato nccl_inspector_metrics_<uuid_of_the_gpu>.prom. NVIDIA explica que el UUID se incluye en el nombre porque los IDs CUDA de dispositivo pueden chocar en ambientes multiusuario.

Cada métrica viene etiquetada con contexto suficiente para correlacionar contra el job: versión de NCCL, ID de Slurm, nodo, GPU, nombre del comunicador, número de nodos, número de ranks y tamaño del mensaje. Un ejemplo de salida:

Código
nccl_p2p_bus_bandwidth_gbs{version="v5.1",slurm_job_id="1670760",
  node="nvl72033-T01",gpu="GPU0",comm_name="unknown",n_nodes="1",
  nranks="64",p2p_operation="Send",message_size="1-2MB"} 19.1634

Variables de entorno y configuración

Para activar el plugin del profiler hay que setear varias variables:

Código
NCCL_PROFILER_PLUGIN=/path/to/nccl/plugins/profiler/inspector/libnccl-profiler-inspector.so
NCCL_INSPECTOR_ENABLE=1
NCCL_INSPECTOR_DUMP_THREAD_INTERVAL_MICROSECONDS=3000000
NCCL_INSPECTOR_PROM_DUMP=1
NCCL_INSPECTOR_DUMP_DIR=/path/to/node/exporter/log/location

El intervalo del thread de dump y el directorio se ajustan según el node exporter en uso.

Dos casos de uso en producción

NVIDIA ilustra el flujo con dos escenarios concretos.

Observabilidad en vivo

Para un job grande de pre-training de un LLM, NVIDIA mostró un experimento con compute base de ~310 TFLOPs/GPU. Tras introducir restricciones de red artificiales, el ancho de banda de bus AllGather para los colectivos mixtos network + NVLink se degradó visiblemente y la performance cayó a ~268 TFLOPs/GPU, una degradación del 13% versus el baseline.

Figura 6. Dashboard time-series en Grafana mostrando el ancho de banda AllGather para comunicadores mixtos durante un escenario de slowdown inducido por red.
Figura 6. Dashboard time-series en Grafana mostrando el ancho de banda AllGather para comunicadores mixtos durante un escenario de slowdown inducido por red.

Atribución de performance

El segundo caso es histórico: revisar una ventana de tiempo donde el throughput por GPU bajó temporalmente, como en este registro real:

Código
[2026-03-19 14:39:47] -> ~314 TFLOP/s/GPU
[2026-03-19 14:40:48] -> ~295 TFLOP/s/GPU
[2026-03-19 14:42:00] -> ~289 TFLOP/s/GPU
[2026-03-19 14:44:02] -> ~311 TFLOP/s/GPU

Comparando los paneles de ReduceScatter solo-NVLink contra los mixtos network+NVLink, el equipo correlacionó la degradación con una anomalía en la red y aisló el host responsable. Sin los dashboards, el mismo análisis exige cruzar logs y contadores por separado.

Para empezar

NVIDIA publicó plantillas Grafana en el repositorio público de NCCL. Las instrucciones para construir y desplegar el plugin del profiler en modo Prometheus están en el README.md del repositorio, junto con la plantilla Grafana lista para importar.