Heim >Technologie-Peripheriegeräte >KI >Neue auf Neuordnung basierende Quantisierungsmethode RPTQ: Erreichen einer 3-Bit-Quantisierung für große Sprachmodelle
Große Sprachmodelle (LLMs) leisten bei einer Vielzahl von Aufgaben gute Dienste, stellen jedoch aufgrund ihrer schieren Modellgröße Herausforderungen bei der Bereitstellung dar.
In diesem Artikel stellten Forscher von Houmo Intelligence, Tencent AI Lab, der Huazhong University of Science and Technology, der Peking University und dem Illinois Institute of Technology fest, dass die größte Herausforderung bei der Quantifizierung großer Sprachmodelle in den unterschiedlichen Aktivierungsbereichen zwischen den Kanälen liegt , Und nicht nur ein Ausreißerproblem.
Der Autor schlägt eine neuartige Reranking-basierte Quantisierungsmethode RPTQ vor, die das Problem der Quantifizierung großer Sprachmodellaktivierungen löst. RPTQ reduziert die Auswirkungen kanalweiter Unterschiede, indem es die Kanäle bei der Aktivierung neu anordnet und sie dann zur Quantifizierung gruppiert.
Darüber hinaus reduzieren die Autoren den Speicher- und Rechenaufwand, indem sie eine explizite Neuordnung vermeiden. Diese Arbeit ist die erste, die die Aktivierungsquantisierung von LLM-Modellen auf 3 Bits vorantreibt. Die 3-Bit-Quantisierung von Aktivierungswerten kann auch zusammen mit der 3-Bit-Quantisierung von Gewichten verwendet werden, wodurch der Overhead großer Sprachmodelle erheblich reduziert wird.
Papieradresse: https://arxiv.org/abs/2304.01089
Open-Source-Adresse: https://github.com/hahnyuan/RPTQ4LLM
Big Scale Language Models (LLMs) haben bei einer Vielzahl von Aufgaben eine hervorragende Leistung gezeigt, ihre Bereitstellung ist jedoch aufgrund ihrer enormen Modellgröße mit Herausforderungen verbunden. Ein 66B-Modell enthält beispielsweise 66 Milliarden Parameter und erfordert viel Speicher zum Speichern. Darüber hinaus wird das Problem des Speicherverbrauchs mit zunehmender Sequenzlänge und Stapelgröße schwerwiegender, da bei der Aktivierung auch viel Speicher verbraucht wird, z. B. der Schlüssel- und Wertcache (Schlüssel-/Wertcache) in der Selbstaufmerksamkeit. Allerdings verfügt eine einzelne GPU oder ein einzelner Server nicht über genügend Speicherkapazität, um eine so große Anzahl an Modellgewichten und Zwischenaktivierungen zu speichern. Daher muss LLM in mehrere Blöcke aufgeteilt und auf verschiedenen Geräten gespeichert werden. Da Gewichte und Aktivierungen auf verschiedenen Geräten gespeichert werden, müssen während der Berechnung Daten zwischen diesen Geräten übertragen werden, was zu einem erheblichen Bandbreiten- und Energieverbrauch führt.
Um die Modellskalierungsherausforderungen von LLMs zu bewältigen, hat sich die Modellquantifizierung als vielversprechender Ansatz herausgestellt. Diese Technik beinhaltet die Quantisierung der Gewichte und Aktivierungen von LLMs mithilfe von Ganzzahlen mit niedrigem Bit, wodurch die Kosten für die Speicherung und Ausführung dieser Modelle erheblich gesenkt werden. Insbesondere trägt die Quantisierung dazu bei, den Speicherbedarf für die Speicherung von Tensoren zu reduzieren und rechenintensive Operationen wie Matrixmultiplikationen und lineare Schichten zu beschleunigen. Durch die Quantisierung von Gewichten und Aktivierungen wird der Speicher- und Kommunikationsaufwand reduziert und die Effizienz und Inferenzgeschwindigkeit verbessert.
Abbildung 1 Numerische Verteilung verschiedener Kanäle. Jeder Punkt repräsentiert einen (maximalen, minimalen) Wert in einem Aktivierungskanal.
Kürzlich hat GPTQ die Gewichte von LLMs mithilfe von PTQ erfolgreich in 4 Bit oder 3 Bit quantifiziert. Die Quantifizierung der Aktivierung in LLMs bleibt jedoch eine herausfordernde Aufgabe.
Aus Abbildung 1 lassen sich zwei Beobachtungen machen:
1) Einige Kanäle weisen signifikante Ausreißer auf, deren Maximal- oder Minimalwerte hundertmal größer sind als bei anderen Kanälen. Frühere Studien haben dieses Problem ebenfalls entdeckt und spezielle Behandlungen für Ausreißer vorgeschlagen.
2) Verschiedene Kanäle weisen erhebliche Unterschiede in den Zahlenbereichen auf. Die Verwendung derselben Quantisierungsparameter zur Quantisierung verschiedener Kanäle kann zu erheblichen Quantisierungsfehlern führen. Selbst wenn zwei Kanäle den gleichen absoluten Wert an Ausreißern haben, können sie große Unterschiede im numerischen Bereich aufweisen.
Pro-Tensor-Quantisierungstechniken, die den gesamten Tensor unter Verwendung derselben Quantisierungsparameter quantisieren, sind möglicherweise weniger effizient. Der Grund dafür ist, dass die Einstellung des Quantisierungsbereichs zur Abdeckung eines großen Wertebereichs zu großen Quantisierungsfehlern für Kanäle mit kleineren Werten führen kann, während die Einstellung zur Abdeckung eines kleinen Wertebereichs zu einer erheblichen Kürzung von Ausreißern führen kann in Signifikanter Quantisierungsfehler. Beispielsweise könnte ein Kanal einen Wertebereich von -100 bis -50 haben, während ein anderer Kanal einen Wertebereich von 80 bis 100 haben könnte. Der Versuch, ihren Bereich durch Quantisierung im Bereich von -100 bis 100 abzudecken, führt zu erheblichen Quantisierungsfehlern für beide Kanäle. Dies ist eine Herausforderung, die in der bisherigen Forschung nicht wirksam angegangen wurde. Abbildung 2 Vergleich verschiedener Methoden zur Lösung des Aktivierungsquantisierungsproblems.
Um das Problem der Kanalunterschiede bei Aktivierungen zu lösen, schlägt der Autor eine neuartige, auf Neuordnung basierende Post-Training-Quantisierungsmethode RPTQ vor.
Wie in Abbildung 2 gezeigt, gruppiert diese Methode Kanäle mit ähnlichen numerischen Bereichen und verwendet dann die gleichen Quantisierungsparameter für die Werte in jedem Cluster. Um die auf Reranking basierende Quantifizierungsmethode zu implementieren, verwendeten die Autoren zunächst einen Kalibrierungsdatensatz als Inferenzeingabe, aus dem die Maximal- und Minimalwerte jedes Aktivierungskanals abgeleitet wurden.
Als nächstes verwendeten sie den KMeans-Algorithmus, um verschiedene Kanäle basierend auf den durch die Maximal- und Minimalwerte jedes Kanals gebildeten Punkten in g-Cluster zu unterteilen. Sobald Cluster eingerichtet sind, führen sie eine Neuordnung der Kanäle durch, um Kanäle aus demselben Cluster in unmittelbarer Nähe zu platzieren. Auf diese Weise werden Kanäle mit ähnlichen Maxima und Minima gruppiert und verfügen über einen gemeinsamen Satz von Quantisierungsparametern. Nach dem Neuordnungsprozess quantifizierten die Autoren die Aktivierung innerhalb jedes Clusters. Diese Methode berechnet die Quantisierungsparameter (Skalierungsfaktor s und Nullpunkt z) separat für jeden Cluster und stellt so sicher, dass diese Parameter spezifisch für den entsprechenden Kanal sind.Letztendlich stellt diese Methode sicher, dass die Quantisierung jedes Clusters optimiert wird, wodurch Quantisierungsfehler reduziert werden.
Abbildung 3: Eine Neuanordnung von Gewichten und Aktivierungen. Fehler Diagramm des Inferenzprozesses der quantisierten Transformer-Schicht. Umlagerungsindizes werden durch die Symbole R1 bis R5 dargestellt.
Explizite Neuanordnung ist eine Laufzeitoperation, die Kanäle in einer Aktivierung neu anordnet und erfordert, dass Daten von verschiedenen Kanälen physisch von einem Speicherort an einen anderen Ort verschoben werden, z Bei großen Modellen mit einer großen Anzahl an Kanälen kann die Neuanordnung sehr zeitaufwändig sein. Darüber hinaus erhöht das Speichern von Quell- und Zielaktivierungstensoren den Speicheraufwand. Daher schlagen die Autoren Strategien vor, um eine explizite Neuordnung zu vermeiden, wodurch der Rechenaufwand verringert und die Inferenzeffizienz verbessert wird.
Wie in Abbildung 3 gezeigt, ordnet der Autor die Gewichte der linearen Schichten neu, sodass sie direkt Aktivierungen in der sortierten Reihenfolge erzeugen können. Darüber hinaus haben die Autoren die Methode von LayerNorm geändert, um neu angeordnete Aktivierungen direkt zu erzeugen, wodurch die Notwendigkeit expliziter Kanalanpassungen während der Inferenz entfällt. Der Autor bewertete OPT unter drei verschiedenen Bitbreiten-Konfigurationen: W4A16, W4A8 und W4A4. Darüber hinaus hat der Autor auch ein neues Quantifizierungsschema entwickelt, W4A4KV, W4A3KV und W3A3KV, das nur den Hauptspeicherverbrauch quantifiziert – Schlüssel-Cache und Werte-Cache (Schlüssel/Wert-Cache). Basierend auf der Tabelle können die folgenden Beobachtungen gemacht werden: Im Allgemeinen nimmt die Leistung des Modells ab, wenn die Bitbreite der Aktivierungsquantisierung abnimmt. In den meisten Fällen ist diese Verschlechterung jedoch nicht signifikant. Bei einigen Aufgaben sank die Leistung um weniger als 1 % oder verbesserte sich sogar.
Der Speicheraufwand von LLM ergibt sich aus drei Aspekten: Erstens kann die Speicherung von Gewichten im Gerätespeicher durch Quantisierung erheblich reduziert werden. Zweitens erfordern temporäre Aktivierungen, die während der Netzwerkausführung generiert werden, die Zuweisung von Gerätespeicher. Diese temporären Aktivierungen können nach der Verwendung freigegeben werden und haben daher keinen wesentlichen Einfluss auf die Gesamtspeichernutzung. Schließlich ist der Schlüssel/Wert-Cache erforderlich, um nachfolgende Wörter vorherzusagen. Wenn die Stapelgröße und die Sequenzlänge groß sind, nimmt der Schlüssel- und Wertecache den größten Teil des Speichers ein.
Die Tabelle zeigt die Speichernutzung unter verschiedenen Einstellungen. Es kann festgestellt werden, dass eine niedrigere Bitaktivierung die Speichernutzung erheblich reduzieren kann, insbesondere bei der Stapelgröße und -sequenz ist größer. Insbesondere wenn die Stapelgröße 64 und die Sequenzlänge 8192 beträgt, spart die W4A4-Konfiguration unter OPT-66b im Vergleich zur W4A16-Konfiguration mehr als 900 GB Speicher. Daher kann der Einsatz von RPTQ zur Quantifizierung von Aktivierungen die Speicherbelastung bei Langtextaufgaben oder Szenarios mit hohem Volumen erheblich reduzieren.
Das obige ist der detaillierte Inhalt vonNeue auf Neuordnung basierende Quantisierungsmethode RPTQ: Erreichen einer 3-Bit-Quantisierung für große Sprachmodelle. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!