Sparse Compiler: Neue Horizonte der LLM-Inferenz erschließen | A100 GPU beschleunigt Sparse Computing

Sparse Compiler: Neue Horizonte der LLM-Inferenz erschließen | A100 GPU beschleunigt Sparse Computing

Sparse-Techniken für 100-fache Beschleunigung der Large Language Model Inference. Erfahren Sie, wie Sparse-Compiler die LLM-Inferenz revolutionieren und beispiellose Effizienz und Geschwindigkeit ermöglichen. In der vorherigen Diskussion über „Wie LLMs die Inferenz durch Sparsity beschleunigen“ haben wir den zweiten Teil behandelt: „Inferenzbeschleunigung mit Aktivierungssparsity.“ Klicken Sie hier, um den ersten Teil durchzulesen: „Wie LLMs Pruning durchführen.“ In diesem Teil werden wir uns mit dem dritten Teil befassen: „Die Auswirkungen von Sparse-Compilern auf die LLM-Inferenz.“

Die Notwendigkeit von Compilern

Aktuelle Entwicklungen zeigen, dass Deep-Learning-Berechnungen zunehmend spärlicher werden, d. h. Operationen werden auf Tensoren mit vielen Nullen ausgeführt. Neben spärlichen Modellgewichten (die typischerweise statisch und vorab bekannt sind) wurden weitere Muster entdeckt, die vom Input abhängen und erst zur Laufzeit bekannt sind – sogenannte dynamische Sparsity. Große Sprachmodelle (LLMs) wie GPT und OPT weisen verschiedene Arten dynamischer Sparsity auf. Erstens zeigen Transformer-Modelle (und andere Modelltypen) eine inhärente dynamische Sparsity in ihren Eingaben, Aktivierungen und Gradienten. In Aktivierungsgraphen sind nur sehr wenige Elemente ungleich Null (z. B. 3,0 % bei T5-Base, 6,3 % bei ViT-B/16). Zweitens wird dynamische Sparsity genutzt, um DNN-Modelle weiter zu skalieren. Die meisten bestehenden Modelle mit über einer Billion Parametern verwenden eine Mixture-of-Experts (MoE)-Architektur, die Experten basierend auf spärlichen Eingaben dynamisch aktiviert. Darüber hinaus gewinnt dynamisches Sparsity-Training zunehmend an Bedeutung, da es weniger wichtige Verbindungen im Modell während des Trainings dynamisch entfernt und so eine überlegene Recheneffizienz bietet. Dynamische Sparsity, bei der die spärlichen Muster vor der Laufzeit unbekannt sind, stellt eine große Herausforderung für Deep Learning dar. Fortschrittliche sparsity-bewusste Deep-Learning-Lösungen sind aufgrund des erheblichen Aufwands für die Vorverarbeitung auf vordefinierte statische Muster beschränkt. Die effiziente Ausführung dynamisch spärlicher Berechnungen leidet oft unter dem Konflikt zwischen GPU-freundlichen Tensor-Blockkonfigurationen für effiziente Ausführung und der Minimierung von verschwendeter Abdeckung (Nicht-Null-Werte in Tensoren) in sparsity-bewussten Blockformen. Die LLM-Sparsity erfordert den Einsatz von Sparse-Operatoren. Herkömmliche Bibliotheken wie cuSPARSE oder Sputnik sind aufgrund ihrer generischen (und nicht optimalen) Auslegung entweder auf statisch kompilierte sparsity-bewusste Kernel beschränkt oder erfordern eine dynamische Konvertierung von Sparse-Matrizen in dichte Formate, was bei dynamischer Sparsity zu erheblichen Leistungseinbußen führt.

Vergleich gängiger Compiler

Zu den derzeit gängigen Sparse-Berechnungscompilern zählen cuSPARSE, Sputnik, OpenAI Block Sparse, SparTA und PIT, wie in [11] referenziert. Nachfolgend eine Vergleichstabelle der Beschleunigungsdaten: Szenario: Matrixmultiplikation der Größe 4096 × 4096 × 4096. Metrik: Latenz (ms)

Erwähnenswert ist, dass PIT die modernsten Sparse-Optimierungen übertrifft und im Vergleich zu cuSPARSE, Sputnik, OpenAI Block Sparse bzw. SparTA Beschleunigungen um das bis zu 88,7‑, 5,8‑, 17,5‑ bzw. 5,7‑Fache erreicht.

Die Auswirkungen von Compilern auf die LLM-Inferenz

OPT

Experiment [11] evaluiert PIT mit dem Alpaca-Datensatz an zwei Versionen des OPT-Modells: OPT13B und 30B, auf acht V100–32GB GPUs. PIT wendet zwei dynamische Sparsity-Optimierungen auf OPT an: (1) Eliminierung von Padding-Overhead für Sätze unterschiedlicher Länge im selben Batch; (2) Nutzung von feinkörniger Sparsity (bis zu 99 %), die durch ReLU-Aktivierungen in den FFN-Schichten erzeugt wird. Die Batch-Größe ist auf 32 gesetzt, und PyTorch-S verwendet Triton als Backend.

End-to-End-Latenz pro Batch und Speicherverbrauch von OPT

PITs Leistung übertrifft PyTorch, PyTorchS und DeepSpeed um das 2,1‑ bis 2,3‑Fache, 2,5‑ bis 3,0‑Fache bzw. 2,0‑ bis 2,2‑Fache. Die Vermeidung von Padding bei dynamischen Sequenzen trägt zu einer 1,6‑ bis 1,7‑fachen Beschleunigung von PIT gegenüber der Baseline bei. Durch die zusätzliche Nutzung der dynamischen Sparsity in den ReLU-Aktivierungen der FFN-Schichten steigert PIT die Leistung um weitere 1,3‑ bis 1,4‑Fache. Im Vergleich zu PyTorch-S, das Triton-Block-Sparse-Kernel mit einer Blockgröße von 32x32 verwendet, setzt PIT kleinere Mikroblöcke (d. h. 1x32) und effiziente Berechnungen mit SRead und SWrite ein, wodurch Rechenverschwendung vermieden wird. Außerdem leidet PyTorch-S unter dem Overhead der Sparse-Format-Konvertierung, was zu den höchsten Latenzen führt. Hinsichtlich des Speicherverbrauchs hat DeepSpeed den geringsten Speicherbedarf, da es die gesamte Encoder-Schicht in einen einzigen Operator fusioniert und so Aktivierungsspeicher einspart.

MOE

In Experimenten [11] mit SwinMoE, einem großen visuellen Modell mit Encoder- und MoE-Struktur, wurde die Leistung von PIT auf einer A100 mit float16-Genauigkeit evaluiert. Bei visuellen Transformatoren wurden Eingabebilder innerhalb desselben Batches auf die gleiche Auflösung skaliert, um eine konsistente Sequenzlänge zu gewährleisten. In unseren Experimenten verglichen wir die End-to-End-Inferenzlatenz und den Speicherverbrauch von Swin-MoE bei verschiedenen Batch-Größen und Expertenanzahlen. MegaBlocks übertrifft andere Baselines, indem es alle Experten gleichzeitig ausführt und so effektiv Sparse-Kernel nutzt, um Rechenverschwendung zu vermeiden. PIT verbessert die Leistung im Vergleich zu MegaBlocks weiter, indem es Daten-Neuordnungen beim Datentransfer über Speicherhierarchien hinweg unterstützt.

End-to-End-Latenz und Speicherverbrauch von SwinMoE auf A100

Im Vergleich zu PyTorch, PyTorchS, Tutel, DeepSpeed und MegaBlocks erreichte PIT Beschleunigungen um das 1,5‑ bis 6,3‑Fache, 1,5‑ bis 2,9‑Fache, 1,1‑ bis 1,8‑Fache, 1,2‑ bis 1,6‑Fache bzw. 1,1‑ bis 1,4‑Fache. Die Leistungssteigerung von PIT bei Swin-MoE fällt geringer aus als beim Switch Transformer, da Swin-MoE deutlich weniger Experten hat als Switch Transformer. Wenn die Anzahl der Experten von 8 auf 32 steigt, trägt die MoE-Schicht nur 23,6 % bis 61,2 % zur End-to-End-Latenz bei. Betrachtet man die Latenz der MoE-Schicht allein, ist PIT etwa 1,2‑ bis 1,7‑Fache schneller als MegaBlocks. Hier sind die zusammengestellten Vergleichsdaten für PIT:

Abschließend diskutieren wir die erforderliche Hardware-Unterstützung für die Beschleunigung.

GPU

NVIDIA A100

Die A100 nutzt die neue Ampere-Architektur mit bis zu 6912 CUDA-Kernen und 40 GB schnellem HBM2-Speicher. Sie unterstützt außerdem die zweite Generation der NVLink-Technologie, was eine schnelle GPU-zu-GPU-Kommunikation ermöglicht und die Trainingsgeschwindigkeit großer Modelle steigert. Die A100 führt leistungsstarke neue Tensor Cores der dritten Generation ein, zusammen mit umfassender Unterstützung für DL- und HPC-Datentypen sowie neuen Sparsity-Funktionen, um den Durchsatz weiter zu verdoppeln. Die TF32-Tensor-Core-Operationen der A100 bieten einen direkten Weg zur Beschleunigung von FP32-Ein-/Ausgabedaten in DL-Frameworks und HPC – zehnmal schneller als V100-FP32-FMA-Operationen, bei Sparsity sogar 20-mal schneller. Für FP16/FP32 Mixed-Precision-DL ist die A100 2,5-mal leistungsfähiger als die V100, bei Sparsity sogar 5-mal. Beim Ausführen von KI-Modellen mit dem PyTorch-Framework zeigt die A100 im Vergleich zum Vorgängerchip V100 eine sechsfache Leistungssteigerung beim BERT-Modelltraining und eine siebenfache Steigerung bei der BERT-Inferenz.

Intel Max Series GPU

Laut Referenz [18] haben aktuelle Implementierungen von zwei Sparse-Matrix-Operationen auf der NVIDIA V100 GPU eine bis zu zehnfache Leistungssteigerung gegenüber der Referenzimplementierung auf der V100 gezeigt.

Fazit

Zusammenfassend lassen sich drei Schlussfolgerungen zur Beschleunigung der LLM-Inferenz durch Sparsity ziehen:

  • Gewichtssparsity (50 %), Aktivierungssparsity (90 %) und MoE-Sparsity (z. B. Mistral 8x7B mit 75 % dynamischer Sparsity) sind orthogonale Faktoren (Effekte können sich kumulieren, aber die Modellleistung kann beeinträchtigt werden). In Kombination mit dem 2‑ bis 3‑fachen Beschleunigungseffekt des PIT-Compilers auf spärliche Modelle ergibt sich gegenüber aktuellen Mainstream-Inferenzframeworks (TGI/vLLM, usw.) eine theoretische Beschleunigungsgrenze von 5‑ bis 30‑fach.
  • Die Latenz steht im Fokus aktueller Sparsity-Techniken (Sparsity ist in gewissem Maße wirksam; je größer die Batch-Größe, desto geringer der Effekt). Der Durchsatz wird eine neue Optimierungsrichtung darstellen, da Aktivierungssparsity eine gewisse Potenzverteilung aufweist und ein erhebliches Optimierungspotenzial für die Technik bietet.
  • Die Umstellung von Nicht-ReLU-Aktivierungen auf ReLU-Aktivierungen in LLMs verursacht relativ geringe Kosten (etwa 3 % Feintuning-Kosten; Datenqualität ist relativ wichtig). Das Training von Prädiktoren in DejaVu verursacht ebenfalls geringere Kosten (schnelles Training und unabhängig von Daten). In Kombination mit der Kostensenkung durch die erhöhte Inferenzgeschwindigkeit ist dies eine Initiative mit hohem ROI und kommerziell tragfähig.

Referenzierte Paper

[11] Pit: Optimization of dynamic sparse deep learning models via permutation invariant transformation [18] Performance Optimization of Deep Learning Sparse Matrix Kernels on Intel Max Series GPU

novita.ai bietet eine Stable Diffusion API und Hunderte der schnellsten und günstigsten KI-Bildgenerierungs-APIs für 10.000 Modelle. 🎯 Schnellste Generierung in nur 2 Sekunden, nutzungsabhängig bezahlen, ab nur 0,0015 $ pro Standardbild. Sie können eigene Modelle hinzufügen und müssen keine GPU warten. Verbreitung kostenloser Open-Source-Erweiterungen ist erwünscht.

Empfohlene Lektüre: Unveiling LLM-Pruner Techniques: Doubling Inference Speed

Activation Sparsity Revolution: Enhancing Model Performance and Speedup Inference without Retraining!