La memoria no estaba llena, estaba reservada: de 1,9 a 70 GB libres con un solo parámetro
vLLM llenaba con caché todo lo que le dejábamos. El modelo necesitaba 27 GB y se quedaba con 110. El remedio lo sugería el propio log.
Qué pasaba
Con el modelo funcionando a 139 tok/s, el sistema avisaba de que quedaban 1,9 GB libres. ¿No tiene solución?
Diagnóstico
El log de arranque de vLLM lo explicaba sin instrumentar nada:
| concepto | GB |
|---|---|
| pesos y resto | 22,4 |
| memoria de activación | 2,4 |
| CUDA graphs | 2,8 |
| caché KV reservada | 85,9 |
El modelo necesitaba unos 27,6 GB. Con --gpu-memory-utilization 0.91, vLLM rellenaba con caché todo lo demás: 20 millones de tokens, 78 veces una conversación completa de 262K.
El remedio
Sustituir el porcentaje por una cantidad fija de caché, como sugiere el propio vLLM:
--kv-cache-memory=16G
| caché reservada | conversaciones completas | memoria libre |
|---|---|---|
| 86 GB | 78 | 1,9 GB |
| 16 GB | 14,5 | 70,2 GB |
Sin tocar el modelo ni perder velocidad apreciable.
Qué significa para ti
Si vLLM te deja sin memoria, mira en su log cuánto reserva para caché. Con memoria unificada, esa reserva se la quita al resto del sistema, y casi nunca necesitas tanta.
Medido en nuestras máquinas. Dos ASUS Ascent GX10 (NVIDIA GB10, 128 GB de memoria unificada). En tu equipo las cifras serán otras: lo que se traslada es el método y la lección.