dcgm_exporter
NVIDIA Data Center GPU Manager (DCGM) Exporter para recopilar metricas detalladas de GPU de los nodos de inferencia del pipeline KYC. Monitorea utilizacion de GPU, memoria VRAM, temperatura, consumo energetico y errores ECC en las tarjetas que ejecutan los modelos de reconocimiento facial (ArcFace/InsightFace), deteccion de vida y analisis antifraude.
When to use
Usa esta skill cuando necesites monitorear el estado y rendimiento de las GPUs que ejecutan inferencia ML en el pipeline de verificacion KYC. Pertenece al observability_agent y se aplica cuando hay que diagnosticar cuellos de botella en GPU, planificar escalado de nodos de inferencia o detectar degradacion de hardware en las tarjetas graficas.
Instructions
Desplegar DCGM Exporter como DaemonSet en los nodos con GPU del cluster:
# k8s/dcgm-exporter-daemonset.yml
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: dcgm-exporter
namespace: monitoring
spec:
selector:
matchLabels:
app: dcgm-exporter
template:
metadata:
labels:
app: dcgm-exporter
spec:
nodeSelector:
nvidia.com/gpu.present: "true"
containers:
- name: dcgm-exporter
image: nvcr.io/nvidia/k8s/dcgm-exporter:3.3.8-3.6.0-ubuntu22.04
ports:
- containerPort: 9400
name: metrics
securityContext:
runAsNonRoot: false
capabilities:
add: ["SYS_ADMIN"]
volumeMounts:
- name: dcgm-counters
mountPath: /etc/dcgm-exporter/customized.csv
subPath: customized.csv
volumes:
- name: dcgm-counters
configMap:
name: dcgm-custom-counters
Definir contadores personalizados relevantes para la carga de inferencia KYC:
# customized.csv
DCGM_FI_DEV_GPU_UTIL, gauge, GPU utilization
DCGM_FI_DEV_MEM_COPY_UTIL, gauge, Memory utilization
DCGM_FI_DEV_FB_FREE, gauge, Free framebuffer memory (MB)
DCGM_FI_DEV_FB_USED, gauge, Used framebuffer memory (MB)
DCGM_FI_DEV_GPU_TEMP, gauge, GPU temperature (C)
DCGM_FI_DEV_POWER_USAGE, gauge, Power usage (W)
DCGM_FI_DEV_ECC_SBE_VOL_TOTAL, counter, Single-bit ECC errors
DCGM_FI_DEV_ECC_DBE_VOL_TOTAL, counter, Double-bit ECC errors
DCGM_FI_DEV_SM_CLOCK, gauge, SM clock frequency (MHz)
DCGM_FI_DEV_PCIE_TX_THROUGHPUT, counter, PCIe TX throughput
DCGM_FI_DEV_PCIE_RX_THROUGHPUT, counter, PCIe RX throughput
DCGM_FI_PROF_GR_ENGINE_ACTIVE, gauge, Graphics engine active ratio
Configurar el scrape de Prometheus para los endpoints de DCGM Exporter:
scrape_configs:
- job_name: 'dcgm-exporter'
scrape_interval: 15s
kubernetes_sd_configs:
- role: pod
relabel_configs:
- source_labels: [__meta_kubernetes_pod_label_app]
regex: dcgm-exporter
action: keep
- source_labels: [__meta_kubernetes_pod_node_name]
target_label: node
Crear alertas para condiciones criticas de GPU en los nodos de inferencia:
groups:
- name: gpu-health
rules:
- alert: GPUHighTemperature
expr: DCGM_FI_DEV_GPU_TEMP > 85
for: 2m
labels:
severity: critical
annotations:
summary: "GPU {{ $labels.gpu }} en nodo {{ $labels.node }} a {{ $value }}C"
- alert: GPUMemoryExhausted
expr: DCGM_FI_DEV_FB_FREE < 512
for: 1m
labels:
severity: critical
annotations:
summary: "GPU {{ $labels.gpu }} con menos de 512MB VRAM libre"
- alert: GPUECCErrors
expr: rate(DCGM_FI_DEV_ECC_DBE_VOL_TOTAL[5m]) > 0
for: 1m
labels:
severity: critical
annotations:
summary: "Errores ECC double-bit detectados en GPU {{ $labels.gpu }}"
Definir alertas de rendimiento para detectar degradacion de la inferencia:
- alert: GPUUtilizationLow
expr: DCGM_FI_DEV_GPU_UTIL < 10 and on(node) kube_node_status_condition{condition="Ready",status="true"} == 1
for: 10m
labels:
severity: warning
annotations:
summary: "GPU infrautilizada en {{ $labels.node }}, considerar consolidar carga"
- alert: GPUUtilizationSaturated
expr: DCGM_FI_DEV_GPU_UTIL > 95
for: 5m
labels:
severity: warning
annotations:
summary: "GPU saturada en {{ $labels.node }}, posible cuello de botella en inferencia"
Crear un dashboard de Grafana especifico para los nodos de inferencia KYC:
{
"panels": [
{
"title": "GPU Utilization por Nodo",
"targets": [{"expr": "DCGM_FI_DEV_GPU_UTIL", "legendFormat": "{{ node }}/{{ gpu }}"}]
},
{
"title": "VRAM Usada vs Disponible",
"targets": [
{"expr": "DCGM_FI_DEV_FB_USED", "legendFormat": "Usada {{ gpu }}"},
{"expr": "DCGM_FI_DEV_FB_FREE", "legendFormat": "Libre {{ gpu }}"}
]
},
{
"title": "Correlacion GPU vs Latencia KYC",
"targets": [
{"expr": "DCGM_FI_DEV_GPU_UTIL"},
{"expr": "histogram_quantile(0.95, rate(kyc_verification_duration_seconds_bucket{stage='face_match'}[5m]))"}
]
}
]
}
Verificar que el NVIDIA device plugin y los drivers estan correctamente instalados:
kubectl get nodes -o json | jq '.items[].status.allocatable["nvidia.com/gpu"]'
dcgmi discovery -l
Notes
- Los modelos ArcFace e InsightFace requieren VRAM significativa; la alerta de GPUMemoryExhausted debe ajustarse segun el tamano de los modelos cargados y el batch size de inferencia configurado.
- Los errores ECC double-bit son criticos e indican degradacion del hardware de la GPU; cuando se detecten, se debe drenar el nodo y reemplazar la tarjeta para evitar resultados de inferencia corruptos en las comparaciones faciales.
- El throughput de PCIe es relevante para detectar cuellos de botella en la transferencia de imagenes entre CPU y GPU, especialmente cuando se procesan multiples sesiones de verificacion en paralelo.
1---2name: dcgm-exporter3description: NVIDIA DCGM Exporter para metricas de GPU en nodos de inferencia ML del pipeline KYC4---56# dcgm_exporter78NVIDIA Data Center GPU Manager (DCGM) Exporter para recopilar metricas detalladas de GPU de los nodos de inferencia del pipeline KYC. Monitorea utilizacion de GPU, memoria VRAM, temperatura, consumo energetico y errores ECC en las tarjetas que ejecutan los modelos de reconocimiento facial (ArcFace/InsightFace), deteccion de vida y analisis antifraude.910## When to use1112Usa esta skill cuando necesites monitorear el estado y rendimiento de las GPUs que ejecutan inferencia ML en el pipeline de verificacion KYC. Pertenece al **observability_agent** y se aplica cuando hay que diagnosticar cuellos de botella en GPU, planificar escalado de nodos de inferencia o detectar degradacion de hardware en las tarjetas graficas.1314## Instructions15161. Desplegar DCGM Exporter como DaemonSet en los nodos con GPU del cluster:17 ```yaml18 # k8s/dcgm-exporter-daemonset.yml19 apiVersion: apps/v120 kind: DaemonSet21 metadata:22 name: dcgm-exporter23 namespace: monitoring24 spec:25 selector:26 matchLabels:27 app: dcgm-exporter28 template:29 metadata:30 labels:31 app: dcgm-exporter32 spec:33 nodeSelector:34 nvidia.com/gpu.present: "true"35 containers:36 - name: dcgm-exporter37 image: nvcr.io/nvidia/k8s/dcgm-exporter:3.3.8-3.6.0-ubuntu22.0438 ports:39 - containerPort: 940040 name: metrics41 securityContext:42 runAsNonRoot: false43 capabilities:44 add: ["SYS_ADMIN"]45 volumeMounts:46 - name: dcgm-counters47 mountPath: /etc/dcgm-exporter/customized.csv48 subPath: customized.csv49 volumes:50 - name: dcgm-counters51 configMap:52 name: dcgm-custom-counters53 ```54552. Definir contadores personalizados relevantes para la carga de inferencia KYC:56 ```csv57 # customized.csv58 DCGM_FI_DEV_GPU_UTIL, gauge, GPU utilization59 DCGM_FI_DEV_MEM_COPY_UTIL, gauge, Memory utilization60 DCGM_FI_DEV_FB_FREE, gauge, Free framebuffer memory (MB)61 DCGM_FI_DEV_FB_USED, gauge, Used framebuffer memory (MB)62 DCGM_FI_DEV_GPU_TEMP, gauge, GPU temperature (C)63 DCGM_FI_DEV_POWER_USAGE, gauge, Power usage (W)64 DCGM_FI_DEV_ECC_SBE_VOL_TOTAL, counter, Single-bit ECC errors65 DCGM_FI_DEV_ECC_DBE_VOL_TOTAL, counter, Double-bit ECC errors66 DCGM_FI_DEV_SM_CLOCK, gauge, SM clock frequency (MHz)67 DCGM_FI_DEV_PCIE_TX_THROUGHPUT, counter, PCIe TX throughput68 DCGM_FI_DEV_PCIE_RX_THROUGHPUT, counter, PCIe RX throughput69 DCGM_FI_PROF_GR_ENGINE_ACTIVE, gauge, Graphics engine active ratio70 ```71723. Configurar el scrape de Prometheus para los endpoints de DCGM Exporter:73 ```yaml74 scrape_configs:75 - job_name: 'dcgm-exporter'76 scrape_interval: 15s77 kubernetes_sd_configs:78 - role: pod79 relabel_configs:80 - source_labels: [__meta_kubernetes_pod_label_app]81 regex: dcgm-exporter82 action: keep83 - source_labels: [__meta_kubernetes_pod_node_name]84 target_label: node85 ```86874. Crear alertas para condiciones criticas de GPU en los nodos de inferencia:88 ```yaml89 groups:90 - name: gpu-health91 rules:92 - alert: GPUHighTemperature93 expr: DCGM_FI_DEV_GPU_TEMP > 8594 for: 2m95 labels:96 severity: critical97 annotations:98 summary: "GPU {{ $labels.gpu }} en nodo {{ $labels.node }} a {{ $value }}C"99 - alert: GPUMemoryExhausted100 expr: DCGM_FI_DEV_FB_FREE < 512101 for: 1m102 labels:103 severity: critical104 annotations:105 summary: "GPU {{ $labels.gpu }} con menos de 512MB VRAM libre"106 - alert: GPUECCErrors107 expr: rate(DCGM_FI_DEV_ECC_DBE_VOL_TOTAL[5m]) > 0108 for: 1m109 labels:110 severity: critical111 annotations:112 summary: "Errores ECC double-bit detectados en GPU {{ $labels.gpu }}"113 ```1141155. Definir alertas de rendimiento para detectar degradacion de la inferencia:116 ```yaml117 - alert: GPUUtilizationLow118 expr: DCGM_FI_DEV_GPU_UTIL < 10 and on(node) kube_node_status_condition{condition="Ready",status="true"} == 1119 for: 10m120 labels:121 severity: warning122 annotations:123 summary: "GPU infrautilizada en {{ $labels.node }}, considerar consolidar carga"124 - alert: GPUUtilizationSaturated125 expr: DCGM_FI_DEV_GPU_UTIL > 95126 for: 5m127 labels:128 severity: warning129 annotations:130 summary: "GPU saturada en {{ $labels.node }}, posible cuello de botella en inferencia"131 ```1321336. Crear un dashboard de Grafana especifico para los nodos de inferencia KYC:134 ```json135 {136 "panels": [137 {138 "title": "GPU Utilization por Nodo",139 "targets": [{"expr": "DCGM_FI_DEV_GPU_UTIL", "legendFormat": "{{ node }}/{{ gpu }}"}]140 },141 {142 "title": "VRAM Usada vs Disponible",143 "targets": [144 {"expr": "DCGM_FI_DEV_FB_USED", "legendFormat": "Usada {{ gpu }}"},145 {"expr": "DCGM_FI_DEV_FB_FREE", "legendFormat": "Libre {{ gpu }}"}146 ]147 },148 {149 "title": "Correlacion GPU vs Latencia KYC",150 "targets": [151 {"expr": "DCGM_FI_DEV_GPU_UTIL"},152 {"expr": "histogram_quantile(0.95, rate(kyc_verification_duration_seconds_bucket{stage='face_match'}[5m]))"}153 ]154 }155 ]156 }157 ```1581597. Verificar que el NVIDIA device plugin y los drivers estan correctamente instalados:160 ```bash161 kubectl get nodes -o json | jq '.items[].status.allocatable["nvidia.com/gpu"]'162 dcgmi discovery -l163 ```164165## Notes166167- Los modelos ArcFace e InsightFace requieren VRAM significativa; la alerta de GPUMemoryExhausted debe ajustarse segun el tamano de los modelos cargados y el batch size de inferencia configurado.168- Los errores ECC double-bit son criticos e indican degradacion del hardware de la GPU; cuando se detecten, se debe drenar el nodo y reemplazar la tarjeta para evitar resultados de inferencia corruptos en las comparaciones faciales.169- El throughput de PCIe es relevante para detectar cuellos de botella en la transferencia de imagenes entre CPU y GPU, especialmente cuando se procesan multiples sesiones de verificacion en paralelo.