Enthüllung der LLM-Pruner-Techniken: Verdopplung der Inferenzgeschwindigkeit

Enthüllung der LLM-Pruner-Techniken: Verdopplung der Inferenzgeschwindigkeit

Sparse-Techniken für 100-fache Beschleunigung bei der Inferenz großer Sprachmodelle. Entdecken Sie die Geheimnisse hinter den LLM-Pruner-Techniken, die die Inferenzgeschwindigkeit verdoppeln, um schnellere Ergebnisse zu erzielen.

Einleitung

Es ist allgemein bekannt, dass es drei Kernfaktoren gibt, die die Leistung großer Sprachmodelle (LLMs) auf GPUs beeinflussen: (1) GPU-Rechenleistung, (2) GPU-Eingabe/Ausgabe (I/O) und (3) GPU-Speichergröße. Es ist erwähnenswert, dass für heutige LLMs der Faktor (2) der primäre Engpass während der Inferenzphase ist.

Dieser Blog konzentriert sich auf die Machbarkeit der Beschleunigung von LLM-Inferenz auf Consumer-Grafikkarten durch Pruning oder Sparsity, basierend auf den neuesten Forschungspapieren und Ingenieurspraktiken.

Zunächst werden aus der Analyse der LLM-Inferenzlatenzmetriken in [1] die folgenden drei Schlussfolgerungen gezogen:

  • In den Phasen des Prompting und der Token-Generierung bei LLMs dauert die Token-Generierungsphase aufgrund der I/O-Latenz beim Laden der Modellparameter wesentlich länger.
  • Bei der LLM-Inferenz sind sowohl die Attention- als auch die MLP-Module Engpässe, wobei das MLP-Modul etwa zwei Drittel der I/O-Latenz ausmacht.
  • Der Anteil von All Reduce (Kommunikation zwischen GPUs) ist relativ gering, was darauf hindeutet, dass die Hauptoptimierungsrichtung innerhalb der Transformer-Architektur selbst liegt.

Für detaillierte Daten siehe die folgende Abbildung:

Um die Inferenzeffizienz zu verbessern, wurden verschiedene Techniken untersucht, darunter Quantisierung, Inferenz-Decodierung, Destillation und Sparsity. Dieser Blog konzentriert sich auf Sparsity und gibt eine ausführliche Einführung.

Einführung in die Sparsity.

Modell-Pruning, auch als Modell-Sparsity bekannt, unterscheidet sich von der Modellquantisierung dadurch, dass statt der Komprimierung jedes Gewichtsparameters versucht wird, bestimmte Gewichtsparameter direkt zu „entfernen“. Das Prinzip des Modell-Prunings besteht darin, die Anzahl der Parameter und die Rechenlast im Modell zu reduzieren, indem „unwichtige“ Gewichte eliminiert werden, während gleichzeitig versucht wird, die Genauigkeit des Modells beizubehalten.

Das Papier [17] führt erstmals die Methode des Gewichts-Prunings ein: Alle Gewichte unterhalb eines bestimmten Schwellenwerts werden entfernt, gefolgt von einem Feintuning, bis die Genauigkeit das gewünschte Niveau erreicht. Die Autoren dieses Papiers führten Experimente mit LeNet, AlexNet und VGGNet durch, um die Wirksamkeit des Prunings zu überprüfen.

Eine weitere Schlussfolgerung bezüglich L1- und L2-Regularisierung legt nahe, dass die L1-Regularisierung ohne Feintuning besser abschneidet, während die L2-Regularisierung mit Feintuning besser ist. Darüber hinaus sind frühere Schichten im Netzwerk empfindlicher gegenüber Pruning, weshalb ein iterativer Pruning-Ansatz vorzuziehen ist. Basierend auf Experimenten schlagen die Autoren die Lottery-Ticket-Hypothese vor.

Die Lottery-Ticket-Hypothese besagt, dass es für ein vortrainiertes Netzwerk ein Subnetzwerk gibt, das ohne Überschreitung der Trainingsrunden des Originalnetzwerks eine ähnliche Genauigkeit wie das Originalnetzwerk erreichen kann. Dieses Subnetzwerk ist wie ein Lottogewinn.

Um die Modellgenauigkeit wiederherzustellen, ist es in der Regel erforderlich, das Modell nach dem Pruning erneut zu trainieren. Die typische Drei-Stufen-Pipeline für das Modell-Pruning besteht aus den Schritten Training, Pruning und Feintuning, wobei sich die Netzwerkkonnektivität vor und nach dem Pruning ändert, wie in der folgenden Abbildung dargestellt.

Inzwischen umfasst die Sparsity in tiefen neuronalen Netzen, je nach den Objekten, die in Deep-Learning-Modellen sparse gemacht werden können, hauptsächlich Gewichts-Sparsity, Aktivierungs-Sparsity und Gradienten-Sparsity.

Das war eine kurze Einführung in die Sparsity. Als Nächstes teilen wir in drei Teilen die zentrale These „Wie LLMs die Inferenz durch Sparsity beschleunigen“. Der erste Teil „Wie große Modelle pruning“ wird besprochen. Der zweite Teil behandelt „Wie man die Inferenz mithilfe von Aktivierungs-Sparsity beschleunigt“, und der dritte Teil geht näher auf „Die Auswirkungen von Sparsity-Compilern auf die LLM-Inferenz“ ein.

In diesem umfassenden Leitfaden werden wir den ersten Teil erkunden: „Enthüllung der LLM-Pruner-Techniken: Verdopplung der Inferenzgeschwindigkeit“, verfasst von Zachary vom novita.ai-Team.

Wie LLMs pruning durchgeführt wird

LLMs haben oft einen Umfang von mehreren hundert Milliarden Parametern, was herkömmliche Methoden des erneuten Trainings oder iterativen Prunings unpraktisch macht. Daher können Methoden wie iteratives Pruning und die Lottery-Hypothese [2,3] nur auf kleinere Modelle angewendet werden.

Pruning kann effektiv auf visuelle und kleinere Sprachmodelle sowie Aufgaben angewendet werden. Die optimalen Pruning-Methoden erfordern jedoch ein umfangreiches erneutes Training des Modells, um den durch die Entfernung der pruning-Elemente verursachten Genauigkeitsverlust auszugleichen. Daher werden die Kosten bei Modellen im GPT-Maßstab ebenfalls unerschwinglich hoch. Es gibt zwar einige One-Shot-Pruning-Methoden, die Modelle ohne erneutes Training komprimieren, aber ihre Rechenkosten sind zu hoch, um auf Modelle mit Milliarden von Parametern angewendet zu werden.

In letzter Zeit gab es Durchbrüche bei den Pruning-Techniken für LLMs, die der Reihe nach in diesem Blog besprochen werden.

SparseGPT

SparseGPT[12] ist die erste One-Shot-Präzisions-Pruning-Technik im LLM-Szenario, die effektiv auf Modelle mit einem Umfang von 100–1000 Milliarden Parametern angewendet werden kann. Die Funktionsweise von SparseGPT vereinfacht das Pruning-Problem zu einer groß angelegten sparsen Regression. Es basiert auf neuen approximativen sparsen Regressionslösern zur Lösung hierarchischer Kompressionsprobleme, und seine Effizienz reicht aus, um auf dem größten GPT-Modell (175B Parameter) mit einer einzigen GPU in wenigen Stunden ausgeführt zu werden. Darüber hinaus erreicht SparseGPT eine hohe Genauigkeit ohne Feintuning, und der Genauigkeitsverlust nach dem Pruning kann vernachlässigbar sein. Beispielsweise erreicht SparseGPT bei der Ausführung auf den größten öffentlich verfügbaren generativen Sprachmodellen (OPT-175B und BLOOM-176B) 50–60% Sparsity im One-Shot-Test mit minimalem Genauigkeitsverlust, gemessen an Perplexity oder der Genauigkeit von Zero-Shot-Tests.

Für den technischen Code siehe das Projekt: https://github.com/IST-DASLab/sparsegpt

Abbildung 1 zeigt die experimentellen Ergebnisse und hebt zwei wichtige Punkte hervor: Erstens, wie in Abbildung 1 (links) gezeigt, ist SparseGPT in der Lage, bis zu 60% gleichmäßige schichtweise Sparsity in den 175B-Parameter-Varianten der OPT-Familie mit minimalem Genauigkeitsverlust zu pruning. Im Gegensatz dazu hält die einzige bekannte One-Shot-Baseline in diesem Maßstab – Magnitude Pruning – die Genauigkeit nur bis zu 10% Sparsity aufrecht und bricht bei über 30% Sparsity vollständig zusammen.

Zweitens, wie in Abbildung 2 (rechts) dargestellt, kann SparseGPT auch präzise Sparsity in strengeren, aber hardwarefreundlichen 2:4- und 4:8-halbstrukturierten sparsen Mustern erzwingen. Während diese Muster oft zusätzlichen Genauigkeitsverlust im Vergleich zu dichten Baselines mit sich bringen, insbesondere bei kleineren Modellen, können aus diesen sparsen Mustern direkte Rechenbeschleunigungen abgeleitet werden. Darüber hinaus kann die durch die Technik induzierte Sparsity gut mit zusätzlicher Kompression durch Quantisierung kombiniert werden.

LLM-Pruner

LLM-Pruner[13] ist eine strukturierte Pruning-Methode, die nicht wesentliche Kopplungsstrukturen basierend auf Gradienteninformationen selektiv entfernt, um die Sparsity zu maximieren, während der Großteil der Funktionalität des LLM erhalten bleibt. LLM-Pruner stellt die Leistung der pruning-Modelle mit LoRA in nur 3 Stunden und 50.000 Daten effizient wieder her.

LLM-Pruner ist das erste Framework, das speziell für das strukturierte Pruning von LLMs entwickelt wurde, mit den folgenden Vorteilen: (i) Aufgabenagnostische Komprimierung, bei der komprimierte Sprachmodelle ihre Fähigkeit als Multitask-Löser behalten. (ii) Reduzierter Bedarf an ursprünglichen Trainingskorpora, da die Komprimierung nur 50.000 öffentlich verfügbare Stichproben benötigt, was das Budget für die Beschaffung von Trainingsdaten erheblich reduziert. (iii) Schnelle Komprimierung, wobei der Komprimierungsprozess innerhalb von drei Stunden abgeschlossen ist. (iv) Automatisches strukturelles Pruning-Framework, bei dem alle strukturellen Abhängigkeiten ohne manuelles Design gruppiert werden.

Um die Wirksamkeit von LLM-Pruner zu bewerten, wurden umfangreiche Experimente mit drei großen Sprachmodellen durchgeführt: LLaMA-7B, Vicuna-7B und ChatGLM-6B. Komprimierte Modelle wurden mit neun Datensätzen bewertet, um die Generierungsqualität und die Zero-Shot-Klassifikationsleistung der pruning-Modelle zu beurteilen.

In der folgenden Tabelle führte das Pruning von LLaMA-7B um 20% mit LLM-Pruner und 2,59 Millionen Stichproben zu einem minimalen Rückgang der Modellleistung, aber einer bemerkenswerten Steigerung der Inferenzgeschwindigkeit um 18%.

Ergebnisse von LLM-Pruner mit 2,59M Stichproben

Wanda

Wanda[14], eine Pruning-Methode basierend auf Gewichten und Aktivierungen, ist ein neuartiger, einfacher und effektiver Ansatz zur Induktion von Sparsity in vortrainierten LLMs. Inspiriert von aktuellen Beobachtungen signifikanter Werteigenschaften in LLMs, pruning Wanda Gewichte, indem jeder Ausgang mit dem entsprechenden Eingangsaktivierungswert multipliziert und mit dem minimalen quantisierten Wert multipliziert wird. Bemerkenswerterweise erfordert Wanda kein erneutes Training oder Gewichtsaktualisierungen, und pruning LLMs können unverändert verwendet werden. Die Evaluierung von Wanda auf LLaMA und LLaMA-2 bestätigt seine Überlegenheit gegenüber etablierten Magnitude-Pruning-Baselines und zeigt sich wettbewerbsfähig im Vergleich zu neueren Methoden, die dichte Gewichtsaktualisierungen beinhalten.

Für den technischen Code siehe das Projekt: https://github.com/locuslab/wanda

WikiText-Perplexität von pruning LLaMA- und LLaMA-2-Modellen. Wanda schneidet im Vergleich zur bisher besten Methode SparseGPT wettbewerbsfähig ab, ohne dass eine Gewichtsaktualisierung erforderlich ist.

Wie in der obigen Abbildung zu sehen, zeigen Wanda und SparseGPT vergleichbare Leistungen beim Modell-Pruning.

Nachteile herkömmlicher Pruning-Methoden:

  • Hardware-Unterstützung: Die Erzielung einer Taktratenbeschleunigung durch nicht strukturierte Sparsity ist aufgrund bekannter Schwierigkeiten mit moderner Hardware eine Herausforderung. Beispielsweise haben neuere Entwicklungen wie SparseGPT 60% nicht strukturierte Sparsity durch Zero-Shot-Pruning erreicht, aber keine signifikanten Taktratenbeschleunigungseffekte erzielt.
  • Bereitstellungsherausforderungen: Die Erfüllung spezifischer Anforderungen durch Modell-Sparsity in Kontexten wie In-Context Learning stellt eine Herausforderung dar. Während viele Arbeiten die Wirksamkeit des aufgabenspezifischen Prunings gezeigt haben, steht die Aufrechterhaltung verschiedener Modelle für jede Aufgabe im Konflikt mit der Positionierung des LLM selbst und stellt Bereitstellungshindernisse dar.

Fazit:

Zusammenfassend bieten innovative Pruning-Methoden wie SparseGPT, LLM-Pruner und Wanda neue Perspektiven und technische Mittel für das Pruning großer Modelle bei gleichzeitiger Aufrechterhaltung hoher Leistung. Es sind jedoch noch weitere Forschung und Exploration erforderlich, um Herausforderungen bei der Hardware-Unterstützung und in praktischen Anwendungen zu bewältigen. Im nächsten Blogbeitrag werden wir den zweiten Teil erkunden: „Wie man die Inferenz mithilfe von Aktivierungs-Sparsity beschleunigt.“

Referenzpapier

[1]Deja Vu: Contextual Sparsity for Efficient LLMs at Inference Time

[4]The Hardware Lottery

[6]Rethinking the Role of Scale for In-Context Learning: An Interpretability-based Case Study at 66 Billion Scale

[12]SparseGPT: Massive Language Models Can Be Accurately Pruned in One-Shot

[13]LLM-Pruner: On the Structural Pruning of Large Language Models

[14]A Simple and Effective Pruning Approach for Large Language Models

[17]Learning both Weights and Connections for Efficient Neural Networks

novita.ai bietet die Stable Diffusion API und Hunderte von schnellen und günstigsten KI-Bildgenerierungs-APIs für 10.000 Modelle. 🎯 Schnellste Generierung in nur 2s, Pay-As-You-Go, minimal 0,0015 $ pro Standardbild, Sie können Ihre eigenen Modelle hinzufügen und GPU-Wartung vermeiden. Kostenlos zum Teilen von Open-Source-Erweiterungen.

Empfohlene Lektüre

  1. Quantisierungsmethoden für 100-fache Beschleunigung der Inferenz großer Sprachmodelle