Die Lebensdauer einer Inferenzanfrage (vLLM V1): Wie LLMs effizient im großen Maßstab bereitgestellt werden
vLLM ist eine Open-Source-Inferenz-Engine, die große Sprachmodelle bedient. In diesem Artikel tauchen wir tief in die Funktionsweise von vLLM ein und erläutern, wie Anfragen verarbeitet werden, um eine effiziente Nutzung von Ressourcen zu gewährleisten.
Einführung
Die Bereitstellung von großen Sprachmodellen (LLMs) erfordert eine ausgeklügelte Architektur, die sowohl hohe Leistung als auch Effizienz bietet. Ubicloud hat mit vLLM eine Lösung entwickelt, die es ermöglicht, mehrere Instanzen von LLMs über GPUs zu betreiben und den Datenverkehr effizient zu verteilen. In diesem Artikel werden wir den Lebenszyklus einer Inferenzanfrage in vLLM untersuchen und die verschiedenen Komponenten und Prozesse, die an der Bereitstellung beteiligt sind, detailliert beschreiben.
Terminologie
Um die folgenden Abschnitte besser zu verstehen, definieren wir einige wichtige Begriffe:
- Request: Eine eingehende Chat-Vervollständigungsnachricht vom Client, formatiert im OpenAI-kompatiblen Format.
- Sequence: Der kombinierte Stream von Eingabe- und Antwort-Token, der mit einer Anfrage verbunden ist.
- Batching: Der Prozess, mehrere Anfragen in einem einzigen Vorwärtsdurchlauf durch das Modell zu gruppieren, um die GPU-Nutzung zu maximieren.
- Prefill: Die Phase, in der das Modell die Eingabe-Token einer neuen Anfrage verarbeitet.
- Decode: Die Phase, in der das Modell das nächste Ausgabe-Token generiert.
- KV Cache: Der GPU-Speicherbereich, der die Schlüssel- und Wert-Tensoren für jede Anfrage speichert.
- KV Block: Eine feste Speichereinheit im KV-Cache, die Schlüssel und Werte für eine feste Anzahl von Token speichert.
Architektur von vLLM V1
Bevor wir in den Anfragefluss eintauchen, werfen wir einen Blick auf die Hauptkomponenten der vLLM V1-Architektur:
- AsyncLLM: Ein asynchroner Wrapper um die Kern-Engine, der Anfragen an die EngineCore sendet und Ausgaben abruft.
- EngineCore: Die zentrale Engine, die die Inferenz durchführt und für das Scheduling verantwortlich ist.
- Scheduler: Eine Komponente, die die Anfragen verwaltet und entscheidet, wie viele Token für jede Anfrage verarbeitet werden.
- ModelExecutor: Koordiniert das Laden und die Ausführung des Modells über mehrere GPU-Arbeitsprozesse.
- ModelRunner: Jeder GPU-Arbeiter hat einen ModelRunner, der das Modell lädt und die Vorwärtsdurchläufe ausführt.
- KVCacheManager: Verwaltet den GPU-Speicher für die KV-Tensoren aller Anfragen.
Empfangen der Anfrage – API-Server und asynchrone IPC
Der Lebenszyklus einer Anfrage beginnt, wenn eine HTTP-Anfrage am vLLM-Server ankommt. Der OpenAI-kompatible API-Server verwaltet die HTTP-Kommunikation und Authentifizierung. Nach der Validierung übergibt der Server die Anfrage an die AsyncLLM-Engine zur Verarbeitung.
Scheduling und kontinuierliches Batching
Der Scheduler ist zentral für die Fähigkeit von vLLM, hohe Durchsatzraten zu erreichen. Er verfolgt alle Anfragen und orchestriert deren Fortschritt. vLLM verwendet einen kontinuierlichen Batching-Algorithmus, um die GPU-Nutzung zu maximieren.
Modell-Ausführung – Vorwärtsdurchlauf auf der GPU
Sobald der Scheduler entschieden hat, welche Anfragen vorangetrieben werden sollen, ruft er die ModelRunner über den ray-basierten ModelExecutor auf. Dies führt den Vorwärtsdurchlauf des Modells aus, wobei alle Token aus den ausgewählten Anfragen in einem einzigen großen Tensor kombiniert werden.
Ausgabeverarbeitung – Streaming von Tokens zurück
Die AsyncLLM erhält die neuen Tokens über den IPC-Kanal und verarbeitet diese, indem sie sie detokenisiert und in eine interne Ausgabewarteschlange einfügt. Der ursprüngliche Aufrufer wird dann die Tokens abholen und sie an den API-Server zurückgeben.
Fazit
In diesem Artikel haben wir den gesamten Lebenszyklus einer vLLM-Inferenzanfrage durchlaufen. Wir hoffen, dass dieses Verständnis den AI-Ingenieuren hilft, vLLM zu optimieren und anzupassen, und dass es anderen Einblick in die Funktionsweise von vLLM gibt.
Quellenliste:
- Quelle: LIFE OF AN INFERENCE REQUEST (VLLM V1): HOW LLMS ARE SERVED EFFICIENTLY AT SCALE
- vLLM GitHub Repository
- Transformer Architecture Paper
- Video von Andrej Karpathy über LLMs
Hinterlasse einen Kommentar
An der Diskussion beteiligen?Hinterlasse uns deinen Kommentar!