Entwickeln Sie Large Language Model (LLM)-Anwendungen und kämpfen mit langsamen Inferenzgeschwindigkeiten oder Speicherbeschränkungen? vLLM ist die Lösung, die führende API- und Backend-Ingenieure einsetzen, um das LLM-Serving zu beschleunigen, hohe Parallelität zu bewältigen und Infrastrukturkosten zu senken. Dieser praktische Leitfaden erklärt, was vLLM ist, wie es funktioniert, wie man es installiert und wie man es sowohl für Batch- als auch für Echtzeit-API-Inferenz verwendet, damit Ihr Team schnelle, zuverlässige KI-Funktionen im großen Maßstab bereitstellen kann.
Was ist vLLM? Warum ist es wichtig für LLM-APIs?
vLLM ist eine Open-Source-Inferenz-Engine mit hohem Durchsatz und effizienter Speichernutzung, die für das Serving großer Sprachmodelle entwickelt wurde. Von führenden Forschern und Ingenieuren entwickelt, bewältigt sie zwei der größten Herausforderungen bei LLM-Bereitstellungen:
- Langsamen Inferenzgeschwindigkeiten: Insbesondere bei vielen gleichzeitigen Benutzern oder großen Batch-Jobs.
- Hoher Speichernutzung: Herkömmliche Aufmerksamkeitsmechanismen verschwenden GPU-Speicher und begrenzen die Größe und Anzahl der Modelle, die Sie bereitstellen können.
Die Kerninnovationen von vLLM:
- PagedAttention: Optimiert den Key-Value (KV)-Cache, wodurch Speicherverschwendung drastisch reduziert wird, indem ein virtuelles Speicher-ähnliches Paging-System verwendet wird.
- Kontinuierliches Batching: Batcht Anfragen dynamisch, sobald sie eintreffen, maximiert die GPU-Auslastung und minimiert die Wartezeiten der Benutzer.
Stellen Sie sich vLLM als eine turbogeladene Backend-Engine für LLM-APIs vor, insbesondere für Entwickler, die skalierbare, produktionsreife Inferenz benötigen.
Warum API-Entwickler und Backend-Ingenieure vLLM bevorzugen
vLLM wird schnell zur bevorzugten LLM-Inferenz-Engine für technische Teams, weil es Folgendes bietet:
- Durchsatz auf dem neuesten Stand der Technik: Bearbeiten Sie mehr Benutzeranfragen pro Sekunde, verarbeiten Sie größere Datensätze schneller.
- Effiziente GPU-Nutzung: Passen Sie größere Modelle auf Ihre GPUs oder senken Sie die Hardwarekosten für bestehende Workloads.
- Dynamisches Batching: Keine statischen Wartezeiten mehr; vLLM passt sich an den tatsächlichen Verkehr an und hält Ihre GPUs beschäftigt.
- OpenAI-kompatible API: Ersetzen oder ergänzen Sie OpenAI-Endpunkte nahtlos durch Ihre eigenen, selbst gehosteten Modelle.
- Einfache, flexible APIs: Sowohl für Offline-Batch-Jobs als auch für Live-Serving.
- Breite Modellunterstützung: Llama, Mistral, Qwen, OPT, Falcon und weitere von Hugging Face und ModelScope.
- Aktive Open-Source-Entwicklung: Häufige Updates, wachsende Community und modernste Funktionen.
Die vollständige Liste der unterstützten Modelle finden Sie in der vLLM-Dokumentation.
Tipp: Wenn Sie LLM-gestützte APIs entwickeln oder testen, sollten Sie eine Integration mit Apidog in Betracht ziehen. Apidog erleichtert das Entwerfen, Testen und Dokumentieren Ihrer LLM-Endpunkte – egal ob Sie vLLM, OpenAI oder benutzerdefinierte Backends verwenden – und hilft Teams, die API-Zusammenarbeit und QA zu optimieren.
Unterstützte LLMs: Welche Modelle funktionieren mit vLLM?
vLLM unterstützt nativ eine breite Palette von Transformer-basierten Modellen, darunter:
- Llama-Serie: Llama, Llama 2, Llama 3
- Mistral und Mixtral
- Qwen und Qwen2
- GPT-2, GPT-J, GPT-NeoX
- OPT
- Bloom
- Falcon
- MPT
- Und weitere, einschließlich multimodaler Modelle
Die Liste wächst. Für die aktuellste Kompatibilität prüfen Sie die offizielle vLLM-Liste der unterstützten Modelle.
Hinweis: Wenn Ihr Modell nicht aufgeführt ist, aber eine Architektur mit einem unterstützten Modell teilt, kann es dennoch funktionieren – testen Sie es sorgfältig. Benutzerdefinierte Architekturen erfordern möglicherweise das Beitragen von Code Upstream.
Schlüsselkonzepte: PagedAttention und kontinuierliches Batching
Das Verständnis dieser beiden Konzepte hilft Ihnen, Ihre LLM-Bereitstellungen zu optimieren:
PagedAttention
- Problem: Traditionelle Aufmerksamkeit verwendet zusammenhängenden Speicher für den KV-Cache, was zu Fragmentierung und verschwendetem GPU-VRAM führt.
- Lösung: PagedAttention zerlegt den KV-Cache in flexible "Seiten", ähnlich wie virtueller Speicher in Betriebssystemen. Dies kann den Speicher-Overhead um bis zu 90 % reduzieren und ermöglicht die gemeinsame Nutzung des Speichers für gemeinsame Sequenzpräfixe.
Kontinuierliches Batching
- Problem: Statisches Batching (Warten auf einen vollständigen Batch vor dem Start) führt zu ungenutzter GPU-Zeit und hoher Latenz.
- Lösung: Kontinuierliches Batching verarbeitet neue Anfragen sofort, sobald GPU-Ressourcen frei werden, wodurch der Durchsatz maximiert und die Wartezeiten der Benutzer minimiert werden.
Diese Optimierungen sind der Grund, warum vLLM viele andere LLM-Serving-Frameworks übertrifft.
Voraussetzungen: Was Sie vor der Installation von vLLM benötigen
Bevor Sie beginnen, stellen Sie sicher, dass Ihre Umgebung diese Anforderungen erfüllt:
- Betriebssystem: Linux empfohlen (WSL2 und macOS möglich, aber Linux wird am besten unterstützt).
- Python: 3.9, 3.10, 3.11 oder 3.12. Verwenden Sie eine virtuelle Umgebung.
- NVIDIA GPU mit CUDA: Für beste Leistung. (vLLM basiert auf CUDA; reine CPU- und andere Beschleuniger haben begrenzte oder experimentelle Unterstützung.)
- PyTorch: vLLM installiert automatisch eine kompatible Version, Sie können diese jedoch für benutzerdefinierte CUDA-Versionen vorinstallieren.
So installieren Sie vLLM: Schritt für Schritt
1. Mit pip (empfohlen)
python -m venv vllm-env
source vllm-env/bin/activate
# Unter Windows: vllm-env\\Scripts\\activate
pip install vllm
Dadurch werden vLLM und seine Abhängigkeiten (einschließlich PyTorch) installiert.
2. Mit Conda
conda create -n vllm-env python=3.11 -y
conda activate vllm-env
pip install vllm
Tipp: Für benutzerdefinierte CUDA-Versionen installieren Sie PyTorch zuerst mit Conda, dann vLLM.
3. Mit uv (für superschnelle Installationen)
uv venv vllm-env --python 3.12 --seed
source vllm-env/bin/activate
uv pip install vllm
4. Installation überprüfen
python -c "import vllm; print(vllm.__version__)"
vllm --help
Sie sollten die installierte Version und die Befehlszeilenhilfe sehen.
Offline-Batch-Inferenz mit vLLM
Batch-Inferenz ist ideal, um Vorhersagen auf einer Liste von Prompts auszuführen – hervorragend für Bewertung, Datensatzgenerierung oder Massenverarbeitung.
Beispiel: Batch-Inferenz-Skript
from vllm import LLM, SamplingParams
# 1. Prompts definieren
prompts = [
"Die Hauptstadt Frankreichs ist",
"Erklären Sie die Relativitätstheorie in einfachen Worten:",
"Schreiben Sie ein kurzes Gedicht über einen regnerischen Tag:",
"Übersetzen Sie 'Hello, world!' ins Deutsche:",
]
# 2. Sampling-Parameter festlegen
sampling_params = SamplingParams(
temperature=0.7,
top_p=0.95,
max_tokens=150,
stop=["\n", " Human:", " Assistant:"]
)
# 3. vLLM-Engine initialisieren (wählen Sie ein Modell, das Ihre GPU verarbeiten kann)
llm = LLM(model="mistralai/Mistral-7B-Instruct-v0.1")
# 4. Ausgaben generieren
outputs = llm.generate(prompts, sampling_params)
# 5. Ergebnisse anzeigen
for output in outputs:
print("-" * 20)
print(f"Prompt: {output.prompt!r}")
print(f"Generierter Text: {output.outputs[0].text!r}")
print("-" * 20)
Tipps:
- vLLM verwendet standardmäßig Hugging Face Hub-Modelle. Für ModelScope setzen Sie
VLLM_USE_MODELSCOPE=1. - Um die Generierungskonfiguration eines Modells zu überschreiben, verwenden Sie
generation_config="vllm"imLLM-Konstruktor. - Für quantisierte Modelle (AWQ, GPTQ usw.) prüfen Sie die vLLM-Dokumentation und die Hugging Face Modellkarten.
vLLM als OpenAI-kompatibler API-Server betreiben
Möchten Sie LLMs über eine OpenAI-ähnliche API bereitstellen? vLLM macht es einfach, Endpunkte auszutauschen, neue Modelle zu testen und mit API-Tools wie Apidog für nahtlose Design-, Mock- und QA-Workflows zu integrieren.
Den vLLM-Server starten
source vllm-env/bin/activate
vllm serve mistralai/Mistral-7B-Instruct-v0.1
# Oder, für ein anderes Modell:
# vllm serve Qwen/Qwen2-1.5B-Instruct
Wichtige Optionen:
-model <model_name_or_path>: Zu verwendendes Modell (erforderlich)-host 0.0.0.0: An alle Schnittstellen binden (für Fernzugriff)-port 8000: Port angeben-tensor-parallel-size <N>: Modell über N GPUs verteilen-api-key <key>: API-Schlüssel für Anfragen erforderlich (nützlich für die Produktion)-generation-config vllm: Standard-Generierungsparameter von vLLM verwenden-chat-template <path>: Benutzerdefinierte Chat-Vorlage (für fortgeschrittene Nutzung)
Der Server läuft standardmäßig unter http://localhost:8000.
Verwendung des Completions API-Endpunkts
cURL-Beispiel:
curl http://localhost:8000/v1/completions \
-H "Content-Type: application/json" \
-d '{
"model": "mistralai/Mistral-7B-Instruct-v0.1",
"prompt": "San Francisco ist eine Stadt in",
"max_tokens": 50,
"temperature": 0.7
}'
Python-Beispiel (OpenAI-Client):
from openai import OpenAI
client = OpenAI(
api_key="EMPTY", # Oder Ihr API-Schlüssel, falls festgelegt
base_url="http://localhost:8000/v1"
)
completion = client.completions.create(
model="mistralai/Mistral-7B-Instruct-v0.1",
prompt="Erklären Sie die Vorteile der Verwendung von vLLM:",
max_tokens=150,
temperature=0.5
)
print(completion.choices[0].text)
Verwendung des Chat Completions API-Endpunkts
cURL-Beispiel:
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "mistralai/Mistral-7B-Instruct-v0.1",
"messages": [
{"role": "system", "content": "Sie sind ein hilfreicher Assistent."},
{"role": "user", "content": "Was ist der Hauptvorteil von PagedAttention in vLLM?"}
],
"max_tokens": 100,
"temperature": 0.7
}'
Python-Beispiel:
chat_response = client.chat.completions.create(
model="mistralai/Mistral-7B-Instruct-v0.1",
messages=[
{"role": "system", "content": "Sie sind ein hilfreicher Programmierassistent."},
{"role": "user", "content": "Schreiben Sie eine einfache Python-Funktion zur Berechnung der Fakultät."}
],
max_tokens=200,
temperature=0.5
)
print(chat_response.choices[0].message.content)
Mit Apidog können Sie diese API-Endpunkte schnell entwerfen, simulieren und testen, um eine reibungslose Integration und automatisierte Qualitätssicherung für Ihre LLM-gestützten Produkte zu gewährleisten.
vLLM Attention Backends: FlashAttention, xFormers und FlashInfer
vLLM unterstützt mehrere Attention-Berechnungs-Backends für optimale Geschwindigkeit und Speichereffizienz:
- FlashAttention (1 & 2): Am schnellsten für die meisten modernen NVIDIA-GPUs, minimiert den Speicherverbrauch.
- xFormers: Breite Kompatibilität; guter Fallback für ältere oder weniger gängige Hardware.
- FlashInfer: Fortgeschritten, kürzlich hinzugefügt; erfordert manuelle Installation.
Automatische Auswahl: vLLM wählt standardmäßig das beste Backend für Ihre Hardware und Ihr Modell aus.
Manuelle Übersteuerung: Setzen Sie die Umgebungsvariable VLLM_ATTENTION_BACKEND auf FLASH_ATTN, XFORMERS oder FLASHINFER, bevor Sie vLLM ausführen, wenn Sie ein Backend erzwingen möchten.
Fehlerbehebung bei häufigen vLLM-Problemen
1. CUDA-Speicherfehler (Out of Memory)
- Versuchen Sie ein kleineres Modell (z.B. OPT-1.3B)
- Reduzieren Sie gleichzeitige Anfragen oder die Batch-Größe
- Verwenden Sie quantisierte Modelle (AWQ, GPTQ usw.)
- Verteilen Sie auf mehrere GPUs (
-tensor-parallel-size) - Prüfen Sie mit
nvidia-smiauf andere GPU-Prozesse
2. Installations- & Kompatibilitätsprobleme
- Stellen Sie sicher, dass CUDA, PyTorch und NVIDIA-Treiber kompatibel sind (siehe PyTorch Kompatibilitätsmatrix)
- Installieren Sie PyTorch bei Bedarf vor
- Verwenden Sie offizielle vLLM Docker-Images für eine problemlose Einrichtung
3. Modell-Ladefehler
- Überprüfen Sie den Modellnamen (z.B.
mistralai/Mistral-7B-Instruct-v0.1) - Verwenden Sie
trust_remote_code=True, wenn das Modell dies erfordert - Verwenden Sie lokale Pfade für vorab heruntergeladene Modelle
- Prüfen Sie den Festplattenspeicher und die Internetverbindung
4. Langsame Inferenz
- Überwachen Sie die GPU-Auslastung (
nvidia-smi) - Aktualisieren Sie vLLM, Abhängigkeiten und Treiber
- Experimentieren Sie mit verschiedenen Attention-Backends
- Passen Sie die Sampling-Parameter an (
max_tokensusw.)
5. Unerwartete oder unsinnige Ausgabe
- Stellen Sie die korrekte Prompt-Formatierung sicher (siehe Modellkarte)
- Optimieren Sie die Sampling-Parameter (
temperature,top_p) - Versuchen Sie ein anderes Modell, um das Problem zu isolieren
- Überprüfen Sie die Verwendung der Chat-Vorlage auf dem Server
Nächste Schritte: Verbessern Sie Ihren LLM API-Workflow
Mit vLLM können Sie LLM-gestützte APIs schneller bereitstellen und skalieren – und mit Apidog erhalten Sie ein komplettes Toolkit für API-Design, -Tests und -Dokumentation. Diese Kombination ermöglicht es Teams, Folgendes zu tun:
- LLM-Endpunkte mit realen Verkehrsaufkommen entwickeln, simulieren und testen
- QA für vLLM- und OpenAI-kompatible APIs automatisieren
- Teamübergreifende Zusammenarbeit mit klaren, aktuellen API-Dokumentationen
Erkunden Sie die erweiterten Funktionen von vLLM (Quantisierung, Multi-LoRA, verteiltes Serving, spekulatives Decoding) in der offiziellen Dokumentation und beschleunigen Sie Ihren LLM-Entwicklungszyklus mit Apidog für nahtloses API-Management.
