SKILL.md
gpuutilizationmonitoring
Skill para monitorizar en tiempo real el uso de GPU (memoria VRAM, compute utilization, temperatura y power draw) de los workers de inferencia ML del sistema de verificación KYC. Permite identificar cuellos de botella en el pipeline de modelos faciales, liveness y OCR, y optimizar la asignación de recursos entre modelos.
When to use
Usar esta skill cuando el modelserveragent necesite configurar, consultar o ajustar la monitorización de recursos GPU en los nodos de inferencia. Aplica al dimensionar infraestructura, diagnosticar latencias elevadas, planificar escalado o detectar fugas de memoria VRAM en los modelos desplegados.
Instructions
- Configurar la recolección de métricas GPU mediante NVIDIA DCGM (Data Center GPU Manager) como fuente primaria:
``bash # Instalar y arrancar DCGM exporter para Prometheus docker run -d --gpus all --rm -p 9400:9400 \ nvcr.io/nvidia/k8s/dcgm-exporter:3.3.5-3.4.0-ubuntu22.04 ``
- Definir las métricas clave a monitorizar por cada worker de inferencia:
``yaml # dcgm-metrics.yaml metrics: - DCGMFIDEVGPUUTIL # % uso compute - DCGMFIDEVMEMCOPYUTIL # % uso memoria - DCGMFIDEVFBUSED # VRAM usada (MB) - DCGMFIDEVFBFREE # VRAM libre (MB) - DCGMFIDEVGPUTEMP # Temperatura GPU - DCGMFIDEVPOWERUSAGE # Consumo energético (W) - DCGMFIPROFSM_OCCUPANCY # Ocupación de SMs ``
- Configurar dashboards en Grafana con paneles por modelo del pipeline KYC:
`` Panel 1: GPU Utilization por modelo (ArcFace, Liveness, PaddleOCR) Panel 2: VRAM allocation y fragmentación Panel 3: Latencia de inferencia P50/P95/P99 Panel 4: Throughput (inferencias/segundo) por modelo Panel 5: Temperatura y throttling events ``
- Establecer umbrales de alerta para cada métrica:
``python GPUALERTS = { "gpuutillow": {"threshold": 30, "condition": "below", "action": "considerconsolidation"}, "gpuutilhigh": {"threshold": 90, "condition": "above", "duration": "5m", "action": "scaleout"}, "vramusage": {"threshold": 85, "condition": "abovepercent", "action": "alertmemorypressure"}, "temperature": {"threshold": 83, "condition": "abovecelsius", "action": "alertthermalthrottle"} } ``
- Implementar script de diagnóstico rápido para consultar estado actual de GPUs:
``bash nvidia-smi --query-gpu=index,name,utilization.gpu,utilization.memory,memory.used,memory.total,temperature.gpu,power.draw \ --format=csv,noheader,nounits ``
- Configurar correlación entre métricas GPU y métricas de negocio (tiempo de verificación total < 8s) para identificar qué modelo es el cuello de botella.
- Implementar auto-scaling basado en métricas GPU mediante Kubernetes HPA custom metrics:
``yaml apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler spec: metrics: - type: Pods pods: metric: name: DCGMFIDEVGPUUTIL target: type: AverageValue averageValue: "75" ``
Notes
- La monitorización GPU debe ejecutarse con mínimo overhead; DCGM opera a nivel driver y no impacta el rendimiento de inferencia, a diferencia de polling continuo con nvidia-smi.
- Considerar que los modelos del pipeline KYC tienen patrones de uso diferentes: ArcFace tiene picos en face_match, mientras que liveness es más constante. Dashboards separados por modelo facilitan el diagnóstico.
- Las métricas de temperatura son críticas en despliegues on-premise; el thermal throttling puede degradar latencias sin generar errores visibles en los logs de aplicación.