[{"data":1,"prerenderedAt":763},["ShallowReactive",2],{"tool-vllm-de":3},{"slug":4,"published":5,"minutes":6,"category":7,"tags":8,"keywords":14,"about":21,"sources":25,"cover":53,"og":54,"expertise":55,"locales":56,"lang":58,"title":60,"description":61,"coverAlt":62,"url":63,"pricing":64,"kind":65,"metaTitle":66,"takeaways":67,"faq":73,"toc":89,"blocks":114,"others":527},"vllm","2026-06-30",11,"llmops",[9,10,11,12,13],"Self-hosted inference","OpenAI API","PagedAttention","GPU serving","LLM runtime",[4,15,16,17,18,19,20],"vllm vs sglang","vllm vs tensorrt-llm","self-hosted llm server","openai compatible api server","llm inference throughput","pagedattention",[22],{"name":23,"url":24},"vLLM","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FvLLM",[26,29,32,35,38,41,44,47,50],{"title":27,"url":28},"vLLM documentation","https:\u002F\u002Fdocs.vllm.ai\u002Fen\u002Flatest\u002F",{"title":30,"url":31},"Optimization and tuning for the V1 engine","https:\u002F\u002Fdocs.vllm.ai\u002Fen\u002Fstable\u002Fconfiguration\u002Foptimization.html",{"title":33,"url":34},"Architecture overview and the V1 process layout","https:\u002F\u002Fdocs.vllm.ai\u002Fen\u002Fstable\u002Fdesign\u002Farch_overview.html",{"title":36,"url":37},"Metrics design","https:\u002F\u002Fdocs.vllm.ai\u002Fen\u002Fstable\u002Fdesign\u002Fmetrics.html",{"title":39,"url":40},"Automatic prefix caching and its documented limits","https:\u002F\u002Fdocs.vllm.ai\u002Fen\u002Fstable\u002Ffeatures\u002Fautomatic_prefix_caching.html",{"title":42,"url":43},"Online serving and the HTTP API surface","https:\u002F\u002Fdocs.vllm.ai\u002Fen\u002Fstable\u002Fserving\u002Fonline_serving.html",{"title":45,"url":46},"Inside vLLM: anatomy of a high-throughput inference system","https:\u002F\u002Fvllm.ai\u002Fblog\u002F2025-09-05-anatomy-of-vllm",{"title":48,"url":49},"vLLM: easy, fast and cheap LLM serving with PagedAttention","https:\u002F\u002Fblog.vllm.ai\u002F2023\u002F06\u002F20\u002Fvllm.html",{"title":51,"url":52},"Release history","https:\u002F\u002Fgithub.com\u002Fvllm-project\u002Fvllm\u002Freleases","\u002Fimages\u002Fblog\u002Fvllm\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fvllm\u002Fog.jpg","ai-engineer",[57,58,59],"en","de","hu","vLLM geprüft: Inferenz auf eigener Hardware","vLLM macht aus einem Hugging-Face-Checkpoint einen OpenAI-kompatiblen Server: Was PagedAttention und kontinuierliches Batching bringen und was der Betrieb kostet.","Schema des vLLM-Serving-Stacks, von Client-Anfragen über den Scheduler bis zu den Blöcken des KV-Cache im Paging-Verfahren","https:\u002F\u002Fdocs.vllm.ai","Apache-2.0","Inference server","vLLM geprüft: Inferenz auf eigener Hardware · Balázs Csorba",[68,69,70,71,72],"vLLM ist die Standard-Engine für selbst gehostete Inferenz mit offenen Gewichten auf NVIDIA- und AMD-Hardware, gewählt wegen der Breite bei Modellen, Quantisierung und API-Abdeckung, nicht wegen der Geschwindigkeit.","PagedAttention und kontinuierliches Batching sind der Grund für die Existenz; die belastbare Aussage ist, dass die paging-basierte Allokation die KV-Cache-Verschwendung von 60 bis 80 Prozent auf unter 4 Prozent senkte, nicht das 24-Fache im Durchsatz von 2023.","Prefix-Caching ist standardmäßig aktiv und verkürzt nur den Prefill; Workloads mit langen, wiederholten Prompts profitieren am meisten, lange Generierungen ohne gemeinsames Präfix gar nicht.","Der Produktionsfehler ist Preemption per Recompute bei zu kleinem KV-Cache; KV-Cache-Auslastung und die kumulative Preemption-Zahl beobachten, nicht den aggregierten Durchsatz.","Ein Aufbau mit vier GPUs läuft als sechs Prozesse und braucht mindestens sechs physische CPU-Kerne, der häufigste Grund für enttäuschenden Durchsatz.",[74,77,80,83,86],{"q":75,"a":76},"Ist vLLM schneller als SGLang oder TensorRT-LLM?","Nicht pauschal, und die meisten publizierten Vergleiche sind nicht vergleichbar. Der Launch-Blog von vLLM aus 2023 nennt bis zu 24-mal den Durchsatz von Hugging Face Transformers und das 2,2- bis 3,5-Fache von TGI, gemessen mit LLaMA-7B und LLaMA-13B bei aus dem ShareGPT-Datensatz gezogenen Anfragelängen. Das datiert vor dem Zugang der Wettbewerber zu Paged Caches; benchmarke die eigene Anfragelängenverteilung.",{"q":78,"a":79},"Brauche ich eine GPU für vLLM?","Linux mit CUDA oder ROCm ist das dokumentierte Ziel, mit Python 3.10 bis 3.13. Intel XPU und Google TPU werden separat unterstützt, Apple Silicon über ein anderes, auf MLX basierendes Projekt, nicht über vLLM selbst. Reine CPU-Inferenz ist das Terrain von llama.cpp.",{"q":81,"a":82},"Wie viel VRAM braucht vLLM?","vLLM reserviert einen konfigurierbaren Anteil der VRAM für Gewichte und KV-Cache, misst den Rest mit einem Profiling-Forward beim Start und meldet, wie viele Blöcke hineinpassen. Praktisch ist die Grenze meist das Modellgewicht in der gewählten Quantisierung; der Rest ist KV-Cache, und dessen Größe bestimmt die Parallelität.",{"q":84,"a":85},"Kann ein vLLM-Server mehrere Modelle hosten?","Nicht nativ. Ein Serverprozess hostet ein Modell zur Zeit, daher betreiben Multi-Modell-Setups einen Prozess pro Modell hinter einem Router oder nutzen Data-Parallelismus, um dasselbe Modell über mehrere GPUs zu replizieren. Ausnahme sind LoRA-Adapter: die lassen sich zur Laufzeit laden und entladen, laut Dokumentation nur für die lokale Entwicklung.",{"q":87,"a":88},"Wie bleibt vLLM-Ausgabe über Upgrades hinweg reproduzierbar?","Die Engine-Version pinnen, da Minor-Releases etwa alle zwei Wochen erscheinen, und --generation-config vllm setzen, damit der Server nicht generation_config.json aus dem Hugging-Face-Repository anwendet und die Sampling-Defaults still überschreibt. Für deterministische Läufe zusätzlich die Temperatur auf null setzen und die Modellrevision pinnen.",[90,93,96,99,102,105,108,111],{"id":91,"title":92},"what-it-is","Was es wirklich ist",{"id":94,"title":95},"how-it-works","Wie es funktioniert",{"id":97,"title":98},"getting-started","Einen Server aufsetzen",{"id":100,"title":101},"performance","Was die Durchsatzversprechen wert sind",{"id":103,"title":104},"running-in-production","Im Produktivbetrieb",{"id":106,"title":107},"where-it-stings","Wo es kratzt",{"id":109,"title":110},"verdict","Urteil",{"id":112,"title":113},"sources","Quellen",[115,119,122,125,128,149,150,153,162,165,166,169,172,199,201,216,217,220,285,288,306,307,311,322,356,359,362,368,371,382,402,403,414,460,463,464,467,482,487,488],{"type":116,"content":117},"paragraph",[118],"vLLM ist eine Open-Source-Inferenz-Engine, die aus einem Hugging-Face-Checkpoint einen HTTP-Server macht, der die OpenAI-API spricht. Sie ist die Schicht zwischen Modell und allem, was es aufruft, und ihre einzige Aufgabe ist, die GPU beschäftigt zu halten. Das Urteil vorab: auf NVIDIA- oder AMD-Hardware mit offenen Gewichten ist sie die Standardwahl, weil kein anderes Projekt so viel Fläche mit so wenig Klebercode abdeckt. Auf einem Laptop, auf einem reinen CPU-Host oder bei einem Modell und einem Nutzer ist sie weit zu viel Maschinerie.",{"type":116,"content":120},[121],"Sie konkurriert in der Serving-Schicht, nicht in der Modell-Schicht. Die Alternativen sind SGLang, das den Großteil des Designs teilt; NVIDIAs TensorRT-LLM, das Breite gegen Spitzenwerte auf NVIDIA-Teilen tauscht; llama.cpp, das dort anfängt, wo vLLM aufgibt; und Hugging Face TGI, dessen letzte Release v3.3.7 vom Dezember 2025 ist. Sie ist zugleich der übliche Ersatz für eine gehostete API, denn derselbe OpenAI-Client, der einen Anbieter anspricht, lässt sich auf einen lokalen Prozess umbiegen.",{"type":123,"level":124,"id":91,"text":92},"heading",2,{"type":116,"content":126},[127],"Die Fakten, die bei der Wahl einer Serving-Engine zählen, alle aus der Projektdokumentation und nicht von einer Anbieterseite:",{"type":129,"ordered":130,"items":131},"list",false,[132,137,139,141,143,145,147],[133,136],{"tag":134,"children":135},"strong",[64],", ohne kostenpflichtige Stufe und ohne Control Plane beim Anbieter.",[138],"Entstanden im Sky Computing Lab der UC Berkeley; die Dokumentation nennt mehr als 2.000 Mitwirkende und eines der aktivsten Open-Source-KI-Projekte.",[140],"Mehr als 200 Modellarchitekturen auf Hugging Face, darunter Decoder-only, Mixture-of-Experts, hybride Attention, multimodale Modelle, Embedding-, Rerank- und Reward-Modelle.",[142],"OpenAI-kompatibler Server plus Anthropic-Messages- sowie Cohere-Embed- und Rerank-Endpunkte, dazu Sprache und strukturiertes Output. Ein Modell pro Serverprozess.",[144],"CUDA und ROCm als erste Klasse, Intel XPU und Google TPU unterstützt, Hardware-Plugins für Ascend NPUs, Gaudi, Spyre, Apple Silicon, MetaX und weitere.",[146],"Quantisierung über FP8, NVFP4, MXFP4, INT8 und INT4 sowie GPTQ-, AWQ-, GGUF- und compressed-tensors-Checkpoints.",[148],"Eine Minor-Release etwa alle zwei Wochen: v0.24.0 erschien am 29. Juni 2026, sechs Wochen nach v0.20.2 vom 10. Mai.",{"type":123,"level":124,"id":94,"text":95},{"type":116,"content":151},[152],"Zwei Ideen tragen den Großteil des Durchsatzes. PagedAttention legt den Key-Value-Cache in Blöcke fester Größe ab und bildet ihn über eine Block-Tabelle auf nicht zusammenhängenden GPU-Speicher ab, so wie ein Betriebssystem Seiten abbildet; das Paper von 2023 maß in früheren Systemen 60 bis 80 Prozent des KV-Cache als durch Fragmentierung und Überreservierung verschwendet, bei paging-basierter Allokation unter 4 Prozent. Kontinuierliches Batching nimmt danach bei jedem Decode-Schritt neue Anfragen an, statt zu warten, bis sich ein Batch füllt, und daher kommt der größte Teil der Latenzverbesserung.",{"type":154,"attrs":155,"inner":159,"caption":160},"diagram",{"viewBox":156,"role":157,"aria-labelledby":158},"0 0 720 300","img","vllm-flow-t vllm-flow-d","\u003Ctitle id=\"vllm-flow-t\">Eine Anfrage durch die vLLM-V1-Engine\u003C\u002Ftitle>\u003Cdesc id=\"vllm-flow-d\">Clients rufen einen API-Server-Prozess auf, der den Prompt tokenisiert und ihn über einen Socket an einen Engine-Core-Prozess weiterreicht. Der Engine Core hält Scheduler und KV-Cache-Manager, die Blöcke an einen Worker-Prozess pro GPU übergeben. Token für Token schreiben die Worker in Blöcke des KV-Cache im Paging-Verfahren, und die gestreamte Ausgabe läuft über denselben Weg zurück.\u003C\u002Fdesc>\u003Cdefs>\u003Cmarker id=\"ah-vllm\" viewBox=\"0 0 10 10\" refX=\"9\" refY=\"5\" markerWidth=\"7\" markerHeight=\"7\" orient=\"auto-start-reverse\">\u003Cpath d=\"M0 0L10 5L0 10z\" class=\"d-head\" \u002F>\u003C\u002Fmarker>\u003C\u002Fdefs>\u003Ctext x=\"20\" y=\"30\" class=\"d-title\">V1 REQUEST PATH\u003C\u002Ftext>\u003Ctext x=\"700\" y=\"30\" text-anchor=\"end\" class=\"d-label\">ein Modell, viele Mandanten, ein Prozess pro GPU\u003C\u002Ftext>\u003Crect x=\"20\" y=\"72\" width=\"120\" height=\"72\" rx=\"10\" class=\"d-box\" \u002F>\u003Ctext x=\"80\" y=\"104\" text-anchor=\"middle\" class=\"d-text\">Clients\u003C\u002Ftext>\u003Ctext x=\"80\" y=\"126\" text-anchor=\"middle\" class=\"d-small\">OpenAI-API\u003C\u002Ftext>\u003Cpath d=\"M142 108H166\" class=\"d-line\" marker-end=\"url(#ah-vllm)\" \u002F>\u003Crect x=\"170\" y=\"72\" width=\"140\" height=\"72\" rx=\"10\" class=\"d-accent\" \u002F>\u003Ctext x=\"240\" y=\"100\" text-anchor=\"middle\" class=\"d-text\">API-Server\u003C\u002Ftext>\u003Ctext x=\"240\" y=\"122\" text-anchor=\"middle\" class=\"d-small\">tokenisieren, streamen\u003C\u002Ftext>\u003Cpath d=\"M312 108H346\" class=\"d-line\" marker-end=\"url(#ah-vllm)\" \u002F>\u003Ctext x=\"329\" y=\"98\" text-anchor=\"middle\" class=\"d-label\">ZMQ\u003C\u002Ftext>\u003Crect x=\"350\" y=\"72\" width=\"150\" height=\"72\" rx=\"10\" class=\"d-accent\" \u002F>\u003Ctext x=\"425\" y=\"100\" text-anchor=\"middle\" class=\"d-text\">Engine Core\u003C\u002Ftext>\u003Ctext x=\"425\" y=\"122\" text-anchor=\"middle\" class=\"d-small\">Scheduler, KV-Manager\u003C\u002Ftext>\u003Cpath d=\"M502 108H536\" class=\"d-line\" marker-end=\"url(#ah-vllm)\" \u002F>\u003Crect x=\"540\" y=\"72\" width=\"160\" height=\"72\" rx=\"10\" class=\"d-box\" \u002F>\u003Ctext x=\"620\" y=\"100\" text-anchor=\"middle\" class=\"d-text\">GPU-Worker\u003C\u002Ftext>\u003Ctext x=\"620\" y=\"122\" text-anchor=\"middle\" class=\"d-small\">ein Prozess pro GPU\u003C\u002Ftext>\u003Cpath d=\"M620 148V168H80V150\" class=\"d-line d-dash\" marker-end=\"url(#ah-vllm)\" \u002F>\u003Ctext x=\"350\" y=\"190\" text-anchor=\"middle\" class=\"d-small\">Token für Token abgetastet, über denselben Weg zurückgestreamt\u003C\u002Ftext>\u003Ctext x=\"20\" y=\"222\" class=\"d-label\">KV-Cache-Blöcke im Paging-Verfahren, adressiert über eine Block-Tabelle\u003C\u002Ftext>\u003Crect x=\"20\" y=\"234\" width=\"40\" height=\"34\" rx=\"6\" class=\"d-box\" \u002F>\u003Ctext x=\"40\" y=\"256\" text-anchor=\"middle\" class=\"d-small\">0\u003C\u002Ftext>\u003Crect x=\"70\" y=\"234\" width=\"40\" height=\"34\" rx=\"6\" class=\"d-box\" \u002F>\u003Ctext x=\"90\" y=\"256\" text-anchor=\"middle\" class=\"d-small\">1\u003C\u002Ftext>\u003Crect x=\"120\" y=\"234\" width=\"40\" height=\"34\" rx=\"6\" class=\"d-box\" \u002F>\u003Ctext x=\"140\" y=\"256\" text-anchor=\"middle\" class=\"d-small\">2\u003C\u002Ftext>\u003Crect x=\"170\" y=\"234\" width=\"40\" height=\"34\" rx=\"6\" class=\"d-box\" \u002F>\u003Ctext x=\"190\" y=\"256\" text-anchor=\"middle\" class=\"d-small\">3\u003C\u002Ftext>\u003Crect x=\"220\" y=\"234\" width=\"40\" height=\"34\" rx=\"6\" class=\"d-box\" \u002F>\u003Ctext x=\"240\" y=\"256\" text-anchor=\"middle\" class=\"d-small\">4\u003C\u002Ftext>\u003Crect x=\"270\" y=\"234\" width=\"40\" height=\"34\" rx=\"6\" class=\"d-accent\" \u002F>\u003Ctext x=\"290\" y=\"256\" text-anchor=\"middle\" class=\"d-small\">5\u003C\u002Ftext>\u003Crect x=\"320\" y=\"234\" width=\"40\" height=\"34\" rx=\"6\" class=\"d-accent\" \u002F>\u003Ctext x=\"340\" y=\"256\" text-anchor=\"middle\" class=\"d-small\">6\u003C\u002Ftext>\u003Crect x=\"370\" y=\"234\" width=\"40\" height=\"34\" rx=\"6\" class=\"d-accent\" \u002F>\u003Ctext x=\"390\" y=\"256\" text-anchor=\"middle\" class=\"d-small\">7\u003C\u002Ftext>\u003Ctext x=\"430\" y=\"250\" class=\"d-small\">Ein gemeinsames Präfix bildet viele Anfragen\u003C\u002Ftext>\u003Ctext x=\"430\" y=\"266\" class=\"d-small\">auf dieselben Blöcke ab\u003C\u002Ftext>\u003Ctext x=\"20\" y=\"292\" class=\"d-small\">Rechengebundener Prefill und speichergebundenes Decode landen im selben Batch\u003C\u002Ftext>",[161],"vLLM V1 verteilt die Arbeit auf Prozesse: HTTP und Tokenisierung im API-Server, Scheduling und Cache-Verwaltung im Engine Core, ein Worker pro GPU.",{"type":116,"content":163},[164],"Die V1-Engine, die V0 während 2025 ablöste, mischt Prefill und Decode im selben Schritt und gibt Decode Vorrang, damit ein langer Prompt den Streaming-Verkehr nicht mehr ausbremst. Chunked Prefill ist standardmäßig aktiv. Auch Prefix-Caching ist standardmäßig aktiv und hasht Token-Blöcke, sodass ein wiederholter System-Prompt nur einmal vorgeprefüllt wird; die Projektdokumentation weist ausdrücklich darauf hin, dass es nur den Prefill verkürzt und für das Decode nichts bringt, es also bei langen Generierungen ohne gemeinsames Präfix fast nichts kauft. Spekulatives Decoding steht über n-Gram-, EAGLE- und DFlash-Proposer bereit, nicht über ein eigenes kleines Draft-Modell.",{"type":123,"level":124,"id":97,"text":98},{"type":116,"content":167},[168],"Die Installation ist ein Befehl, die dokumentierte Plattform ist Linux mit Python 3.10 bis 3.13. Ein Modell zu serven sieht so aus:",{"type":170,"code":171},"code","uv venv --python 3.12 --seed\nsource .venv\u002Fbin\u002Factivate\nuv pip install vllm --torch-backend=auto\n\n# Prefix caching and chunked prefill are on by default in V1.\nvllm serve Qwen\u002FQwen3-8B \\\n  --served-model-name qwen3-8b \\\n  --max-model-len 32768 \\\n  --gpu-memory-utilization 0.9 \\\n  --tensor-parallel-size 2 \\\n  --api-key \"$VLLM_TOKEN\"",{"type":116,"content":173},[174,175,178,179,182,183,186,187,190,191,194,195,198],"Die Flags sind im Wesentlichen Kapazitätsentscheidungen. ",{"tag":170,"children":176},[177],"--max-model-len"," begrenzt den Kontext und damit den KV-Cache, den eine einzelne Anfrage halten kann; setze ihn auf den längsten Prompt, den das Produkt wirklich braucht, nicht auf das Modellmaximum. ",{"tag":170,"children":180},[181],"--gpu-memory-utilization"," ist der Anteil der VRAM, der im Voraus für Gewichte und Cache reserviert wird; was nach den Gewichten übrig bleibt, misst der Profiling-Durchlauf beim Start und wandert in Blöcke. ",{"tag":170,"children":184},[185],"-O0"," bis ",{"tag":170,"children":188},[189],"-O3"," steuern, wie hart die Engine kompiliert und CUDA-Graphen aufnimmt, mit ",{"tag":170,"children":192},[193],"-O2"," als Standard; ",{"tag":170,"children":196},[197],"--enforce-eager"," überspringt beides. Das Ansprechen braucht keinen neuen Client:",{"type":170,"code":200},"from openai import OpenAI\n\nclient = OpenAI(\n    api_key=\"EMPTY\",\n    base_url=\"http:\u002F\u002Flocalhost:8000\u002Fv1\",\n)\n\nstream = client.chat.completions.create(\n    model=\"qwen3-8b\",\n    messages=[\n        {\"role\": \"system\", \"content\": \"Answer in one sentence.\"},\n        {\"role\": \"user\", \"content\": \"Why beat a contiguous KV cache?\"},\n    ],\n    max_tokens=200,\n    temperature=0,\n    stream=True,\n)\n\nfor chunk in stream:\n    print(chunk.choices[0].delta.content or \"\", end=\"\", flush=True)",{"type":202,"variant":203,"title":204,"body":205},"callout","note","Die Sampling-Defaults kommen vom Modell, nicht von dir",[206],[207,208,211,212,215],"Standardmäßig wendet der Server ",{"tag":170,"children":209},[210],"generation_config.json"," aus dem Hugging-Face-Repository an, sodass die vom Modellautor empfohlenen Sampling-Werte stillschweigend überschreiben, was die Anfrage verlangt. ",{"tag":170,"children":213},[214],"--generation-config vllm"," liefert die Defaults der Engine, und wer über Upgrades stabile Ausgaben braucht, pinnt das Sampling im Client.",{"type":123,"level":124,"id":100,"text":101},{"type":116,"content":218},[219],"Die berühmten Zahlen stammen aus dem Launch-Blog von 2023, nicht aus aktuellen Benchmarks: LLaMA-7B auf einer A10G und LLaMA-13B auf einer A100 40GB, mit aus dem ShareGPT-Datensatz gezogenen Anfragelängen, ergaben bis zu 24-mal den Durchsatz von Hugging Face Transformers und das 2,2- bis 3,5-Fache von TGI. Diese Werte sind inzwischen Geschichte statt Spezifikation, und das Belastbare daran ist die Speicherverschwendung, nicht die Vielfachen. Geändert hat sich, dass das Niveau gewandert ist: die ernstzunehmenden Wettbewerber haben alle Paged Caches und In-Flight-Batching übernommen. Die nützliche Frage ist deshalb nicht mehr, wer besser bündelt, sondern wer schneller tuned, patcht und Modelle ergänzt.",{"type":221,"head":222,"rows":229},"table",[223,225,227],[224],"Stellschraube",[226],"Was sie ändert",[228],"Wann sie drehen",[230,238,246,255,264,277],[231,234,236],[232],{"tag":170,"children":233},[177],[235],"Begrenzt den Kontext und damit den KV-Cache einer einzelnen Anfrage",[237],"Der längste reale Prompt liegt weit unter dem Modellmaximum",[239,242,244],[240],{"tag":170,"children":241},[181],[243],"Anteil der VRAM, der im Voraus für Gewichte und KV-Cache reserviert wird",[245],"Das Start-Log meldet wenige Blöcke, oder Anfragen werden verdrängt",[247,251,253],[248],{"tag":170,"children":249},[250],"max_num_batched_tokens",[252],"Prefill-Tokens pro Schritt: kleine Werte begünstigen die Inter-Token-Latenz, große die Zeit bis zum ersten Token",[254],"Interaktiver Chat gegenüber Offline-Batch-Arbeit",[256,260,262],[257],{"tag":170,"children":258},[259],"--tensor-parallel-size",[261],"Teilt die Gewichte auf mehrere GPUs und schafft so KV-Cache-Raum pro Karte",[263],"Das Modell passt nicht, oder der KV-Cache ist die engere Grenze",[265,270,275],[266,186,268],{"tag":170,"children":267},[185],{"tag":170,"children":269},[189],[271,272,274],"Kompilierung und CUDA-Graph-Aufnahme; ",{"tag":170,"children":273},[193]," ist der Standard",[276],"Die Startzeit zählt mehr als das Decode im Steady State",[278,281,283],[279],{"tag":170,"children":280},[197],[282],"Überspringt Kompilierung und Graph-Aufnahme vollständig",[284],"Entwicklungsschleifen oder die Messung, wie viel eines Bootvorgangs die Aufnahme ist",{"type":116,"content":286},[287],"Der Fehlermodus, der in der Produktion wirklich auftritt, ist Preemption. Wenn der KV-Cache nicht alle laufenden Sequenzen fasst, verdrängt vLLM Anfragen und berechnet sie aus dem Prompt neu, sobald Platz ist; im aggregierten Durchsatz fällt das kaum auf, in der Tail-Latenz dominiert es. V1 setzt standardmäßig auf Recompute statt Swap, weil Swap mehr kostete, das Gegenmittel ist also Kapazität und kein Flag.",{"type":202,"variant":289,"title":290,"body":291},"warn","Im Log erkennen",[292],[293,294,297,298,301,302,305],"Der Scheduler warnt mit ",{"tag":170,"children":295},[296],"Sequence group 0 is preempted by PreemptionMode.RECOMPUTE mode because there is not enough KV cache space",". Setze ",{"tag":170,"children":299},[300],"disable_log_stats=False",", um die kumulative Preemption-Zahl zu loggen, oder alarmiere auf ",{"tag":170,"children":303},[304],"vllm:kv_cache_usage_perc"," nahe 1,0. Utilisation oder Tensor-Parallelismus zu erhöhen hilft; sie zu weit zu erhöhen ist der Weg, auf dem ein Mitbewohner auf demselben Host zu einem Out-of-Memory-Kill wird.",{"type":123,"level":124,"id":103,"text":104},{"type":123,"level":308,"id":309,"text":310},3,"observability","Observability zuerst",{"type":116,"content":312},[313,314,317,318,321],"Die Engine stellt einen Prometheus-Endpunkt unter ",{"tag":170,"children":315},[316],"\u002Fmetrics"," mit dem Präfix ",{"tag":170,"children":319},[320],"vllm:"," bereit. Das Metrics-Design-Dokument ist ungewöhnlich explizit: Server-Level-Gauges sollen die Histogramme auf Request-Ebene erklären, und die Histogramme sind die Serien, auf die ein Operator alarmieren soll.",{"type":129,"ordered":130,"items":323},[324,329,334,339,347],[325,328],{"tag":170,"children":326},[327],"vllm:time_to_first_token_seconds"," — Prefill-Kosten, was ein Nutzer bei einem kalten Prompt spürt",[330,333],{"tag":170,"children":331},[332],"vllm:inter_token_latency_seconds"," — Decode-Geschwindigkeit, was ein Nutzer nach Beginn der Generierung spürt",[335,338],{"tag":170,"children":336},[337],"vllm:e2e_request_latency_seconds"," — die Serie, gegen die eine Timeout-Regel geschrieben gehört",[340,342,343,346],{"tag":170,"children":341},[304]," und ",{"tag":170,"children":344},[345],"vllm:num_requests_running"," — Kapazität; wenn beide gleichzeitig am Limit stehen, wächst die Warteschlange",[348,351,352,355],{"tag":170,"children":349},[350],"vllm:prefix_cache_queries"," gegen ",{"tag":170,"children":353},[354],"vllm:prefix_cache_hits"," — das Verhältnis zeigt, ob gemeinsame Prompts wirklich wiederverwendet werden und ob die Workload zur Engine passt",{"type":123,"level":308,"id":357,"text":358},"process-and-cpu","Prozesszahl und CPU",{"type":116,"content":360},[361],"Ein Aufbau mit vier GPUs ist kein einzelner Prozess. V1 betreibt einen API-Server-Prozess, einen Engine-Core-Prozess und einen Worker-Prozess pro GPU, also sechs insgesamt für einen Knoten mit Tensor-Parallelität 4; ein Data-Parallel-Aufbau kommt obendrauf mit einem Koordinator. Der Tuning-Guide nennt als Untergrenze 2 plus N physische Kerne für N GPUs, weil der Engine Core eine Busy-Loop fährt und unter CPU-Hunger sichtbar leidet.",{"type":202,"variant":363,"title":364,"body":365},"tip","Verhungerte CPU sieht aus wie eine langsame GPU",[366],[367],"Der Guide nennt Tokenisierung, Scheduler-Latenz und gestreamtes Detokenisieren als das, was zuerst leidet, mit geringerer GPU-Auslastung als Symptom. Mit aktiviertem Hyperthreading also das Doppelte von (2 + N) vCPUs einplanen.",{"type":123,"level":308,"id":369,"text":370},"security","Sicherheitslage",{"type":116,"content":372},[373,374,377,378,381],"Authentifizierung ist ein geteiltes Geheimnis. Das Flag ",{"tag":170,"children":375},[376],"--api-key"," oder die Umgebungsvariable ",{"tag":170,"children":379},[380],"VLLM_API_KEY"," schaltet eine Header-Prüfung ein und akzeptiert mehrere Schlüssel zugleich, damit sie rotiert werden können. Es gibt kein Nutzermodell, keine Quoten pro Mandant und keine Autorisierungsschicht; was den Port erreicht, darf die ganze GPU nutzen.",{"type":202,"variant":289,"title":383,"body":384},"Entwicklungs-Endpunkte warten auf einen Produktionsvorfall",[385],[386,387,390,391,394,395,342,398,401],"Mit ",{"tag":170,"children":388},[389],"VLLM_SERVER_DEV_MODE=1"," werden unter anderem ",{"tag":170,"children":392},[393],"\u002Fpause",", ",{"tag":170,"children":396},[397],"\u002Freset_prefix_cache",{"tag":170,"children":399},[400],"\u002Fcollective_rpc"," registriert, und die Dokumentation trägt selbst eine Sicherheitswarnung dazu. Den Port im vertrauenswürdigen Netz halten und davor Authentifizierung, Kontingente und Rate-Limiting setzen.",{"type":123,"level":124,"id":106,"text":107},{"type":116,"content":404},[405,406,409,410,413],"Zuerst drei Dinge. Es ist ein GPU-Server, keine Universal-Laufzeit: das dokumentierte Ziel ist Linux mit CUDA oder ROCm, ein reiner CPU-Host oder eine Apple-Silicon-Maschine bedeutet ein anderes Projekt und ein anderes Modellformat. Die Startzeit ist real, weil das voreingestellte Optimierungsniveau das Modell kompiliert und CUDA-Graphen aufnimmt, und ein kalter Container kann Minuten im Compiler verbringen, bevor das erste Token kommt. Und die API ist OpenAI-geformt, nicht OpenAI-vollständig: der Parameter ",{"tag":170,"children":407},[408],"suffix"," wird nicht unterstützt, ",{"tag":170,"children":411},[412],"user"," wird ignoriert, und parallele Tool-Calls sind modellabhängig und bestenfalls vorhanden.",{"type":221,"head":415,"rows":424},[416,418,420,422],[417],"Engine",[419],"Lizenz",[421],"Wo sie gewinnt",[423],"Was sie kostet",[425,434,442,451],[426,429,430,432],[427],{"tag":134,"children":428},[23],[64],[431],"Breite: die meisten Architekturen, die weiteste Menge an Quantisierungen und Hardware-Zielen, eine API für Text, Embeddings, Rerank, Sprache und strukturiertes Output",[433],"Kompilierung und Graph-Aufnahme bei jedem Boot, ein Modell pro Server und eine Busy-Loop, die CPU dahinter braucht",[435,437,438,440],[436],"SGLang",[64],[439],"Radix-artiges Prefix-Sharing und Wiederverwendung von Zustand über Turns, passend zu Agent- und Retrieval-Verkehr mit immer demselben langen Kontext",[441],"Kleinerer Modellzoo und dünnere Serving-Fläche außerhalb von Chat-Completions",[443,445,447,449],[444],"TensorRT-LLM",[446],"Apache-2.0, nur NVIDIA-Stack",[448],"Spitzenwerte auf den neuesten NVIDIA-Teilen, FP4- und FP8-Kernels, native Integration mit Dynamo und Triton",[450],"Nur NVIDIA und ein Neubau, sobald sich Modell, Quantisierung oder GPU-Generation ändern",[452,454,456,458],[453],"llama.cpp",[455],"MIT",[457],"CPU, Apple Silicon und Edge-Hardware, GGUF-Quantisierung, eine einzelne Binärdatei ohne Python-Laufzeit",[459],"Ein anderes Modellformat, eine schwächere Geschichte beim Batching, keine vergleichbare Fläche für Embeddings oder Rerank",{"type":116,"content":461},[462],"Für die meisten Teams ist der wahre Vergleich die erste Zeile gegen die zweite. vLLM und SGLang lösen dasselbe Problem mit denselben Primitive, beide Apache-2.0, beide OpenAI-kompatibel, und beide bedienen einen normalen Chat-Workload gut. Der Prefix-Baum von SGLang passt besser, wenn immer wieder derselbe lange Kontext getroffen wird; Modellabdeckung und Quantisierungsmatrix von vLLM passen besser, wenn neue Checkpoints schneller ankommen als sich Workloads wiederholen.",{"type":123,"level":124,"id":109,"text":110},{"type":116,"content":465},[466],"vLLM ist das Werkzeug der Wahl per Voreinstellung, und der Grund ist keine rohe Geschwindigkeit, sondern Fläche: die meisten Modelle, die meisten Quantisierungsformate, die meisten Hardware-Ziele und eine API, die Completions, Chat, Embeddings, Rerank, Sprache und strukturiertes Output abdeckt. Die Kosten sind real und meist mühelos zu beheben. Die Startzeit ist einstellbar, Preemption ist ein Kapazitätsproblem und eine verhungerte CPU ist ein Deployment-Fehler. Keines davon ist ein Grund, etwas anderes zu wählen.",{"type":129,"ordered":468,"items":469},true,[470,472,474,476,478,480],[471],"Wählen, wenn offene Gewichte auf NVIDIA- oder AMD-GPUs serviert werden und die Workload gebündelt ist: viele gleichzeitige Anfragen statt einer nach der anderen.",[473],"Wählen, wenn der Modellwechsel häufig ist, denn ein neuer Checkpoint läuft meist vor der Unterstützung der Alternativen.",[475],"Wählen, wenn der umgebende Stack schon die OpenAI-API spricht, denn die Migration ist eine Base-URL.",[477],"Nicht wählen für Laptop, Edge-Box oder Single-User-Werkzeug; llama.cpp oder eine MLX-Laufzeitumgebung erledigt das mit einem Bruchteil des Speichers.",[479],"Nicht wählen, wenn ein Modell auf einer NVIDIA-Generation festgeschrieben ist und Spitzen-Token pro Sekunde das einzige Ziel ist, denn TensorRT-LLM gewinnt diesen Handel um den Preis der Bindung.",[481],"SGLang vor der Festlegung benchmarken, wenn der Verkehr agentisch oder retrieval-lastig ist und Kontext stark wiederverwendet wird; die beiden liegen so nah beieinander, dass meist entscheidet, welches um drei Uhr nachts debugbar ist.",{"type":202,"variant":203,"title":483,"body":484},"Der opinionierte Teil",[485],[486],"Das Argument für vLLM ist still zu einem Argument über Breite statt Geschwindigkeit geworden, und die Projekte, die es überholen, werden es nicht beim Batching gewinnen. Sie werden gewinnen, indem sie in einer Workload besser sind. Teams sind meist besser bedient mit einer allgemeinen Engine plus einem Spezialisten als mit einer Engine pro Workload, und genau das ist das Argument für die Standardisierung auf vLLM, auch wenn ein Rivale für eine einzelne Verkehrsform messbar schneller ist.",{"type":123,"level":124,"id":112,"text":113},{"type":129,"ordered":468,"items":489},[490,495,499,503,507,511,515,519,523],[491],{"tag":492,"href":28,"children":493},"a",[494],"vLLM-Dokumentation",[496],{"tag":492,"href":31,"children":497},[498],"Optimierung und Tuning der V1-Engine",[500],{"tag":492,"href":34,"children":501},[502],"Architekturübersicht und Prozesslayout von V1",[504],{"tag":492,"href":37,"children":505},[506],"Metrics-Design",[508],{"tag":492,"href":40,"children":509},[510],"Automatisches Prefix-Caching und seine dokumentierten Grenzen",[512],{"tag":492,"href":43,"children":513},[514],"Online-Serving und die HTTP-API-Fläche",[516],{"tag":492,"href":46,"children":517},[518],"Inside vLLM: Anatomie eines hochdurchsatzigen Inferenzsystems",[520],{"tag":492,"href":49,"children":521},[522],"vLLM: einfaches, schnelles und billiges LLM-Serving mit PagedAttention",[524],{"tag":492,"href":52,"children":525},[526],"Release-Verlauf",[528,575,658,720],{"slug":529,"published":530,"minutes":6,"category":7,"tags":531,"keywords":536,"about":543,"sources":547,"cover":566,"og":567,"expertise":55,"locales":568,"lang":58,"title":569,"description":570,"coverAlt":571,"url":572,"pricing":573,"kind":574},"ollama","2026-09-29",[532,533,453,534,535],"Local inference","Open models","GGUF","Model serving",[529,537,538,539,540,541,542],"ollama vs lm studio","ollama vs vllm","local llm runtime","gguf model server","ollama self hosting","ollama api",[544],{"name":545,"url":546},"Ollama (software)","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FOllama",[548,551,554,557,560,563],{"title":549,"url":550},"Ollama API documentation","https:\u002F\u002Fdocs.ollama.com\u002Fapi",{"title":552,"url":553},"Ollama on GitHub, with the MIT LICENSE file","https:\u002F\u002Fgithub.com\u002Follama\u002Follama",{"title":555,"url":556},"Ollama terms of service, last updated May 2026","https:\u002F\u002Follama.com\u002Fterms",{"title":558,"url":559},"Ollama pricing, cloud plans and per-token model rates","https:\u002F\u002Follama.com\u002Fpricing",{"title":561,"url":562},"Hardware support: Nvidia, AMD, Metal and Vulkan","https:\u002F\u002Fdocs.ollama.com\u002Fgpu",{"title":564,"url":565},"OpenAI compatibility, including what is not supported","https:\u002F\u002Fdocs.ollama.com\u002Fapi\u002Fopenai-compatibility","\u002Fimages\u002Fblog\u002Follama\u002Fcover.webp","\u002Fimages\u002Fblog\u002Follama\u002Fog.jpg",[57,58,59],"Ollama im Test: der freundliche Weg zu offenen Modellen","Ollama liefert offene Modelle über eine HTTP-API auf eigener Hardware aus. Was es gut macht, wo der Durchsatz zu kurz kommt, was die MIT-Lizenz nicht abdeckt.","Abstrakte Titelgrafik für den Ollama-Test","https:\u002F\u002Follama.com","MIT · free for personal use","Local inference runtime",{"slug":576,"published":577,"minutes":6,"category":7,"tags":578,"keywords":584,"about":592,"sources":599,"cover":651,"og":652,"expertise":55,"locales":653,"lang":58,"title":654,"description":655,"coverAlt":656,"url":595,"pricing":657,"kind":579},"portkey","2026-09-28",[579,580,581,582,583],"LLM gateway","Guardrails","Routing","Observability","Cost control",[585,586,587,588,589,590,591],"portkey ai gateway","portkey vs litellm","llm gateway comparison","llm gateway latency overhead","llm guardrails gateway","self-hosted llm gateway","portkey pricing",[593,596],{"name":594,"url":595},"Portkey","https:\u002F\u002Fportkey.ai",{"name":597,"url":598},"API gateway","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FAPI_gateway",[600,603,606,609,612,615,618,621,624,627,630,633,636,639,642,645,648],{"title":601,"url":602},"Portkey docs: AI Gateway","https:\u002F\u002Fportkey.ai\u002Fdocs\u002Fproduct\u002Fai-gateway",{"title":604,"url":605},"Portkey docs: Getting started with the AI Gateway","https:\u002F\u002Fdocs.portkey.ai\u002Fdocs\u002Fguides\u002Fgetting-started\u002Fgetting-started-with-ai-gateway",{"title":607,"url":608},"Portkey docs: Gateway config object","https:\u002F\u002Fportkey.ai\u002Fdocs\u002Fapi-reference\u002Fconfig-object",{"title":610,"url":611},"Portkey docs: Guardrails","https:\u002F\u002Fportkey.ai\u002Fdocs\u002Fproduct\u002Fguardrails",{"title":613,"url":614},"Portkey docs: Guardrail endpoints and capabilities","https:\u002F\u002Fportkey.ai\u002Fdocs\u002Fproduct\u002Fguardrails\u002Fcapabilities",{"title":616,"url":617},"Portkey docs: Cache, simple and semantic","https:\u002F\u002Fportkey.ai\u002Fdocs\u002Fproduct\u002Fai-gateway\u002Fcache-simple-and-semantic",{"title":619,"url":620},"Portkey docs: Load balancing","https:\u002F\u002Fportkey.ai\u002Fdocs\u002Fproduct\u002Fai-gateway\u002Fload-balancing",{"title":622,"url":623},"Portkey docs: Enterprise hybrid deployment architecture","https:\u002F\u002Fportkey.ai\u002Fdocs\u002Fself-hosting\u002Fhybrid-deployments\u002Farchitecture",{"title":625,"url":626},"Portkey pricing","https:\u002F\u002Fportkey.ai\u002Fpricing",{"title":628,"url":629},"Portkey gateway on GitHub, MIT licensed","https:\u002F\u002Fgithub.com\u002FPortkey-AI\u002Fgateway",{"title":631,"url":632},"Portkey's own benchmark: gateway versus direct Bedrock","https:\u002F\u002Fgithub.com\u002FPortkey-AI\u002Fbenchmark-test",{"title":634,"url":635},"Portkey status page","https:\u002F\u002Fstatus.portkey.ai\u002F",{"title":637,"url":638},"Palo Alto Networks completes acquisition of Portkey, May 2026","https:\u002F\u002Fwww.paloaltonetworks.com\u002Fcompany\u002Fpress\u002F2026\u002Fpalo-alto-networks-completes-acquisition-of-portkey-to-secure-ai-agents",{"title":640,"url":641},"Palo Alto Networks: Prisma AIRS AI Gateway","https:\u002F\u002Fwww.paloaltonetworks.com\u002Fai-security\u002Fai-gateway",{"title":643,"url":644},"Cloudflare AI Gateway pricing","https:\u002F\u002Fdevelopers.cloudflare.com\u002Fai-gateway\u002Freference\u002Fpricing\u002F",{"title":646,"url":647},"LiteLLM pricing","https:\u002F\u002Fwww.litellm.ai\u002Fpricing",{"title":649,"url":650},"OpenRouter pricing","https:\u002F\u002Fopenrouter.ai\u002Fpricing","\u002Fimages\u002Fblog\u002Fportkey\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fportkey\u002Fog.jpg",[57,58,59],"Portkey: ein LLM-Gateway für die Produktion, geprüft auf Routing, Guardrails und Kosten","Portkey bündelt Retries, Fallbacks, Cache, Guardrails und Kostenkontrolle hinter einer OpenAI-kompatiblen Schnittstelle. Was die Konfiguration gut löst und was das Gateway an Latenz kostet.","Ein Requestweg von der Anwendung durch das Portkey-Gateway zu drei Modellanbietern, darunter das Guardrail-Ergebnis und das Protokoll.","Free · from $49 per month",{"slug":659,"published":660,"minutes":661,"category":7,"tags":662,"keywords":668,"about":676,"sources":688,"cover":713,"og":714,"expertise":55,"locales":715,"lang":58,"title":716,"description":717,"coverAlt":718,"url":679,"pricing":719,"kind":663},"langfuse","2026-08-13",10,[663,664,665,666,667],"LLM observability","Tracing","OpenTelemetry","Self-hosting","Evaluation",[659,669,670,671,672,673,674,675],"langfuse vs langsmith","llm tracing tool","self-hosted llm observability","langfuse pricing","opentelemetry llm traces","llm cost tracking","prompt versioning",[677,680,682,685],{"name":678,"url":679},"Langfuse","https:\u002F\u002Flangfuse.com",{"name":665,"url":681},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FOpenTelemetry",{"name":683,"url":684},"ClickHouse","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FClickHouse",{"name":686,"url":687},"Observability (software)","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FObservability_(software)",[689,692,695,698,701,704,707,710],{"title":690,"url":691},"Langfuse documentation: observability and application tracing","https:\u002F\u002Flangfuse.com\u002Fdocs\u002Fobservability\u002Foverview",{"title":693,"url":694},"Langfuse documentation: get started with tracing","https:\u002F\u002Flangfuse.com\u002Fdocs\u002Fobservability\u002Fget-started",{"title":696,"url":697},"Langfuse pricing: cloud plans, billable units and worked examples","https:\u002F\u002Flangfuse.com\u002Fpricing",{"title":699,"url":700},"Langfuse pricing: self-hosted plans and the feature comparison","https:\u002F\u002Flangfuse.com\u002Fpricing-self-host",{"title":702,"url":703},"Self-host Langfuse: deployment options, containers and storage services","https:\u002F\u002Flangfuse.com\u002Fself-hosting",{"title":705,"url":706},"Langfuse changelog: v4 is live (17 August 2026)","https:\u002F\u002Flangfuse.com\u002Fchangelog\u002F2026-08-17-langfuse-v4",{"title":708,"url":709},"Langfuse blog: Langfuse joins ClickHouse (16 January 2026)","https:\u002F\u002Flangfuse.com\u002Fblog\u002Fjoining-clickhouse",{"title":711,"url":712},"GitHub: langfuse\u002Flangfuse, the platform repository","https:\u002F\u002Fgithub.com\u002Flangfuse\u002Flangfuse","\u002Fimages\u002Fblog\u002Flangfuse\u002Fcover.webp","\u002Fimages\u002Fblog\u002Flangfuse\u002Fog.jpg",[57,58,59],"Langfuse-Test: Tracing, Prompts und Evals selbst gehostet","Langfuse legt LLM-Traces, Prompt-Versionen und Experimente auf eine MIT-lizenzierte Plattform. Was das Selbsthosten wirklich kostet, wie die Einheitspreise rechnen und wo es verliert.","Eine Pipeline vom gebündelten Application-Event über den Langfuse-Web-Container und den Object Storage in ClickHouse, mit Redis und PostgreSQL daneben.","MIT · paid from $59 per month",{"slug":721,"published":722,"minutes":661,"category":7,"tags":723,"keywords":728,"about":735,"sources":739,"cover":755,"og":756,"expertise":55,"locales":757,"lang":58,"title":758,"description":759,"coverAlt":760,"url":761,"pricing":762,"kind":579},"openrouter","2026-07-23",[579,724,725,726,727],"Model routing","Fallbacks","OpenAI-compatible","Pay per token",[721,729,587,730,731,732,733,734],"openrouter vs litellm","openrouter pricing","openai compatible api gateway","llm fallback routing","multi model api gateway","byok llm routing",[736],{"name":737,"url":738},"OpenRouter","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FOpenRouter",[740,743,744,747,750,753],{"title":741,"url":742},"OpenRouter documentation: quickstart","https:\u002F\u002Fopenrouter.ai\u002Fdocs\u002Fquickstart",{"title":649,"url":650},{"title":745,"url":746},"OpenRouter documentation: model fallbacks","https:\u002F\u002Fopenrouter.ai\u002Fdocs\u002Fguides\u002Frouting\u002Fmodel-fallbacks",{"title":748,"url":749},"OpenRouter documentation: provider routing","https:\u002F\u002Fopenrouter.ai\u002Fdocs\u002Fguides\u002Frouting\u002Fprovider-selection",{"title":751,"url":752},"OpenRouter documentation index","https:\u002F\u002Fopenrouter.ai\u002Fdocs\u002Fllms.txt",{"title":754,"url":738},"Wikipedia: OpenRouter","\u002Fimages\u002Fblog\u002Fopenrouter\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fopenrouter\u002Fog.jpg",[57,58,59],"OpenRouter: ein API-Schlüssel vor jedem Modell im Katalog","OpenRouter packt 500+ Modelle von 80+ Anbietern hinter einen OpenAI-kompatiblen Endpunkt, mit Fallbacks und Weiterverrechnung zum Listenpreis. Kosten und Schwächen.","Anfragepfad durch OpenRouter: Client, Router, mögliche Anbieter, Fallback-Liste und das Modell, das tatsächlich antwortet.","https:\u002F\u002Fopenrouter.ai","Pay per token, no subscription",1791383550781]