Alle Artikel
LLMs in Produktion betreiben: vLLM und KServe im Vergleich
Standalone, KServe oder BentoML? Ein produktionsnaher Vergleich der vLLM-Deployment-Strategien, inklusive Canary-Rollouts und der Rolle jeder Option in einer LLMOps-Plattform.
·
Lino Deppe

Hinweis: Dieser Artikel erschien zuerst auf Englisch und wurde übersetzt. Fachbegriffe sowie Code und Befehle haben wir absichtlich im Original belassen.
1) Einführung: Warum LLM-Serving klassische Infrastruktur sprengt
Klassische ML-Serving-Stacks – Flask, TensorFlow Serving, Triton mit einfachen Backends – wurden nie für generative Modelle konzipiert. Wer ein Modell mit 70 Milliarden Parametern auf diesen Frameworks betreibt, läuft sofort in OOM-Fehler und unbrauchbare Latenzen. Das Problem ist nicht die Größe allein, sondern ein grundlegend anderes Inferenzparadigma mit drei entscheidenden Engpässen.
GPU-Speicherdruck. Der Speicherbedarf von LLMs ist dynamisch. Der KV-Cache wächst linear mit Sequenzlänge und Batch-Größe. Ein 70B-Modell benötigt allein zum Laden entweder Tensor-Parallelität über mehrere GPUs oder aggressive Quantisierung. Mit INT4 (~35 GB allein für die Modellgewichte) passt es auf eine einzelne 80-GB-A100, wobei rund 45 GB für den KV-Cache-Zustand bleiben – bei moderater Nebenläufigkeit machbar, doch dieses Budget schmilzt schnell, wenn Sequenzlängen und parallele Anfragen zunehmen. Mit Kontextfenstern von mehreren Hunderttausend Tokens ist Speicherkonkurrenz die zentrale Produktionsbeschränkung.
Ineffizientes Batching. Autoregressive Generierung läuft je Anfrage sequenziell ab. Naives Serving liefert gute Latenzen, aber katastrophalen Durchsatz. Statisches Batching ist ebenso untauglich: Die Antwortlängen variieren stark, sodass kürzere Sequenzen mit Dummy-Tokens aufgefüllt werden, um die längste Vervollständigung im Batch zu erreichen – GPU-Zyklen werden für sinnlose Berechnungen verbrannt, bis der gesamte Batch fertig ist.
Autoscaling und Kosten. Übliche Signale (CPU-Auslastung, RPS) sind für GPU-gebundene Workloads bedeutungslos. Die Skalierung muss sich an GPU-Speicherauslastung und KV-Cache-Sättigung orientieren – Metriken, die die meisten Orchestrierungsschichten nicht nativ bereitstellen. Wer das falsch macht, verwirft entweder Anfragen oder verbrennt Budget für ungenutzte A100s zu rund 2–4 US-Dollar pro Stunde und GPU.

Ein Diagramm, das die drei Engpässe (GPU-Speicherdruck, ineffizientes Batching, komplexes Autoscaling) visuell zusammenfasst.
Die Antwort der Branche: eigens für LLMs gebaute Inferenz-Engines. TGI ging Ende 2025 in den Wartungsmodus. SGLang entstand für strukturierte Ausgaben und Prefix-Caching. TensorRT-LLM bleibt beim reinen NVIDIA-Durchsatz unübertroffen.
Für Teams, die die beste Balance aus Durchsatz, Hardware-Unterstützung (NVIDIA + AMD) und produktionsreifem Speichermanagement suchen, hat sich jedoch ein Framework als Standard etabliert: vLLM.
2) vLLM: der Standard unter den Inferenz-Engines
Kerninnovationen
Der zentrale Mechanismus von vLLM, PagedAttention, verwaltet den KV-Cache wie das Virtual-Memory-Paging eines Betriebssystems – nahezu ohne Speicherverschwendung und mit 2- bis 4-fach höherem Durchsatz gegenüber statischer KV-Cache-Zuteilung. Continuous Batching schleust neue Anfragen ein, sobald Ausführungsplätze frei werden, und beseitigt so Leerlaufzyklen durch das Warten auf den Abschluss eines vollständigen Batches.

Links: Speicherbedarf beim Laden des 14B-Modells Phi-3-medium in die GPU
Rechts: Request Batching (mit vLLM umgesetzt) zur Steigerung des Anfragedurchsatzes
Aus Infrastruktursicht: Die Hardwareunterstützung umfasst NVIDIA- und AMD-GPUs, es stellt eine OpenAI-kompatible API bereit (Drop-in-Ersatz für bestehende Integrationen), und produktionsreife Deployments sind schnell erreichbar. Das Ökosystem ist ausgereift – erstklassige Integration mit KServe, BentoML und Ray Serve ab Werk.
Dieser Beitrag bezieht sich auf vLLM v0.23.0 (Stand Juni 2026). Die jüngsten Releases konzentrierten sich auf Optimierungen beim Speculative Decoding, erweiterte multimodale Unterstützung und verbesserte Multi-Node-Tensor-Parallelität. Bekannte Einschränkungen: Speicherfragmentierung in Grenzfällen bei langer Laufzeit sowie Konfigurationsreibung beim Hot-Swapping mehrerer LoRA-Adapter unter hoher Last.
Alternativen
Engine | Stärke | Kompromiss |
TensorRT-LLM | Höchster reiner Durchsatz auf NVIDIA | Nur NVIDIA, stundenlange Kompilierung, komplexe Einrichtung |
SGLang | Am besten für strukturierte Ausgaben (JSON), RadixAttention | Kleinere Community, begrenzte Multi-GPU-Skalierung |
TGI | HF-nativ, einfacher Einstieg | Seit Ende 2025 im Wartungsmodus |
TensorRT-LLM gewinnt beim Spitzendurchsatz für statische, NVIDIA-exklusive Deployments. SGLang übertrifft vLLM bei komplexen strukturierten Ausgaben und der Wiederverwendung von Prefixen über mehrere Dialogrunden. Keines von beiden erreicht jedoch die Balance von vLLM aus universellem Hochlast-Serving, breiter Hardwareunterstützung und Ökosystem-Integration – weshalb jedes größere Deployment-Framework es nativ unterstützt.
Diese Balance macht vLLM zur richtigen Basis für einen Deployment-Vergleich.
3) vLLM in Produktion betreiben
Die Engine steht fest – nun stellt sich die Frage, wie sie operationalisiert wird. Drei Deployment-Muster dominieren, jedes für einen anderen Reifegrad der Infrastruktur.
3.1) Standalone
Die Basis ist unkompliziert: vllm serve <model> oder das Docker-Image vllm/vllm-openai hinter einem Load Balancer. Der vLLM Production Stack (Open Source) ergänzt einen Request Router, der generische Load Balancer ablöst – er routet nach Session-ID oder Routing-Schlüsseln, um die Wiederverwendung des KV-Cache über Instanzen hinweg zu maximieren, ohne Änderungen auf Anwendungsebene.
Der Reiz liegt in der operativen Einfachheit. Es wird keine Kubernetes-Control-Plane benötigt, Sie behalten direkte Kontrolle auf Host-Ebene über GPU-Zuteilung, Netzwerk und Shared Memory, und es bleibt der schnellste Weg vom Prototyp zum Produktionsendpunkt. Für Teams auf Bare Metal oder einzelnen Cloud-Instanzen entfällt damit eine ganze Klasse an Orchestrierungskomplexität.
Die Kompromisse sind eindeutig. Es gibt kein natives, metrikgetriebenes Autoscaling anhand von GPU-Auslastung oder Queue-Tiefe. Canary-Deployments, Blue/Green-Routing und Traffic Shadowing fehlen vollständig. Modellversionierung und Rollback bleiben manuelle Vorgänge. Observability erfordert einen eigenen Stack auf Basis des in vLLM eingebauten Prometheus-Endpunkts /metrics – funktional, aber undifferenzierte Arbeit, die über mehrere Modelle hinweg schlecht skaliert.
Diese Option eignet sich am besten für kleine Teams, Deployments mit einem einzelnen Modell, Nicht-K8s-Umgebungen und vorhersehbare, statische Workloads, bei denen sich der Betriebsaufwand einer vollständigen Orchestrierungsschicht nicht rechtfertigt.
3.2) KServe + vLLM
KServe abstrahiert das Modell-Deployment über die Custom Resource Definition InferenceService und bettet vLLM in einen vollständig deklarativen, Kubernetes-nativen Lebenszyklus ein. Es bietet, was Standalone-Deployments nicht können: Knative-getriebenes Autoscaling (inklusive Scale-to-Zero), native Canary-Rollouts per Traffic-Splitting zwischen Modellrevisionen, gleichzeitige Modellversionierung, Konformität mit dem V2 Open Inference Protocol und eingebaute Metrik-Endpunkte für Prometheus-/Grafana-Observability-Stacks – alles konfiguriert über ein einziges YAML-Manifest oder das KServe-Python-SDK.
KServe kennt zwei Betriebsarten. Der Modus Knative | Serverless bietet den vollen Funktionsumfang, bringt aber Cold-Start-Latenz mit sich. Der Modus Standard | Raw Deployment umgeht Knative vollständig und nutzt gewöhnliche Kubernetes-Deployments mit HPA oder KEDA für das Autoscaling (ohne Istio-Anforderung). In der Praxis bleiben die meisten Produktivteams beim Serverless-Modus, setzen jedoch minReplicas:1, um Traffic-Splitting und Revisionsverwaltung zu behalten und zugleich Cold-Start-Nachteile zu vermeiden.
Der betriebliche Kompromiss ist erheblich. Die Abhängigkeitskette von KServe ist umfangreich: cert-manager, Istio (Ingress + Mesh), Knative Serving und KServe selbst – alle mit strengen Anforderungen an die Versionskompatibilität untereinander. Upgrades verlangen synchronisierte Rollouts über vier Schichten hinweg. Für ML-Teams ohne dediziertes Platform Engineering dauert eine realistische Ersteinrichtung Tage. Fehlersuche bei gescheiterten Deployments bedeutet, Anfragen gleichzeitig durch Istio-VirtualServices, Knative-Route-Konfigurationen und KServe-Revisionen zu verfolgen.
Die Cold-Start-Latenz verschärft das Ganze. Das Hochskalieren von null kostet bei großen Modellen 30 bis 60 Sekunden (Container-Pull, CUDA-Initialisierung, Laden der Gewichte in den VRAM). Storage-I/O-Engpässe treten häufig auf, wenn mehrere Pods gleichzeitig über 100 GB Gewichte ziehen.
KServe ist ein Enterprise-Framework, das sich in Umgebungen rechtfertigt, die mandantenfähige Mehrmodell-Produktionssysteme, strikte Rollout-Governance und fortgeschrittenes Autoscaling verlangen – gestützt auf ein dediziertes Plattformteam. Abschnitt 4 beschreibt den Arbeitsablauf im Detail.
3.3) BentoML + vLLM
BentoML kapselt die vLLM-Serving-Logik über seine Python-Service-Abstraktion und bündelt Modellgewichte, Abhängigkeiten, Laufzeitkonfiguration und API-Logik in einem einzigen OCI-konformen Artefakt – einem Bento. Der Ablauf bleibt linear: bentoml build erzeugt ein deploybares Image, das auf Docker, auf Kubernetes mit Standardmanifesten und Autoscaling-Primitiven oder auf BentoCloud als gemanagter Plattform laufen kann.
Die Developer Experience ist ausgesprochen Python-first. Teams können OpenAI-kompatible Endpunkte erstellen und Request-Handling, Vor- und Nachverarbeitung, Routing, Guardrails oder Hilfsmodelle direkt in Python definieren, statt mit Kubernetes-Manifesten zu beginnen. Das macht BentoML attraktiv für RAG-Systeme, agentische Workflows und mehrstufige Inferenz-Pipelines, in denen das LLM nur eine Komponente des Serving-Graphen ist.
Für gemanagte Produktiv-Deployments bietet BentoCloud Deployment-Automatisierung, Autoscaling und Rollout-Workflows. Historisch war die selbstverwaltete Kubernetes-Variante von BentoML mit Yatai verbunden. Das Haupt-Repository von Yatai ist inzwischen jedoch archiviert, während die Richtung BentoML 1.2 / Yatai 2.0 eher in Entwicklung als ein klar etablierter Produktionspfad erscheint. Teams, die selbstverwaltete Kubernetes-Deployments planen, sollten den aktuellen Stand prüfen, bevor sie sich darauf verlassen.
Der Kompromiss besteht darin, dass BentoML in erster Linie eine Serving-Abstraktion auf Anwendungsebene ist und keine Kubernetes-native Infrastruktur-Control-Plane. Funktionen wie Traffic-Splitting, Scale-to-Zero, feingranulares Routing und gemanagte Rollout-Workflows hängen von der umgebenden Plattform ab. In selbstverwalteten Open-Source-Deployments erfordern sie typischerweise Kubernetes-Primitive wie HPA oder KEDA, Ingress- oder Service-Mesh-Routing sowie CI/CD-Automatisierung. Auch die Fehlersuche wird aufwendiger, da Probleme das Ausführungsmodell von BentoML, vLLM, die Container-Runtime und Kubernetes betreffen können.
Diese Option eignet sich am besten für Python-first-Teams, komplexe mehrstufige Pipelines wie RAG oder Agenten sowie Organisationen, die einheitliches Packaging schätzen, ohne Kubernetes-Platform-Engineering zum primären Entwickler-Workflow zu machen.
3.4) Vergleichstabelle
Kriterium | Standalone | KServe + vLLM | BentoML + vLLM |
Einrichtungsaufwand | Gering | Hoch (Istio/Knative) | Mittel |
Kubernetes erforderlich | Nein | Ja | Optional |
Autoscaling | Selbst zu bauen (oder einfaches HPA) | Knative/serverless eingebaut; Produktiv-LLMs halten oft warme Replicas | BentoCloud; selbstverwaltetes K8s erfordert Prüfung/eigenes Setup |
Canary/Traffic-Split | Nein | Knative-nativ; sonst plattform- bzw. Service-Mesh-getrieben | BentoCloud / plattformspezifisch; Yatai-Status sollte geprüft werden |
Mehrmodell-Serving | Basismodell + Multi-LoRA | Mehrere InferenceServices | Composition / Runners |
Modellversionierung | Nein | Ja | Ja (Model Registry) |
Observability | Eingebaute Prometheus-Metriken | Integrierter K8s-Stack | Eingebaute Metriken & Tracing |
Verteilte Inferenz | Nativ (Ray) | Unterstützt (Pod-Annotationen) | Unterstützt (Runner-Konfigurationen) |
Bester Anwendungsfall | Einfach, schnell, ein einzelnes Modell | Enterprise-K8s, striktes MLOps | Python-first, KI-Pipelines |

Minimale Architekturdiagramme nebeneinander, die die Topologie der jeweiligen Deployment-Option zeigen.
3.5) Ebenfalls erwähnenswert
Ray Serve + vLLM: vLLM nutzt Ray intern bereits für Tensor-Parallelität über mehrere GPUs und Nodes. Es zusätzlich in Ray Serve zu kapseln, bringt Prefill-Decode-Disaggregation, cache-bewusstes Routing und Python-native Inferenzgraphen. Eine ernstzunehmende Produktionsalternative zu KServe für Teams, die Modelle ab 70B über mehrere Nodes betreiben – wobei zusätzlich ein Ray-Cluster (über KubeRay) auf Kubernetes zu verwalten ist.
vLLM Production Stack: Das hauseigene Kubernetes-Deployment von vLLM (Helm-Charts + Gateway API + Request Router). Es bietet mehr Kontrolle als KServe bei geringerem Abhängigkeits-Overhead, erreicht aber nicht dessen Reife bei Autoscaling und Traffic-Management. Derzeit tragfähig für Teams, die ein Kubernetes-natives Deployment ohne die Istio-/Knative-Steuer wünschen.
4) KServe in der Praxis
Der Wert von KServe zeigt sich, sobald man über einen Proof of Concept mit einem einzelnen Modell hinausgeht. Dieser Abschnitt behandelt die beiden Deployment-Schnittstellen und wie sich KServe in eine umfassendere LLMOps-Plattform einfügt. Die Codebeispiele beziehen sich auf KServe 0.18.
4.1) Ein Modell ausrollen: YAML vs. SDK
Deklaratives YAML (GitOps)
Der Standardweg in der Produktion nutzt ein InferenceService-Manifest, das in einem Git-Repository liegt und von ArgoCD oder Flux abgeglichen wird. So entspricht der Clusterzustand stets dem Git-Zustand, die Commit-Historie liefert Audit-Trails, und Rollbacks gelingen sofort per git revert.
Das folgende Beispiel geht vom Knative-/Serverless-Pfad von KServe aus, der sich anbietet, wenn Teams Revisionsverwaltung, Traffic-Splitting und Autoscaling-Semantik über KServe steuern möchten.
Für Teams, die den RawDeployment-Modus von KServe bevorzugen, bleibt die InferenceService-Spezifikation weitgehend identisch; das Autoscaling erfolgt jedoch über das reguläre Kubernetes-HPA mit eigenen Metriken (etwa GPU-Auslastung oder Queue-Tiefe) statt über Knatives nebenläufigkeitsbasierten Scaler.
Wichtige Produktionsaspekte: Secrets werden aus Kubernetes Secrets bezogen (niemals fest im Code), minReplicas: 1 verhindert Cold Starts, die bei großen Modellen sonst 30 bis 60 Sekunden dauern, und Knative-Annotationen steuern das Autoscaling anhand der Nebenläufigkeit statt der CPU-Auslastung.
Im Knative-/Serverless-Modus genügt für Canary-Rollouts das Hinzufügen von canaryTrafficPercent: 10 in der Predictor-Spezifikation sowie die Aktualisierung der storageUri auf die neue Modellversion. KServe erzeugt eine neue Knative-Revision, teilt den Traffic auf Ingress-Ebene auf und lässt beide Versionen unabhängig skalieren. Halten Sie bei großen vLLM-Deployments Canary- und Stable-Revision mit passenden minReplicas-Werten warm, um Cold Starts durch das Laden der Gewichte während der Rollout-Validierung zu vermeiden. Sobald Latenz, Fehlerrate, GPU-Sättigung und Qualitätsmetriken die Stabilität bestätigen, befördern Sie die neue Revision auf 100 % oder fahren sie auf 0 % zurück.
Python-SDK (programmatisch)
Das KServe-Python-SDK ist die richtige Wahl, wenn Modell-Metadaten dynamisch sind – aus vorgelagerten Trainingsjobs eingespeist, von Kubeflow Pipelines oder Airflow orchestriert oder über ein internes Entwicklerportal bereitgestellt.
Das hybride Muster, das die meisten reifen Teams wählen: das SDK in Dev/Staging für schnelles Experimentieren nutzen, anschließend das entsprechende YAML-Manifest erzeugen und für den Produktiv-Rollout in ein GitOps-Repository committen. Das gibt Data Scientists Tempo, ohne die Auditierbarkeit der Infrastruktur zu opfern.
4.2) KServe innerhalb einer umfassenderen LLMOps-Plattform
KServe ist die Inferenz-Data-Plane – es liefert Modelle aus. Doch Model Serving ist nur eine Stufe eines Lebenszyklus, der Training, Evaluierung, Deployment und Monitoring umfasst. In einer reifen LLMOps-Plattform verzahnt sich KServe mit vier umgebenden Schichten:

Vereinfachter Ablauf der LLM-Inferenz-Pipeline rund um KServe
Model Registry → KServe (Artefaktübergabe). Der Storage Initializer von KServe zieht Gewichte von dort, wo sie liegen – hf://, s3://, mlflow:// oder OCI-Registries. Die Registry ist die unveränderliche Quelle der Wahrheit; KServe konsumiert sie lediglich. Ein wachsender Trend besteht darin, LLM-Gewichte als OCI-Artefakte zu paketieren, sodass KServe Modelle genau wie Docker-Images aus Container-Registries ziehen kann.
CI/CD → GitOps → KServe (Promotion Engine). Wird ein feingetuntes Modell in MLflow oder W&B als „Champion" markiert, erzeugt eine CI-Pipeline das InferenceService-Manifest, trägt Modell-URI und Hardwareanforderungen ein und committet es ins GitOps-Repository. ArgoCD erkennt die Abweichung und wendet das Manifest an – zunächst mit canaryTrafficPercent: 10, dann nach bestandenem Quality Gate auf 100 % befördert.
Evaluierungs-Frameworks → KServe (Quality Gate). Vor der Beförderung in die Produktion hostet KServe das Modell in einem Staging-Namespace. Die CI-Pipeline stößt ein Evaluierungs-Framework wie Promptfoo oder DeepEval an, das Testprompts an den Staging-Endpunkt sendet und die Antworten auf Halluzinationen, Kontextrelevanz und Toxizität bewertet. Fällt die Evaluierung durch, wird die GitOps-Promotion blockiert. Für fortlaufende Evaluierung spiegelt die Shadow-Traffic-Funktion von KServe echte Anfragen an eine noch nicht freigegebene Modellversion, ohne Nutzer zu beeinträchtigen.
Observability → KServe (Feedback-Schleife). KServe und vLLM stellen Prometheus-Metriken nativ bereit – GPU-Auslastung, KV-Cache-Sättigung, TTFT, Inter-Token-Latenz. Diese speisen sowohl Grafana-Dashboards als auch den Knative-/KEDA-Autoscaler. Für Observability auf Payload-Ebene erfasst die Logger-Komponente von KServe Prompts und Vervollständigungen asynchron und schiebt sie nach Kafka oder S3 – für Drift-Erkennung und Qualitätsüberwachung über Plattformen wie Arize oder LangSmith.
KServe mit vLLM in Produktion zu betreiben, ist nicht reibungsfrei. Die Versionskompatibilität über den Istio-/Knative-/KServe-Stack hinweg erfordert sorgfältiges Pinning und synchronisierte Upgrades. Große Modellgewichte verursachen Cold-Start-Latenzen, die Scale-to-Zero für die meisten LLM-Workloads unpraktikabel machen – planen Sie warme Replicas ein. Timeout-Budgets müssen über die gesamte Ingress-Kette hinweg abgestimmt sein (Istio, Knative Queue-Proxy, vLLM), damit bei langen Generierungen keine Anfragen stillschweigend verloren gehen. Und Autoscaling allein anhand der Anfrage-Nebenläufigkeit reicht nicht aus – GPU-Speichersättigung und KV-Cache-Druck sind die Metriken, die tatsächlich bestimmen, wann skaliert werden muss.
5) Den passenden Deployment-Pfad wählen

Entscheidungsdiagramm: Richten Sie Ihren Deployment-Wrapper an Ihrer betrieblichen Reife aus, nicht an Ihrem architektonischen Ehrgeiz.
vLLM ist aus gutem Grund zum Standard unter den Inferenz-Engines geworden – PagedAttention und Continuous Batching lösen die grundlegenden Speicher- und Durchsatzprobleme des LLM-Servings. Doch die Engine ist nur die halbe Miete. Ihr Deployment-Wrapper muss zur betrieblichen Reife Ihres Teams passen, nicht zu Ihrem architektonischen Ehrgeiz. Beginnen Sie standalone und wechseln Sie zu KServe oder BentoML, wenn die betrieblichen Anforderungen – nicht der Lebenslauf – die Komplexität rechtfertigen. Die beste Infrastruktur ist die einfachste, die Ihre tatsächlichen Produktionsanforderungen erfüllt.
Sie brauchen Unterstützung bei der Umsetzung?
Bei Liquid Reply sind wir auf Platform Engineering, Kubernetes und Cloud-Native-Infrastruktur spezialisiert – einschließlich produktionsreifer Architekturen für LLM-Serving. Von der Wahl der passenden Deployment-Strategie bis zur Produktionshärtung von KServe mit sauberem Autoscaling, Canary-Rollouts und LLMOps-Integration: Wir helfen Engineering-Teams, LLM-Inferenz ohne Trial-and-Error in Produktion zu bringen.
Ob Sie vLLM zum ersten Mal evaluieren oder eine Mehrmodell-KServe-Plattform mit GitOps, Observability und Self-Service-Abstraktionen für Ihre ML-Teams operationalisieren möchten – sprechen Sie uns für ein kostenloses Erstgespräch an.
Teilen