Inferenz-Server: Batching, PagedAttention und vLLM
Kurz: Ein Inferenz-Server beantwortet viele Anfragen gleichzeitig. Mit Continuous Batching, PagedAttention und Caching holt er viel mehr Antworten pro Sekunde aus derselben GPU.
Genauer: Weil die Textgenerierung durch die Speicherbandbreite begrenzt ist, kostet es kaum mehr Zeit, mehrere Anfragen gleichzeitig zu bearbeiten: Das Modell wird einmal gelesen und bedient viele Nutzer.
Im Detail
- Static Batching: Auf die langsamste Anfrage warten. Verschwendet Leistung.
- Continuous Batching: Beendete Anfragen werden sofort durch neue ersetzt, die GPU bleibt ausgelastet.
- PagedAttention (vLLM): Der kv-cache wird in kleine Seiten unterteilt wie virtueller Speicher im Betriebssystem. Das vermeidet Verschwendung durch Fragmentierung.
- Prefix-Caching: Gleiche Anfangsstücke (System-Prompt, lange Dokumente) werden nur einmal berechnet. Deshalb sind gecachte Eingabe-Tokens bei APIs oft deutlich billiger.
- Chunked Prefill, Disaggregation: Lesen des Prompts und Schreiben der Antwort auf getrennte GPUs legen, siehe prefill-und-decode.
- Spekulatives Decoding: spekulatives-decoding.
- Kennzahlen: Latenz bis zum ersten Token (TTFT), Token pro Sekunde je Nutzer, Gesamtdurchsatz.
- Software: vLLM, SGLang, TensorRT-LLM, llama.cpp-Server, Ollama (einfach, lokal).
- Kosten: Anbieter rechnen pro Million Token, Eingabe und Ausgabe getrennt.
Siehe auch: tokens-pro-sekunde, Warum GPUs für KI?