HeadlinesBriefing favicon HeadlinesBriefing.com

Spekulatives Decodieren vLLM AMD

Hacker News •
×

Zusammenfassung: Spekulatives Decodieren ermöglicht es vLLM, mehrere entworfene Token in einem einzigen Zielmodell-Durchlauf zu überprüfen. In unseren Experimenten variierte sein Effekt auf die Output-Token-Durchsatzrate je nach Draft-Methoden und Vorschlagnängen, sowie nach Modellfamilie, Draft-Checkpoint, Arbeitslast und Akzeptanzverhalten.

Einleitung: Große Sprachmodelle unterstützen ein breites Anwendungsspektrum, aber ihr Betrieb in großem Maßstab erfordert sorgfältige Optimierung. Der Standard-Autoregressive-Decoding ist die Baseline, die von den meisten LLM-Serving-Systemen verwendet wird: Das Modell generiert ein Token, fügt es der Sequenz hinzu, und verwendet dann die aktualisierte Sequenz, um das nächste Token zu generieren. Dieser Prozess ist einfach und zuverlässig, aber die Serviceschleife avanciert dennoch ein committed Token nach dem anderen, da Ausgabetoken in strenger Links-nach-Rechts-Reihenfolge generiert werden müssen. Spekulatives Decodieren [1] baut auf dieser Baseline auf einem Draft-and-Verify-Mechanismus auf. Ein leichtes Draft-Komponente schlägt Kandidatentoken zukünftiger Schritte vor, und das Zielmodell prüft diese Kandidaten, bevor sie bestätigt werden. Wenn mehrere Draft-Token akzeptiert werden, kann das System mehrere Ausgabetoken aus einem einzigen Zielmodell-Überprüfungsschritt bestätigen und dabei das Ausgabeverhalten des Zielmodells beibehalten. Dieser Beitrag untersucht, wie spekulatives Decodieren in vLLM funktioniert, und teilt Messungen aus unserer Testumgebung. Wir beginnen mit der Überprüfung der Baseline des Autoregressive-Decoding und des Draft-and-Verify-Prozesses. Anschließend untersuchen wir fünf spekulative-Drafting-Ansätze: native MTP, Gemma 4 MTP, EAGLE-3, DFlash und DSpark. Diese Methoden unterscheiden sich darin, wie das Draft-Komponente Informationen vom Zielmodell erhält und ob Kandidatentoken sequenziell, autoregressiv, parallel oder hybrid generiert werden. Schließlich zeigen wir, wie man in unserer Umgebung getestete Methoden aktiviert, berichten Messungen aus unseren Experimenten an AMD Instinct↓ MI300X und MI355X GPUs unter Verwendung der ROCm↓ offenen Softwareplattform, und diskutieren praktische Einstellungs- und Beobachtbarkeitsaspekte.

Baseline des Autoregressive-Decoding: Beim Standard-Autoregressive-Decoding produziert und bestätigt jeder Decodierschritt ein neues Token. Zur Generierung von vier Ausgabetoken sind vier sequenzielle Decodierschritte erforderlich: Schritt 1:context→model→T1 Schritt 2:context + T1→model→T2 Schritt 3:context + T1 T2→model→T3 Schritt 4:context + T1 T2 T3→model→T4 Nach jedem Schritt wird das generierte Token der Sequenz angehängt und wird zum Eingabewert des nächsten Schritts. Dies macht den Decodiervorgang einfach, erfordert jedoch einen Decodierschritt der Modell für jeden Ausgabetoken. Bei langen Generationen kann dieser token-by-token-Decodiervorgang die Latenz dominieren und die Servicedurchsatzrate limitieren.

Die zentrale Frage hinter dem spekulativen Decodieren lautet daher: Können wir das Ausgabeverhalten des Originalmodells beibehalten, während wir reduzieren, wie oft die Generierung nur um ein Token voranschreitet? Spekulatives Decodieren geht diesem Problem nach, indem es Vorschlag und Überprüfung trennt. Ein Draft-Komponente schlägt zunächst mehrere Kandidatentoken vor. Das Originalmodell, das als Zielmodell fungiert, prüft diese Kandidaten dann, bevor sie bestätigt werden.

Kernidee des spekulativen Decodierens: Spekulatives Decodieren ersetzt das Originalmodell nicht. Stattdessen behält es das Originalmodell als Zielmodell bei, das weiterhin für das finale Ergebnis verantwortlich ist, und fügt einen schnelleren Vorschalt davor hinzu. Der Prozess hat zwei Teile: Draft: mehrere Kandidatentoken vorschlagen. Überprüfen: Zielmodell prüft diese Kandidaten.

Bei jedem Runde spekulatives Decodierens, wie in Abbildung 1 veranschaulicht, schlägt ein leichtes Draft-Komponente ein oder mehrere zukünftige Token vor. Diese Token sind nur Kandidaten und werden nicht sofort bestätigt. Das Zielmodell prüft anschließend die Token-Folge in einem Überprüfungsschritt. Die Überprüfung verläuft von links nach rechts. Jedes Draft-Token wird mit dem Ergebnis des Zielmodells an der entsprechenden Position geprüft. Akzeptierte Token werden der Ausgabesequenz bestätigt. Wenn ein Draft-Token abgelehnt wird, nachfolgende Kandidaten...