Zwei Modelle auf einer GPU ausführen: Die Mathematik hinter lokalen LLMs

Ich betreibe einen Agenten-Stack auf einer Workstation. Die Modelle laufen auf einem DGX Spark über ein LAN. Ich verwende vLLM anstelle von Ollama, um den Speicher besser zu verwalten.

Das Ziel ist es, zwei Modelle gleichzeitig auszuführen:

Beide Modelle greifen über einen LiteLLM-Proxy auf eine einzige URL zu. Dieses Setup ist mehrmals fehlgeschlagen, bevor ich die richtige mathematische Grundlage gefunden habe.

Hier sind die Lehren aus diesem Prozess.

Die Speicherfalle Die Einstellung gpu_memory_utilization ist kein Zielwert für den freien Speicher. Sie ist ein Bruchteil des gesamten GPU-Speichers.

Wenn Sie eine 120-GB-Karte haben und die Auslastung auf 0,80 setzen, versucht vLLM, 96 GB der Gesamtkapazität zu beanspruchen. Es berücksichtigt nicht, was aktuell frei ist. Wenn Sie versuchen, zwei Prozesse auszuführen, muss die Summe ihrer Prozentsätze weniger als 0,95 betragen. Sie müssen Platz für den Overhead des CUDA-Frameworks lassen.

Was mit den Modellen geschah Ich habe versucht, die „Thinking“-Version des 80B-Modells zu verwenden. Das schlug fehl. Das Modell führte zwar Reasoning innerhalb von <think>-Tags durch, löste aber nie tatsächlich einen Tool-Call aus. Es stoppte einfach.

Ich musste das 80B-Backbone gegen die Instruct-Version austauschen. Dies ermöglichte es dem Agenten, Tools ordnungsgemäß zu nutzen.

Die eigentliche Mathematik Nach Tests habe ich festgestellt, dass diese Werte für mein Setup funktionieren:

• Qwen3-Next-80B (bei 0,80 Zielwert): Verbraucht ~87,8 GiB tatsächlichen Speicher. • Qwen3-4B (bei 0,10 Zielwert): Verbraucht ~13,8 GiB tatsächlichen Speicher. • Gesamtverbrauch: ~101,6 GiB. • Freier Puffer: ~18 GiB.

Wenn ich den 80B-Wert auf 0,85 erhöhte, konnte das 4B-Modell nicht starten. Der 80B beanspruchte zu viel und ließ keinen Raum für die Mindestanforderungen des 4B.

Mein Playbook für Co-residente Modelle

  1. Laden Sie zuerst das größte Modell.
  2. Lassen Sie es sich stabilisieren.
  3. Führen Sie nvidia-smi aus, um den tatsächlich genutzten Speicher zu sehen.
  4. Dimensionieren Sie das kleinere Modell basierend auf dem verbleibenden freien Speicher abzüglich 5 GB für den Overhead.
  5. Starten Sie beide Modelle zweimal neu, um die Stabilität zu gewährleisten.

Raten Sie nicht bei Ihren Speichereinstellungen. Verwenden Sie diesen Befehl, um die Realität zu sehen: nvidia-smi --query-gpu=memory.used --format=csv

Wenn Ihre Zielzuweisung und Ihr tatsächlicher Verbrauch um mehr als 10 % abweichen, ist Ihre Berechnung falsch. Korrigieren Sie dies, bevor Sie Ihren Agenten-Stack bereitstellen.

Quelle: https://dev.to/ric03uec/two-qwen3-models-on-one-dgx-spark-the-residency-math-for-local-llm-coding-5bpj

Optionale Lern-Community: https://t.me/GyaanSetuAi