Bereitstellung eines 27B-Modells auf einem internen Server und Einsparung von Token-Kosten
Aufgrund von Sicherheitsvorschriften können externe APIs nicht genutzt werden, weshalb ein 27B-Modell auf einem eigenen Server bereitgestellt werden muss. Das Budget reicht nicht aus, um teure H100-Karten zu kaufen, und die monatlichen Token-Kosten steigen rasant an. Dieser Beitrag behandelt konkrete Praxisansätze, um im On-Premises-Hhe-Setup mehr als 40% des Hardwarebudgets einzusparen und die Verschwendung von Token durch Endlosschleifen zu verhindern.
Multi-GPU-Konfiguration zur Senkung des Hardwarebudgets
Um das 27B-Modell ohne OOM (Out Of Memory) auszuführen, muss der VRAM-Bedarf präzise berechnet werden. Anstatt eine einzelne Nvidia H100 mit 80 GB zu kaufen, können Sie zwei RTX 4090 mit je 24 GB kombinieren, um einen integrierten VRAM von 48 GB zu erhalten. Durch diesen Ansatz lassen sich die anfänglichen Hardware-Investitionskosten um die Hälfte oder mehr senken.
- Stellen Sie sicher, dass das Modellgewicht (ca. 28 GB bei FP8) plus der KV-Cache (1 GB bei einem 8K-Kontext) insgesamt den benötigten VRAM von 30 GB nicht überschreiten.
- In Umgebungen ohne NVLink geben Sie bei der Ausführung von vLLM die Option
--tensor-parallel-size 2 an, um die Berechnungen innerhalb der PCIe-Bandbreite zu verteilen.
- Verwenden Sie ein Netzteil mit 80-Plus-Titanium-Zertifizierung, um die von zwei RTX 4090 erzeugte Spitzenleistung von über 1000 W zu bewältigen, und verhindern Sie thermisches Drosseln durch frontseitige Ansauglüfter.
Es besteht keine Notwendigkeit, sich auf teure Einzelgeräte zu versteifen. Günstigere Grafikkarten parallel zu schalten, ist eine realistische Alternative für ein unter Druck stehendes Infrastrukturteam.
Engine-Konfiguration zur Verhinderung von Endlosschleifen beim Token-Verbrauch
Bei der Verarbeitung komplexer Logik schaffen es aktuelle 27B-Modelle oft nicht, ein End-Token (Stop-Token) auszugeben, und geraten bis zur maximalen Token-Anzahl in Endlosschleifen. In kommerziellen API-Umgebungen führt allein dieses Phänomen dazu, dass die monatlichen Betriebskosten unüberschaubar steigen. Diese Verschwendung lässt sich durch Anpassung der Parameter in der lokalen Serving-Engine zuverlässig stoppen.
- Vergeben Sie in den Serving-Parametern
repeat_penalty 1.15 und presence_penalty 0.1, um das wiederholte Auftreten derselben Sätze zu unterdrücken.
- Fügen Sie im Konfigurationsdatei-Array
stop die Werte <|im_end|>, <|eot_id|> und \nUser: hinzu, um zu verhindern, dass das Modell Selbstgespräche führt.
- Wenden Sie
temperature 0.2 und min_p 0.05 an, um das Modell davon abzuhalten, Tokens mit niedriger Wahrscheinlichkeit anzufassen.
Durch diese Einstellungen sinkt die durchschnittliche Anzahl der ausgegebenen Tokens von 4.000 auf 800. Selbst unter Einberechnung von Stromkosten und Geräteabschreibung lassen sich die monatlichen Betriebskosten pro Gerät im Bereich von 290 US-Dollar halten.
Gewichtungsverteilung und Pipeline-Management in einer Air-Gapped-Umgebung
In einer vollständig vom externen Netz getrennten Air-Gapped-Umgebung ist eine Pipeline zur stabilen Verwaltung und Bereitstellung von Gewichten unerlässlich. Mit vLLM lässt sich auch im internen Firmennetzwerk ein API-Endpunkt mit einer Geschwindigkeit einrichten, die kommerziellen Diensten in nichts nachsteht.
- Laden Sie die Gewichte auf einem internetfähigen Bastion Host über
huggingface-cli herunter und verwenden Sie dabei die Option --local-dir-use-symlinks False, um sie in einer einzelnen Dateistruktur zu speichern.
- Wenden Sie beim Start von vLLM
--enable-prefix-caching und --gpu-memory-utilization 0.92 an, um die Wiederverwendbarkeit des RAG-Kontexts zu erhöhen und eine Fragmentierung des VRAM zu verhindern.
- Überwachen Sie den Prometheus-Endpunkt (
/metrics) kontinuierlich, und senken Sie den Wert --max-model-len sofort von 16384 auf 8192 ab, wenn die Metrik vllm:gpu_cache_usage_factor 90% überschreitet.
Der einzige Weg, die firmeninternen Sicherheitsrichtlinien einzuhalten und gleichzeitig die Kosten zu kontrollieren, besteht letztlich darin, alles selbst einzurichten und die Kennzahlen zu überwachen.