En pocas palabras
Exporta métricas de GPUs NVIDIA en formato Prometheus mediante DCGM.
Qué problema resuelve
Falta de visibilidad de utilización, temperatura, memoria y errores durante cargas GPU.
Cuándo utilizarlo
Entrenamiento e inferencia. Ejemplo: detectar un worker con menor utilización que el resto.
De la idea a la práctica
Funcionamiento, ejemplos y decisiones para pasar al siguiente nivel.
En el Radar compartido: Trial (valoración de la edición aportada).
Cómo funciona
DCGM recoge telemetría del dispositivo y el exporter publica métricas en un endpoint. Puede integrarse con Prometheus, Grafana y entornos Kubernetes.
Ejemplo de uso
Comparar utilización y memoria entre GPUs de un entrenamiento distribuido. Investigar si un worker lento coincide con errores de memoria, límites de potencia o falta de datos de entrada.
Métricas más útiles
| Métrica | Qué indica |
|---|---|
DCGM_FI_DEV_GPU_UTIL |
% de tiempo con algún kernel en ejecución (no mide eficiencia) |
DCGM_FI_PROF_SM_ACTIVE |
Fracción de multiprocesadores ocupados; más representativa |
DCGM_FI_PROF_PIPE_TENSOR_ACTIVE |
Uso de Tensor Cores (entrenamiento e inferencia en precisión mixta) |
DCGM_FI_PROF_DRAM_ACTIVE |
Actividad de memoria: alta con SM bajo sugiere cuello de memoria |
DCGM_FI_DEV_FB_USED / FB_FREE |
Memoria de GPU usada y libre |
DCGM_FI_DEV_POWER_USAGE |
Consumo en vatios; útil para detectar limitación por potencia |
DCGM_FI_DEV_GPU_TEMP |
Temperatura; relacionada con throttling |
DCGM_FI_DEV_XID_ERRORS |
Errores del driver o hardware (Xid); alerta inmediata |
Una GPU con GPU_UTIL al 100 % puede estar usando una pequeña parte de su capacidad: mira SM_ACTIVE y TENSOR_ACTIVE antes de concluir que está saturada.
Despliegue
# En un host con drivers y NVIDIA Container Toolkit
docker run -d --gpus all --cap-add SYS_ADMIN -p 9400:9400 \
nvcr.io/nvidia/k8s/dcgm-exporter:<versión>
curl localhost:9400/metrics | grep DCGM_FI_DEV_GPU_UTIL
En Kubernetes se instala como DaemonSet mediante su Helm chart o como parte del NVIDIA GPU Operator. Con el pod resources API del kubelet añade las etiquetas pod, namespace y container a cada métrica, lo que permite atribuir el uso de GPU a cada workload.
Selección de contadores
Los contadores se definen en un CSV (-f /etc/dcgm-exporter/default-counters.csv). Los de perfilado (DCGM_FI_PROF_*) tienen más coste y algunos no están disponibles en todas las arquitecturas. Elige un conjunto pequeño por defecto y activa más solo al investigar.
Alertas recomendadas
- Errores Xid o ECC no corregibles → página inmediata.
- Temperatura sostenida cerca del límite o throttling por potencia.
- GPU asignada a un pod con
SM_ACTIVEcercano a cero durante horas: recurso caro desaprovechado.
Visualiza en Grafana con el dashboard oficial de DCGM y correlaciona con métricas del servidor de inferencia, como las de vLLM.
Criterios de implementación
Comprobar compatibilidad de drivers y hardware y seleccionar contadores relevantes. Proteger el endpoint y controlar etiquetas por workload para evitar cardinalidad innecesaria.
Continúa en las fuentes
Documentación oficial para verificar detalles y explorar más.