Revolutionierung der Inferenz großer Sprachmodelle: Spekulatives Decoding und Niedrigpräzisionsquantisierung

Revolutionierung der Inferenz großer Sprachmodelle: Spekulatives Decoding und Niedrigpräzisionsquantisierung

Mit dem rasanten Fortschritt der künstlichen Intelligenz (KI) haben sich große Sprachmodelle (Large Language Models, LLMs) als Eckpfeiler der natürlichen Sprachverarbeitung (NLP) etabliert. Diese Modelle zeigen bemerkenswerte Fähigkeiten in der Sprachgenerierung und -verarbeitung und sind daher integraler Bestandteil von Anwendungen wie maschineller Übersetzung, Dialogsystemen und Textgenerierung. Mit zunehmender Größe dieser Modelle bleiben jedoch ihre Inferenzeffizienz und ihr Ressourcenverbrauch signifikante Engpässe für die großflächige Bereitstellung.

In den letzten Jahren haben Forscher verschiedene Optimierungstechniken vorgeschlagen, um die Effizienz der LLM-Inferenz zu steigern. In unserer vorherigen Arbeit erzielten wir eine 1,5-fache Beschleunigung der Inferenz durch dynamische KV-Cache-Kompression auf Basis des Frameworks Very Large Language Model (vLLM) und legten damit eine solide Grundlage für die Optimierung der LLM-Leistung.

Dieser Beitrag befasst sich eingehend mit zwei weiteren Optimierungsstrategien: spekulatives Decoding und Niedrigpräzisionsquantisierung. Diese Ansätze zielen darauf ab, die Rechenkapazitäten herkömmlicher Hardware maximal auszuschöpfen, Inferenzkosten zu senken und die Geschwindigkeit zu verbessern. Durch den Einsatz dieser Techniken möchten wir neue Perspektiven und praktische Lösungen zur Steigerung der LLM-Inferenzeffizienz bieten und die Herausforderungen der skalierbaren KI-Bereitstellung bewältigen.

Spekulatives Decoding

Technische Grundlagen

Spekulatives Decoding ist eine Technik, die die Inferenz beschleunigt, indem ein kleineres Modell mehrere Kandidaten-Token generiert, die dann vom größeren Modell validiert werden – so wird eine parallele Decodierung ermöglicht, um die Geschwindigkeit zu steigern. Die Durchführbarkeit dieses Ansatzes beruht auf zwei Schlüsselfaktoren:

Speicherengpass
Bei moderner GPU-Hardware ist die Speicherzugriffsbandbreite oft langsamer als die für die Inferenz erforderliche Rechengeschwindigkeit, sodass der Prozess deutlich speichergebunden ist. Der GPU-Speicherverkehr während der Inferenzphase großer Sprachmodelle wird hauptsächlich durch die Modellgröße bestimmt, während GPUs oft überschüssige Rechenkapazität aufweisen. Durch die Nutzung dieses Überschusses mittels paralleler Inferenz mit einem kleinen Modell kann die Gesamteffizienz verbessert werden.

Vorhersagegenauigkeit kleiner Modelle
Aktuelle gängige Sprachgenerierungsmodelle basieren in der Regel auf autoregressiven Modellen mit Transformer-Architektur. Kleine Modelle zeigen eine hohe Genauigkeit bei der Vorhersage gängiger Sprachmuster (z. B. idiomatische Kollokationen oder Standardformulierungen). Wenn das kleine Modell das nächste Token erfolgreich vorhersagt, kann das große Modell dieses Ergebnis direkt übernehmen, was den Rechenaufwand erheblich reduziert.

Implementierungsmethode

Die Methode des spekulativen Decodings umfasst hauptsächlich die folgenden Schritte:

  • Mehrstufige Kandidatengenerierung

    • Verwendung eines speziell trainierten kleinen Modells für schnelle Inferenz, um mehrere qualitativ hochwertige Kandidaten-Token für jede Position zu generieren.
    • Innovatives Anpassen eines dynamischen Wahrscheinlichkeitsschwellenwerts, um die Anzahl der Kandidaten adaptiv zu steuern.
    • Einführung eines kontextsensitiven Caching-Mechanismus zur Verbesserung der Vorhersagegenauigkeit des kleinen Modells bei der fortlaufenden Textgenerierung.
  • Effiziente Verifikationsstrategie

    • Entwicklung eines Batch-Verifikationsmechanismus, der mehrere Kandidaten-Token gruppiert und zur einmaligen Bewertung an das große Modell sendet.
    • Implementierung einer frühzeitigen Abbruchstrategie, um bei einer Übereinstimmung mit hoher Konfidenz schnell Ergebnisse zurückzuliefern.
    • Ermöglichung einer asynchronen Verarbeitung der Verifikationsergebnisse, um Leerlaufzeiten der GPU zu reduzieren.
  • Intelligentes Planungssystem

    • Dynamische Balance der Rechenressourcenzuweisung zwischen Vorhersage des kleinen Modells und Verifikation des großen Modells.
    • Adaptive Vorhersage auf Basis historischer Statistiken zur Optimierung der Generierungsstrategie für Kandidaten-Token.
    • Implementierung einer feingranularen Aufgabenpartitionierung und -planung zur Maximierung der Hardwareauslastung.

Abb. 1. Spekulatives Decoding mit dynamischer Draft-Länge

Abb. 1. Spekulatives Decoding mit dynamischer Draft-Länge

Experimentelle Ergebnisse

Basierend auf dem branchenführenden vLLM-Inferenzframework haben wir umfassende Anpassungen und Entwicklungen vorgenommen und signifikante Leistungssteigerungen erzielt. Wir führten Experimente mit dem Modell LLaMA-3.1-70B-Instruct auf einer H20-GPU durch und testeten Szenarien mit unterschiedlicher Kontextlänge. Zudem verglichen wir die Leistung mit vLLM ohne spekulatives Decoding, wobei der Schwerpunkt auf dem Durchsatz bei verschiedenen Batch-Größen lag. Die Ergebnisse sind in Abbildung 2 dargestellt.

  • Leistungssteigerungen

    • Erzielung einer 1,4-fachen Gesamtinferenzbeschleunigung bei gleichbleibender Ausgabequalität.
    • Vollständige Kompatibilität mit bestehenden vLLM-Funktionen; nahtlose Integration in aktuelle Systeme möglich.
    • Unterstützung von Sprachmodellen verschiedener Größen, wobei die Verbesserungen bei großen Modellen besonders deutlich ausfallen.

Abb. 2. Beschleunigungsverhältnis des spekulativen Decodings.

Abb. 2. Beschleunigungsverhältnis des spekulativen Decodings.

  • Technische Vorteile

    • Wahrscheinlichkeitsbasierte dynamische Sampling-Strategie für effizientes Token-Drafting und -Verifikation.
    • Stabile intelligente Planungsmechanismen sorgen für konsistente Beschleunigungseffekte.
    • Kosteneffizient mit geringem Ressourcenaufwand.

Niedrigpräzisionsquantisierung

Technische Grundlagen

  • Überblick über die Quantisierung

Quantisierung ist eine weit verbreitete Technik, die den Rechen- und Speicheraufwand großer Sprachmodelle (LLMs) reduziert, indem die Modellgewichte und Aktivierungen von hochbitigen Darstellungen in niedrigbitige Darstellungen umgewandelt werden. Konkret quantisieren viele Methoden FP16-Tensoren in niedrigbitige Integer-Tensoren, wie unten gezeigt:

Quantisierung von FP16-Tensoren in niedrigbitige Integer-Tensoren

  • Post-Training-Quantisierung (PTQ)

PTQ quantisiert vortrainierte Modelle ohne erneutes Training und vermeidet so hohe Nachschulungskosten. Die Anwendung traditioneller Quantisierungsmethoden auf LLMs bringt jedoch besondere Herausforderungen mit sich:

    • LLMs weisen im Vergleich zu kleineren Modellen eine höhere Häufigkeit von Ausreißern in Gewichten und Aktivierungen sowie breitere Verteilungsbereiche auf.
    • Daher erfordert eine effektive Quantisierung von LLMs spezielle Optimierungstechniken, um Präzisionsverluste zu minimieren und gleichzeitig die Effizienz zu erhalten.

Implementierungsmethode

  • Ausreißer-Optimierung

Das Vorhandensein von Ausreißern in den Gewichten und Aktivierungen großer Sprachmodelle stellt eine erhebliche Herausforderung während des Quantisierungsprozesses dar. Traditionelle Methoden behandeln Ausreißer in der Regel durch Clipping oder einfache Skalierung, was bei kleineren Modellen gut funktionieren mag, aber bei LLMs oft die Leistung erheblich beeinträchtigt.

Unser Ansatz verbessert die Behandlung von Ausreißern durch detaillierte Analyse und Optimierungsstrategien. Er verfeinert nicht nur die Berechnung von Ausreißern, sondern optimiert auch die zugehörigen Datenstrukturen, sodass das Modell bei minimalem Präzisionsverlust eine effiziente Rechenleistung behält. Beispielsweise übernehmen wir eine flexiblere dynamische Bereichsverteilungsstrategie, um Ausreißer hierarchisch zu verarbeiten und die Eigenschaften des Modells genauer zu erfassen.

  • Verbesserte Operatoren und Schichtfusion

Wir haben eine Reihe verbesserter Operatoren entwickelt, die quantisierte Datenstrukturen effizienter verarbeiten können. Durch Schichtfusionstechniken kombinieren wir beispielsweise mehrere aufeinanderfolgende Operatoren zu einem einzigen Operator während der Vorwärtsberechnung, um Rechenaufwand und den Zwischendatentransfer zu reduzieren.

Zusätzlich haben wir für gängige Operationen wie Matrixmultiplikation in Kombination mit Aktivierungsfunktionen effiziente Niedrigbit-Operatoren entwickelt, um die Modellinferenz zu beschleunigen. Diese Verbesserung reduziert die Bandbreitenanforderungen auf Hardware-Ebene erheblich und steigert die Gesamtrecheneffizienz weiter.

  • Einzigartiges FP8-Quantisierungsschema

Während gängige Quantisierungsmethoden in der Industrie typischerweise die Umwandlung von FP16 in INT8 verwenden, ist dieser Ansatz möglicherweise nicht für Szenarien geeignet, die eine noch niedrigere Präzision erfordern. Unser FP8-Quantisierungsschema führt einen adaptiven Skalierungsfaktor ein, um die Bitbreite weiter zu reduzieren und gleichzeitig die numerische Ausdrucksfähigkeit des Modells zu bewahren. In der Implementierung passen wir das Verhältnis von Exponent und Mantisse in FP8 an, um besser an die Verteilungseigenschaften von LLMs anzupassen, sodass das Modell selbst bei sehr niedrigen Bitbreiten genaue Ergebnisse liefert.

  • KVCache-Quantisierung

In Szenarien, die eine großflächige Inferenz unterstützen, sind Speicherung und Zugriffseffizienz von KVCache von entscheidender Bedeutung. Traditionelle Methoden wenden oft Standardquantisierungstechniken an, ohne auf die spezifischen Eigenschaften von KVCache-Speicherstrukturen zu optimieren.

Wir schlagen eine spezielle KVCache-Quantisierungstechnik vor, die den Bedarf an Rechenressourcen minimiert, indem spezifische Quantisierungsstrategien auf Abfragen und Schlüssel-Wert-Paare angewendet werden. Konkret optimieren wir die dynamischen Aktualisierungen und die Speicherdichte von KVCache, indem wir abschnittsweise Quantisierung und Methoden zur Speicherung dünnbesetzter Matrizen kombinieren, um die Cache-Auslastung während des Inferenzprozesses signifikant zu verbessern.

  • Optimierung des Inferenzprozesses

Modellgewichte in FP16 werden für die Inferenz in das FP8-Format quantisiert. Eingabe-Token durchlaufen die Embedding-Schicht und das Transformer-Modul, einschließlich Attention-Mechanismen und Feed-Forward-Netzwerke.

Mithilfe von FP8-TensorCores und optimiertem KVCache speichert und aktualisiert das System Schlüssel-Wert-Paare effizient.

Lineare Transformationen und die Softmax-Schicht erzeugen die Ausgabewahrscheinlichkeitsverteilung, die schließlich die endgültige Token-Ausgabe liefert.

Dieser Ansatz nutzt die Recheneffizienz von FP8-TensorCores, um eine schnellere Inferenz bei geringeren Rechenkosten zu liefern. In Abbildung 3 werden Modellgewichte, die ursprünglich im FP16-Format vorliegen, auf FP8 quantisiert, um den Datenzugriffsaufwand erheblich zu reduzieren und die Geschwindigkeit zu verbessern. Während des LLM-Inferenzprozesses werden Operationen wie QKV-Projektion, Flash Attention und Feed-Forward-Layer im FP8-Format matrixmultipliziert. Diese Berechnungen werden mit TensorCores beschleunigt, was zu einer erheblichen Steigerung der Inferenzgeschwindigkeit führt. Um den Präzisionsverlust zu mildern, wird eine kleine Menge zusätzlicher Daten für PTQ verwendet, sodass die Inferenzgenauigkeit des Modells erhalten bleibt. In Langtextszenarien kann der Aufwand durch KV-Datenzugriffe die Inferenzgeschwindigkeit verlangsamen. Daher werden die KV-Daten ebenfalls auf FP8 quantisiert, um die Inferenzleistung des Modells weiter zu optimieren.

Abb. 3. Überblick über die FP8-Präzisionsquantisierungspipeline.

Abb. 3. Überblick über die FP8-Präzisionsquantisierungspipeline.

Experimentelle Ergebnisse

  • Abbildung 4 zeigt das Beschleunigungsverhältnis nach Anwendung der Niedrigpräzisionsquantisierung auf Llama3-8B-BF16 bei verschiedenen Ein-/Ausgabelängen (10000-1000, 5000-500, 2000-200) und Batch-Größen (Batch Size). Je länger die Ein-/Ausgabelänge, desto deutlicher ist der Beschleunigungseffekt, insbesondere bei der Inferenz mit großen Batches. Auf einer einzelnen 4090-GPU, die Llama3-8B-FP8-KV8 ausführt und bei der die time-to-first-token (ttft) auf unter 2 Sekunden begrenzt ist, liegt die Batch-Größe bei etwa 4, und das Beschleunigungsverhältnis beträgt 1,4x.

Abb. 4. Beschleunigungsverhältnis durch FP8-Quantisierung.

Abb. 4. Beschleunigungsverhältnis durch FP8-Quantisierung.

  • Unsere Methode reduziert die Auswirkungen von Ausreißern bei der Verarbeitung größerer Ein-/Ausgabelängen erheblich und verbessert die Berechnungs- und Übertragungseffizienz durch Optimierungen wie Schichtfusion. Traditionelle PTQ-Methoden in der Industrie haben oft Schwierigkeiten bei der Verarbeitung großer Ein-/Ausgabelängen in großen Modellen. Unsere Lösung ist speziell darauf ausgelegt, dieses Problem zu adressieren und eine stabile Modellleistung zu gewährleisten.
  • Experimente zeigen, dass unsere Methode auf einer 4090-GPU bei der Verarbeitung langer Ein-/Ausgabelängen und mittlerer Batch-Größen eine überlegene Beschleunigung bietet, während die Inferenzlatenz (ttft) unter 2 Sekunden bleibt – geeignet für Echtzeit-Inferenzanforderungen.

Qualitätsbewertung

Um verschiedene Modell-APIs (wie openrouter.ai) im mmlu_pro (5-shot)-Testdatensatz mit dem Tool lm-evaluation-harness zu testen, führen Sie die Inferenz mit der Standardkonfiguration des Tools durch. Die Ergebnisse sind in Abbildung 5 dargestellt.

Abb. 5. Vergleich der exakten Übereinstimmungsraten zwischen Meta-Llama-3.1-8B-Instruct-FP8 und Meta-Llama-3.1-8B-Instruct.

Abb. 5. Vergleich der exakten Übereinstimmungsraten zwischen Meta-Llama-3.1-8B-Instruct-FP8 und Meta-Llama-3.1-8B-Instruct.

Fazit

Dieser Beitrag stellt spekulatives Decoding und Niedrigpräzisionsquantisierung als sich ergänzende Techniken vor, die darauf abzielen, die Effizienz der Inferenz großer Sprachmodelle (LLMs) zu steigern. Spekulatives Decoding beschleunigt den Inferenzprozess, indem ein kleineres Modell Kandidaten-Token generiert, die anschließend parallel vom größeren Modell validiert werden – was zu einer 1,4-fachen Beschleunigung führt.

Im Gegensatz dazu reduziert die Niedrigpräzisionsquantisierung Rechen- und Speicherkosten, indem Modellgewichte in niedrigbitige Darstellungen umgewandelt werden, während die Modellleistung erhalten bleibt. Zusammengenommen bieten diese Methoden neue Erkenntnisse und praktische Lösungen für eine hocheffiziente Inferenz und ergänzen bestehende Techniken wie die dynamische KV-Cache-Kompression.

Ursprünglich veröffentlicht auf Novita AI

Novita AI ist eine KI-Cloud-Plattform, die Entwicklern eine einfache Möglichkeit bietet, KI-Modelle über unsere einfache API bereitzustellen, und gleichzeitig eine erschwingliche und zuverlässige GPU-Cloud für den Aufbau und die Skalierung bereitstellt.

Empfohlene Lektüre

  1. Dynamische KV-Cache-Kompression basierend auf dem vLLM-Framework
  2. So wählen Sie die beste GPU für LLM-Inferenz aus: Benchmarking-Erkenntnisse
  3. Wie KV Sparsity eine 1,5-fache Beschleunigung für vLLM erreicht