Kann ein Sprachmodell mit 10 Milliarden Parametern nicht ausgeführt werden? Ein chinesischer Arzt vom MIT schlug die SmoothQuant-Quantifizierung vor, die den Speicherbedarf um die Hälfte reduzierte und die Geschwindigkeit um das 1,56-fache erhöhte!

WBOY
Freigeben: 2023-04-13 09:31:06
nach vorne
1638 Leute haben es durchsucht

Obwohl groß angelegte Sprachmodelle (LLM) eine starke Leistung aufweisen, kann die Anzahl der Parameter leicht Hunderte oder Hunderte von Milliarden erreichen, und der Bedarf an Computerausrüstung und Speicher ist so groß, dass sich normale Unternehmen dies nicht leisten können Es.

Quantisierung ist eine übliche Komprimierungsoperation, bei der die Genauigkeit von Modellgewichten (z. B. 32 Bit auf 8 Bit) reduziert wird, wodurch ein Teil der Leistung des Modells im Austausch für eine schnellere Inferenzgeschwindigkeit geopfert wird , weniger Speicherbedarf.

Aber bei LLMs mit mehr als 100 Milliarden Parametern können bestehende Komprimierungsmethoden weder die Genauigkeit des Modells aufrechterhalten noch können sie effizient auf Hardware laufen.

Kürzlich haben Forscher vom MIT und NVIDIA gemeinsam eine Allzweck-Post-Training-Quantisierungslösung (GPQ, General-Purpose Post-Training Quantization) SmoothQuant vorgeschlagen kann die Quantisierung mit 8-Bit-Gewichtung und 8-Bit-Aktivierung (W8A8) für große Sprachmodelle effizient implementieren und die Genauigkeit des Modells ohne Training aufrechterhalten.

Kann ein Sprachmodell mit 10 Milliarden Parametern nicht ausgeführt werden? Ein chinesischer Arzt vom MIT schlug die SmoothQuant-Quantifizierung vor, die den Speicherbedarf um die Hälfte reduzierte und die Geschwindigkeit um das 1,56-fache erhöhte!

Papierlink: https://arxiv.org/pdf/2211.10438.pdf#🎜 🎜#

Code-Link: https://github.com/mit-han-lab/smoothquant#🎜 🎜#

Da die Aktivierung schwieriger zu quantifizieren ist als die Gewichtung, migriert SmoothQuant die schwieriger zu quantifizierende Aktivierung durch mathematische Äquivalenttransformation in die Gewichtung und erreicht so eine reibungslose Verarbeitung von Aktivierungsausreißern.

SmoothQuant ist in der Lage, Gewichtungen und Aktivierungen auf INT8 in verschiedenen Schichten aller LLMs, einschließlich OPT-175B, BLOOM-176B und GLM-130B, zu quantisieren.

Im Vergleich zu vorhandenen Methoden, die nur Gewichte quantisieren oder Aktivierungen mit gemischter Präzision quantisieren, weist

SmoothQuant eine höhere Hardwareeffizienz und Implementierung auf. Mit einer 1,56-fachen Beschleunigung ist der Speicher Die Anforderungen betragen nur die Hälfte des ursprünglichen LLM und es gibt fast keinen Verlust an Genauigkeit .

Kann ein Sprachmodell mit 10 Milliarden Parametern nicht ausgeführt werden? Ein chinesischer Arzt vom MIT schlug die SmoothQuant-Quantifizierung vor, die den Speicherbedarf um die Hälfte reduzierte und die Geschwindigkeit um das 1,56-fache erhöhte!

SmoothQuant verfügt außerdem über ein hardwarefreundliches Design, um SmoothQuant in das LLM-Service-Framework FasterTransformer zu implementieren Im Vergleich zur FP16-Genauigkeit ist die Inferenzgeschwindigkeit höher, es ist nur die Hälfte der GPUs erforderlich. Absolvent der School of Computer Science and Technology der Tsinghua-Universität.

Dozent Song Han ist außerordentlicher Professor am MIT EECS. Sein Hauptforschungsschwerpunkt ist effizientes Deep Learning Technologie, die die Größe neuronaler Netze um eine Größenordnung reduzieren kann, ohne an Genauigkeit zu verlieren.

SmoothQuant

Quantisierung besteht darin, hochpräzise Werte diskreten Werten mit geringerer Präzision zuzuordnen, was in diesem Artikel untersucht wird Der Schwerpunkt lag hauptsächlich auf einer effizienteren ganzzahligen einheitlichen Quantisierung für Hardware, insbesondere INT8. Quantisierungsoperationen können mit unterschiedlicher Granularität durchgeführt werden, z. B. die Quantisierung pro Tensor wird auf die gesamte Gewichtsmatrix angewendet, die Quantisierung pro Token wird auf jeden Token bei der Aktivierung angewendet und die Quantisierung pro Kanal wird auf jeden Ausgabekanal der Gewichtung angewendet.

Kann ein Sprachmodell mit 10 Milliarden Parametern nicht ausgeführt werden? Ein chinesischer Arzt vom MIT schlug die SmoothQuant-Quantifizierung vor, die den Speicherbedarf um die Hälfte reduzierte und die Geschwindigkeit um das 1,56-fache erhöhte!Durch Beobachtung der quantitativen Ergebnisse der Aktivierung erforschen Sie die Die Mitarbeiter fassten mehrere Muster zusammen:

1. Quantifizierung ist schwieriger zu quantifizieren als Gewicht. Kann ein Sprachmodell mit 10 Milliarden Parametern nicht ausgeführt werden? Ein chinesischer Arzt vom MIT schlug die SmoothQuant-Quantifizierung vor, die den Speicherbedarf um die Hälfte reduzierte und die Geschwindigkeit um das 1,56-fache erhöhte!


Die Gewichtsverteilung ist relativ gleichmäßiger und flacher. Frühere Forschungsergebnisse haben gezeigt, dass die Reduzierung des Gewichts großer Sprachmodelle auf INT8 oder sogar INT4 kaum Auswirkungen auf die Genauigkeit hat.

2 Ausreißer sind die Hauptschwierigkeit bei der Aktivierungsquantifizierung.

Ausreißer bei Aktivierungen sind normalerweise etwa 100-mal höher als normale Werte, was dazu führt, dass die Quantisierungsbits im Ausreißerkanal/-pegel sehr hoch sind ineffizient.

Kann ein Sprachmodell mit 10 Milliarden Parametern nicht ausgeführt werden? Ein chinesischer Arzt vom MIT schlug die SmoothQuant-Quantifizierung vor, die den Speicherbedarf um die Hälfte reduzierte und die Geschwindigkeit um das 1,56-fache erhöhte!

3. Es wird behoben, dass abnormale Werte in einem bestimmten Kanal angezeigt werden .

Ausreißer treten nur in einem kleinen Teil der Kanäle auf, aber wenn es einen Ausreißer in einem Kanal gibt, können diese Ausreißer in diesem erscheinen alle Token.

Kann ein Sprachmodell mit 10 Milliarden Parametern nicht ausgeführt werden? Ein chinesischer Arzt vom MIT schlug die SmoothQuant-Quantifizierung vor, die den Speicherbedarf um die Hälfte reduzierte und die Geschwindigkeit um das 1,56-fache erhöhte!

Die Varianz aller Kanäle in einem bestimmten Token wird groß sein (einige Kanäle werden sehr groß sein, aber die meisten klein), aber die Varianz eines gegebenen Kanals über alle Token-Grade wird klein sein (Ausreißerkanäle werden groß sein).

Da Ausreißer die Eigenschaften eines kontinuierlichen Auftretens und einer geringen Varianz innerhalb jedes Kanals aufweisen, ist der Quantisierungsfehler viel kleiner als pro Kanal, wenn bei Aktivierungen eine Quantisierung pro Kanal durchgeführt wird -Tensorquantisierung.

Durch ein einfaches Experiment bestätigten die Ergebnisse erneut die Idee des Forschers. Bei Quantisierung auf INT8 ist die Genauigkeit pro Kanal viel höher als pro Tensor und pro-. Bei der Token-Quantifizierung entspricht die Genauigkeit nahezu der FP16-Basislinie. Die Forscher glätteten die Eingangsaktivierung mithilfe eines Glättungsfaktors s pro Kanal. Um die mathematische Äquivalenz linearer Schichten aufrechtzuerhalten, müssen die Gewichte auch umgekehrt skaliert werden.

Kann ein Sprachmodell mit 10 Milliarden Parametern nicht ausgeführt werden? Ein chinesischer Arzt vom MIT schlug die SmoothQuant-Quantifizierung vor, die den Speicherbedarf um die Hälfte reduzierte und die Geschwindigkeit um das 1,56-fache erhöhte!

Da die Eingabe X normalerweise durch vorherige lineare Operationen (wie lineare Ebenen, Ebenennormen usw.) generiert wird. ), Daher kann der Glättungsfaktor problemlos offline in die Parameter der vorherigen Schicht integriert werden, ohne dass der Kernel-Aufruf-Overhead durch zusätzliche Skalierung entsteht. In anderen Fällen, beispielsweise wenn die Eingabe von der Residual-Addition stammt, kann dem Residual-Zweig eine zusätzliche Skalierung hinzugefügt werden.

Kann ein Sprachmodell mit 10 Milliarden Parametern nicht ausgeführt werden? Ein chinesischer Arzt vom MIT schlug die SmoothQuant-Quantifizierung vor, die den Speicherbedarf um die Hälfte reduzierte und die Geschwindigkeit um das 1,56-fache erhöhte!Verschiebung der Quantifizierungsschwierigkeit von Aktivierung auf Gewicht

​Smooths Ziel ist es, pro Kanal einen The auszuwählen Der Glättungsfaktor s erleichtert die Quantifizierung dieser Umkehroperation.

Um den Quantisierungsfehler zu reduzieren, sollten die effektiven Quantisierungsbits aller Kanäle erhöht werden. Wenn die maximale Größe aller Kanäle gleich ist, ist die Gesamtzahl der effektiven Quantisierungsbits am größten.

Daher ist einer der direktesten Glättungsfaktoren der Maximalwert jedes Kanals in der Eingabe, wodurch sichergestellt werden kann, dass nach der Teilung alle Aktivierungskanäle den gleichen Maximalwert haben, wodurch eine einfachere Quantifizierung erreicht wird.

Es ist jedoch zu beachten, dass der Aktivierungsbereich dynamisch und für verschiedene Eingabebeispiele unterschiedlich ist. Daher verwendeten die Forscher Kalibrierungsproben aus dem Datensatz vor dem Training, um die Größe der Aktivierungskanäle abzuschätzen.

Da diese Formel alle Quantifizierungsschwierigkeiten auf die Gewichte überträgt, kann festgestellt werden, dass in diesem Fall der Quantisierungsfehler der Gewichte groß ist, was zu einer starken Verringerung der Genauigkeit führt.

Andererseits können Sie auch alle Quantisierungsschwierigkeiten von Gewichten auf Aktivierungen verschieben, indem Sie sj = 1/ max(|Wj |) wählen. . Ebenso ist die Modellleistung aufgrund übermäßiger Aktivierungsquantisierungsfehler schlecht. Daher muss die Quantifizierungsschwierigkeit zwischen Gewichtungen und Aktivierungen aufgeteilt werden, damit beide leicht zu quantifizieren sind.

Die Forscher führten einen Hyperparameter der Übertragungsstärke α ein, um die Schwierigkeit der Übertragung von Aktivierungen auf Gewichte zu steuern.

Kann ein Sprachmodell mit 10 Milliarden Parametern nicht ausgeführt werden? Ein chinesischer Arzt vom MIT schlug die SmoothQuant-Quantifizierung vor, die den Speicherbedarf um die Hälfte reduzierte und die Geschwindigkeit um das 1,56-fache erhöhte!

Es kann festgestellt werden, dass für die meisten Modelle, wie z. B. OPT- und BLOOM-Modelle, α = 0,5 ein guter Gleichgewichtspunkt ist, der die Quantisierungsschwierigkeit gleichmäßig verteilen kann, insbesondere bei Verwendung desselben Quantisierers für Gewichte und Aktivierungen.

Diese Formel garantiert, dass die Gewichte und Aktivierungen entsprechender Kanäle ähnliche Maximalwerte haben und somit die gleiche Quantisierungsschwierigkeit aufweisen.

Kann ein Sprachmodell mit 10 Milliarden Parametern nicht ausgeführt werden? Ein chinesischer Arzt vom MIT schlug die SmoothQuant-Quantifizierung vor, die den Speicherbedarf um die Hälfte reduzierte und die Geschwindigkeit um das 1,56-fache erhöhte!

Für einige andere Modelle mit relativ großen Aktivierungsausreißern, wie z. B. GLM-130B mit 30 % Ausreißern, was für die Aktivierungsquantifizierung schwieriger ist, können Sie einen größeren α (z. B. 0,75) wählen, der viel größer ist der Quantifizierungsschwierigkeit wird auf Gewichte übertragen.

SmoothQuant wird auf den Transformer-Block angewendet.

Die lineare Ebene übernimmt die meisten Parameter und Berechnungen des LLM-Modells. Standardmäßig skaliert SmoothQuant die Eingabeaktivierungen aller linearen Schichten im Transformer und quantisiert die linearen Schichten mit W8A8, was die Quantisierung des BMM-Operators in der Aufmerksamkeitsberechnung ermöglicht.

Kann ein Sprachmodell mit 10 Milliarden Parametern nicht ausgeführt werden? Ein chinesischer Arzt vom MIT schlug die SmoothQuant-Quantifizierung vor, die den Speicherbedarf um die Hälfte reduzierte und die Geschwindigkeit um das 1,56-fache erhöhte!

In diesem Prozess wird INT8 zunächst verwendet, um die Eingaben und Gewichte rechenintensiver Operatoren wie BMM in der linearen Schicht und der Aufmerksamkeitsschicht zu quantifizieren, während die Operationen anderer leichter Elemente wie Softmax und LayerNorm beibehalten werden Durch Aktivierung wie FP16 trägt ein solches Design dazu bei, Genauigkeit und Inferenzeffizienz in Einklang zu bringen.

Experimenteller Teil

Die Forscher wählten drei große Sprachmodelle zur Evaluierung von SmoothQuant aus, darunter OPT, BLOOM und GLM-130B; und verwendeten sieben Zero-Shot-Aufgaben, darunter LAMBADA, HellaSwag, PIQA, WinoGrande, OpenBookQA, RTE, COPA et al.

Experimentelle Ergebnisse zeigen, dass SmoothQuant das Quantisierungsproblem sehr großer LLMs bewältigen kann, deren Aktivierungen schwieriger zu quantifizieren sind.

Kann ein Sprachmodell mit 10 Milliarden Parametern nicht ausgeführt werden? Ein chinesischer Arzt vom MIT schlug die SmoothQuant-Quantifizierung vor, die den Speicherbedarf um die Hälfte reduzierte und die Geschwindigkeit um das 1,56-fache erhöhte!

SmoothQuant kann bei allen Auswertungsdatensätzen mit der Genauigkeit von FP16 mithalten, während die Basislinien W8A8, ZeroQuant und Outlier Suppression nahezu zufällige Ergebnisse liefern.

Kann ein Sprachmodell mit 10 Milliarden Parametern nicht ausgeführt werden? Ein chinesischer Arzt vom MIT schlug die SmoothQuant-Quantifizierung vor, die den Speicherbedarf um die Hälfte reduzierte und die Geschwindigkeit um das 1,56-fache erhöhte!

Und SmoothQuant kann alle offenen LLMs mit mehr als 100B Parametern verlustfrei quantisieren.

Die O1- und O2-Stufen von SmoothQuant behalten erfolgreich die Gleitkommagenauigkeit bei, während die O3-Stufe (statisch pro Tensor) die durchschnittliche Genauigkeit möglicherweise um 0,8 % reduziert zum Unterschied zwischen statisch erfassten Statistiken und Aktivierungsstatistiken für reale Auswertungsstichproben.

Trotzdem kann SmoothQuant-O1 mit der Genauigkeit von FP16 mithalten, während SmoothQuant-O3 die Genauigkeit nur um 1 % reduziert, was deutlich besser ist als die Basislinie.

SmoothQuant ist nicht nur für sehr große LLMs mit über 100B-Parametern effektiv, sondern liefert auch stabile Ergebnisse für kleinere LLMs. SmoothQuant kann auf allen Skalen von OPT-Modellen funktionieren und erreicht die FP16-Genauigkeit der INT8-Quantisierung.

Kann ein Sprachmodell mit 10 Milliarden Parametern nicht ausgeführt werden? Ein chinesischer Arzt vom MIT schlug die SmoothQuant-Quantifizierung vor, die den Speicherbedarf um die Hälfte reduzierte und die Geschwindigkeit um das 1,56-fache erhöhte!

Um die Geschwindigkeitsverbesserungen und Speichereinsparungen durch die Integration von SmoothQuant-O3 in PyTorch und FasterTransformer zu demonstrieren, haben wir die End-to-End-Latenz beim Generieren aller versteckten Zustände für einen Stapel von jeweils 4 Sätzen gemessen, auch bekannt als die Kontextlatenz und zeichnete die maximale GPU-Speichernutzung während dieses Prozesses auf.

Da Huggingface die Modellparallelität nicht unterstützt, haben die Forscher die Leistung der PyTorch-Implementierung von SmoothQuant nur auf einer einzelnen GPU gemessen und daher OPT-6.7B, OPT-13B und OPT-30B zur Bewertung ausgewählt.

In der FasterTransformer-Bibliothek kann SmoothQuant nahtlos mit dem Tensor-Parallelismus-Algorithmus verbunden werden, sodass die Forscher die Single-GPU- und Multi-GPU-Benchmarks von SmoothQuant auf OPT-13B, OPT-30B, OPT-66B und OPT-175B getestet haben.

Experimentelle Ergebnisse, die auf dem NVIDIA A100 80-GB-GPU-Server durchgeführt wurden, zeigen, dass SmoothQuant in Bezug auf Inferenzlatenz und Spitzenspeichernutzung basierend auf der PyTorch-Implementierung immer schneller ist als die FP16-Basislinie. Wenn die Sequenzlänge 256 beträgt, erreicht es auf OPT-30B das 1,51-fache Geschwindigkeitserhöhung.

Kann ein Sprachmodell mit 10 Milliarden Parametern nicht ausgeführt werden? Ein chinesischer Arzt vom MIT schlug die SmoothQuant-Quantifizierung vor, die den Speicherbedarf um die Hälfte reduzierte und die Geschwindigkeit um das 1,56-fache erhöhte!

Sie können auch einen Trend erkennen, dass die Beschleunigung umso offensichtlicher ist, je größer das Modell ist, aber LLM.int8() ist fast immer langsamer als die FP16-Basislinie, was auch auf den enormen Overhead gemischter Modelle zurückzuführen ist. Präzisionsaktivierungsdarstellung.

In Bezug auf den Speicher können sowohl SmoothQuant als auch LLM.int8() die Speichernutzung des FP16-Modells fast halbieren, während SmoothQuant etwas mehr Speicher spart, da es vollständig INT8 GEMM nutzt.

Kann ein Sprachmodell mit 10 Milliarden Parametern nicht ausgeführt werden? Ein chinesischer Arzt vom MIT schlug die SmoothQuant-Quantifizierung vor, die den Speicherbedarf um die Hälfte reduzierte und die Geschwindigkeit um das 1,56-fache erhöhte!

Im Vergleich zur FP16-Implementierung von OPT durch FasterTransformer kann SmoothQuant-O3 die Ausführung von OPT-13B und OPT-30B bei Verwendung einer einzelnen GPU-Latenzzeit weiter reduzieren , bis zu 1,56x.


Das obige ist der detaillierte Inhalt vonKann ein Sprachmodell mit 10 Milliarden Parametern nicht ausgeführt werden? Ein chinesischer Arzt vom MIT schlug die SmoothQuant-Quantifizierung vor, die den Speicherbedarf um die Hälfte reduzierte und die Geschwindigkeit um das 1,56-fache erhöhte!. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:51cto.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage