KI-Modelle und Plattformen

UltraFastBERT: Eine Einführung in exponentiell schnellere Sprachmodellierung

mm
Unite.AI zu deinen bevorzugten Quellen auf Google hinzufügen

Sprachmodelle und generative KI, bekannt für ihre Fähigkeiten, sind ein heißes Thema in der KI-Industrie. Globale Forscher verbessern ihre Wirksamkeit und Fähigkeit. Diese Systeme, typischerweise tiefere Lernmodelle, werden auf umfangreichen gelabelten Daten vorab trainiert und nutzen neuronale Netze für Selbstaufmerksamkeit. Sie verwenden verschiedene Schichten – Feedforward-, rekurrente, eingebettete und Aufmerksamkeitsschichten – um Eingabetext zu verarbeiten und relevante Ausgaben zu erzeugen.

Die Feedforward-Schichten in großen Sprachmodellen enthalten in der Regel die meisten Parameter. Studien zeigen, dass diese Modelle nur einen Bruchteil der verfügbaren Neuronen für die Ausgabeberechnung während der Inferenz verwenden.

Dieser Artikel stellt UltraFastBERT vor, ein BERT-basiertes Framework, das die Wirksamkeit führender BERT-Modelle erreicht, aber nur 0,3% der Neuronen während der Inferenz verwendet, insbesondere 12 von 4095 Neuronen in jeder Schicht. Wir werden die Architektur, Funktionalität und Ergebnisse von UltraFastBERT erkunden. Lassen Sie uns beginnen.

UltraFastBERT: Eine Einführung in exponentiell schnellere Sprachmodellierung

Traditionell verwendet ein Sprachmodell verschiedene Komponenten, um sich mit der Generierung von Inhalten auszustatten, einschließlich Feedforward-Schichten, rekurrenten Schichten, eingebetteten Schichten und Aufmerksamkeitsschichten. Diese Komponenten sind für das Lernen von Mustern während des Trainings verantwortlich und generieren letztendlich genaue Ausgaben auf der Grundlage der Eingabetexte. Jede dieser Komponenten hat einige Parameter, und in Sprachmodellen wird der Großteil dieser Parameter von den Feedforward-Schichten gehalten. Allerdings nutzen diese Feedforward-Schichten nicht 100% der verfügbaren Neuronen, um für jeden Eingabeausgaben zu generieren, was zu einer Verschwendung von Ressourcen führt, die die Komplexität, die Rechenzeit und die Rechenkosten erhöht.

Im Kern ist das UltraFastBERT-Framework eine Variante des BERT-Frameworks, das auf diesem Konzept aufbaut und die Feedforward-Schichten durch schnellere Feedforward-Netzwerke in seiner Architektur ersetzt, was letztendlich dazu führt, dass das UltraFastBERT-Framework nur 0,3% der verfügbaren Neuronen nutzt, während es Ergebnisse liefert, die mit BERT-Modellen vergleichbar sind, insbesondere bei Downstream-Aufgaben. Aufgrund seiner Designumsetzungen sind die Zwischenschichten im UltraFastBERT-Framework exponentiell schneller.

Gegeben sei ein schnelles Feedforward-Netzwerk (FFF) und ein Feedforward-Netzwerk (FF), jedes mit n Neuronen, die Zeitkomplexität eines Vorwärtsdurchlaufs in einem Feedforward-Netzwerk ist O(n), während die Zeitkomplexität O(log2n) für ein schnelles Feedforward-Netzwerk beträgt, und der Unterschied in der Zeitkomplexität liegt hauptsächlich darin, dass in einem schnellen Feedforward-Netzwerk die Neuronen in einem balancierten binären Baum organisiert sind und wenn der Eingabe bereitgestellt wird, das Netzwerk nur einen Ast des Baums bedingt ausführt. Darüber hinaus führt die Durchführung von Interferenzen in einem schnellen Feedforward-Netzwerk zu CMM oder bedingter Matrixmultiplikation, bei der die Eingabereihen mit den natürlichen Gewichtsspalten individuell punktieren und die Ausgabe der vorherigen Punktoperation bestimmt das Gewicht der Spalten, die zum Fortfahren verwendet werden. Folglich verwendet das Netzwerk alle Neuronen nur für einige Eingaben, und keine Eingabe erfordert mehr als einige Neuronen, um vom Netzwerk bearbeitet zu werden. Die CMM-Punktoperation kontrastiert die DMM oder dichte Matrixmultiplikation, die das Punktprodukt aller Eingaben mit allen Gewichtsspalten berechnet.

Zusammenfassend ist UltraFastBERT ein BERT-basiertes Framework, das Ergebnisse liefert, die mit den führenden BERT-Sprachmodellen vergleichbar sind, indem es

  1. nur 0,3% der verfügbaren Neuronen während der Interferenzphase nutzt und nur 12 Neuronen von insgesamt 4095 Neuronen für jede Interferenzschicht einsetzt.
  2. eine starke Leistung erbringt, die mit der von BERT-Modellen vergleichbar ist, indem es Feinabstimmungsstrategien auf Downstream-Aufgaben umsetzt.
  3. eine native Implementierung der CMM oder bedingten Matrixmultiplikation bietet, die die Grundlage für das schnelle Feedforward-Netzwerk bildet und letztendlich zu einer 78-fachen Geschwindigkeitssteigerung bei der Leistung im Vergleich zu nativ optimierter DMM oder dichter Matrixmultiplikation führt.

Feedforward-Neuronale Netze

Ein Feedforward-Neuronales Netz ist eines der einfachsten künstlichen neuronalen Netze, das die Informationen nur in die Vorwärtsrichtung bewegt, von den Eingabeknoten zu den Ausgabeknoten über versteckte Knoten. Einer der Hauptvorteile eines Feedforward-Neuronalen Netzes ist, dass es keine Schleifen oder Zyklen enthält und einfacher zu konstruieren ist als RNN oder rekurrente Neuronale Netze und CNN oder konventionelle Neuronale Netze. Die Architektur eines Feedforward-Neuronalen Netzes besteht aus drei Komponenten, nämlich Eingabeschichten, versteckten Schichten und Ausgabeschichten, und jede Schicht besteht aus Einheiten, die als Neuronen bezeichnet werden, und jede Schicht ist mit den anderen über Gewichte verbunden.

Die Neuronen in den Eingabeschichten erhalten Eingaben und leiten sie an die nächste Schicht weiter. Die Anzahl der Neuronen in jeder Eingabeschicht wird durch die Dimension der Eingabedaten bestimmt. Als nächstes haben wir die versteckten Schichten, die weder der Eingabe noch der Ausgabe ausgesetzt sind und für die notwendigen Berechnungen verantwortlich sind. Die Neuronen in jeder versteckten Schicht nehmen die gewichtete Summe der Ausgaben der vorherigen Schicht, wenden eine Aktivierungsfunktion an und übergeben das Ergebnis an die nächste Schicht, und der Prozess wiederholt sich. Schließlich haben wir die Ausgabeschicht, die die Ausgabe für die gegebenen Eingaben erzeugt. Jedes Neuron in jeder Schicht eines Feedforward-Netzes ist mit jedem Neuron in der nächsten Schicht verbunden, wodurch Feedforward-Neuronale Netze ein vollständig verbundenes Netzwerk bilden. Gewichte werden verwendet, um die Stärke der Verbindung zwischen den Neuronen darzustellen, und das Netzwerk aktualisiert diese Gewichte, um Muster zu lernen, indem es die Gewichte auf der Grundlage des Fehlers in der Ausgabe aktualisiert.

Wenn wir weitermachen, gibt es zwei wichtige Phasen in der Funktionsweise eines Feedforward-Neuronalen Netzes: die Feedforward-Phase und die Backpropagation-Phase.

Feedforward-Phase

In der Feedforward-Phase wird der Eingabe an das Netzwerk bereitgestellt, und es bewegt sich dann vorwärts. Die versteckten Schichten berechnen die gewichtete Summe der Eingaben, führen Nichtlinearität in das Modell ein, indem sie die Summe der Eingaben durch eine Aktivierungsfunktion wie ReLu, Sigmoid und TanH leiten. Der Prozess wiederholt sich, bis die Gewichte die Ausgabeschicht erreichen und das Modell eine Vorhersage trifft.

Backpropagation-Phase

Sobald das Modell eine Vorhersage trifft, berechnet es den Fehler zwischen der erzeugten Ausgabe und der erwarteten Ausgabe. Der Fehler wird dann zurück durch das Netzwerk propagiert, und das Netzwerk verwendet einen Gradientenabstiegs-Optimierungsalgorithmus, um die Gewichte anzupassen, um den Fehler zu minimieren.

UltraFastBERT: Modellarchitektur und Funktionsweise

Das UltraFastBERT-Framework basiert auf der crammedBERT-Architektur, und das UltraFastBERT-Framework verwendet alle Komponenten des crammedBERT-Frameworks, außer der Art der Zwischenschichten. Stattdessen ersetzt das UltraFastBERT-Framework den Transformer-Encoder in den Feedforward-Netzwerken in den Zwischenschichten des crammedBERT-Frameworks durch schnelle Feedforward-Netzwerke. Das UltraFastBERT-Framework führt die folgenden Änderungen an den ursprünglichen Feedforward-Netzwerken durch.

  1. Das Framework entfernt den Unterschied zwischen Blatt- und Nicht-Blattknoten, indem es die GeLu-Aktivierungsfunktion über Knoten hinweg verwendet und diese Knoten mit Ausgangsgewichten ausstattet und die Ausgangsverzerrungen vollständig entfernt. Danach legt das Framework die Blattgröße auf 1 fest.
  2. Schließlich ermöglicht das Framework die Verwendung mehrerer schneller Feedforward-Netzwerke in parallelen Bahnen, indem es die Zwischenausgabeschichten gemeinsam berechnet. Das Framework erreicht diese Berechnung, indem es die Summe der einzelnen Bäume nimmt und diese Summe als Zwischenausgabeschicht darstellt.

Weiterhin folgt das UltraFastBERT-Framework im Training dem Trainingsverfahren, das vom crammedBERT-Framework verwendet wird, das das Deaktivieren des Dropout im Pretraining und die Verwendung des 1-Zyklus-Triangular-Lernalgorithmus beinhaltet. Das Modell wird dann fein abgestimmt, um seine Leistung auf einer Vielzahl von Aufgaben, hauptsächlich des GLUE-Benchmarks, für insgesamt 5 Epochen zu maximieren.

Interferenz

Interferenz ist ein wichtiger Teil für ein schnelles Feedforward-Netzwerk, und diese schnellen Feedforward-Netzwerke bilden selbst einen großen Teil großer Sprachmodelle und sind für ihr außergewöhnliches Beschleunigungspotenzial bekannt. Um dieses Beschleunigungspotenzial zu verstehen, betrachten wir ein Beispiel eines der fortschrittlichsten Sprachmodelle, GPT-3, in dem die Feedforward-Netzwerke in jedem Transformer-Schicht über 49.100 Neuronen verfügen. Wenn trainierbar, könnte ein schnelles Feedforward-Netzwerk (maximale Tiefe von 15) das ursprüngliche Feedforward-Netzwerk ersetzen. Das eingeführte schnelle Feedforward-Netzwerk würde über 65.000 Neuronen verfügen, aber es würde nur 16 dieser Neuronen für Interferenzen nutzen, was etwa 0,03% der verfügbaren Neuronen von GPT-3 entspricht.

Algorithmus und Kompatibilität

Das UltraFastBERT-Framework verwendet einen rekursiven Pseudocode-Algorithmus für schnelle Feedforward-Interferenz, und der Algorithmus wird im folgenden Bild dargestellt.

Hier stellt B die Batch-Größe dar, H stellt die Breite der Eingabeschichten dar und M stellt die Spalten dar. Ein weiterer wichtiger Punkt bei der Verwendung des Computational Matrix Multiplication-Ansatzes ist, ob er die schnellen Feedforward-Netzwerke mit dem Prozess, der bereits für die dichte Matrixmultiplikation und bestehende Deep-Learning-Frameworks verwendet wird, unverträglich macht. Glücklicherweise beeinträchtigt die Verwendung von CMM weder die Leistung noch führt sie zu Unverträglichkeiten, obwohl sie die Cachekomplexität erhöht.

Es ist wichtig zu beachten, dass als Teil des schnellen Feedforward-Netzwerks die single-threaded dichte Matrixmultiplikation auf der Ausführung von MAC- oder Multiplikations- und Akkumulationsanweisungen angewiesen ist und dass die Ersetzung von DMM durch den CMM-Ansatz CPUs zugutekommt, da weniger MAC-Anweisungen benötigt werden, um die Schichtausgabe pro Element zu berechnen. Daher führt die „neuronale Verzweigung“ als Ergänzung zum Speicheroffset der relevanten Zeiger im Framework zu einer Verringerung der Anzahl der benötigten MAC-Anweisungen. Darüber hinaus führt die Ausführung von Zeilen-Spalten-Punktoprodukten dazu, dass die SIMD- oder single instruction multiple data-Vektor-Parallelverarbeitung immer noch eine gute Option ist, um die Interferenzimplementierungen für bestimmte Geräte zu beschleunigen.

UltraFastBERT: Leistung und Ergebnisse

Wir werden die Leistung des UltraFastBERT-Frameworks für Feinabstimmung und Interferenzaufgaben diskutieren, um zu analysieren, wie sich das Framework im Vergleich zu den führenden Sprachmodellen schlägt.

Feinabstimmungsergebnisse

Die folgende Abbildung zeigt die Leistung verschiedener Modelle auf GLUE-dev-Testdatensätzen. Hier stellt N die Anzahl der Neuronen dar, die dem Framework für das Training zur Verfügung stehen, „Avg“ stellt den Durchschnittswert aller Aufgaben dar.

Wie deutlich zu sehen ist, erreicht das UltraFastBERT-Framework, das auf dem A6000-GPU für über 24 Stunden trainiert wurde, etwa 96% der Vorhersageleistung auf GLUE-Downstream-Aufgaben im Vergleich zum ursprünglichen BERT-Framework. Darüber hinaus kann man sehen, dass mit zunehmender Tiefe der schnellen Feedforward-Netzwerke die Leistung der Frameworks abnimmt, obwohl der größte Teil der Leistungsverschlechterung nur für die CoLa-Aufgabe auftritt. Wenn die CoLa-Aufgabe für einen Moment außer Acht gelassen wird, erreicht das UltraFastBERT-Framework einen Vorhersagewert von etwa 98,6%.

Interferenzergebnisse

In diesem Abschnitt werden wir die Leistung verschiedener Feedforward- oder schneller Feedforward-Netzwerke auf Interferenzimplementierungen vergleichen, und diese Implementierungen sind auf drei Ebenen verteilt.

  1. In der Level-1-Implementierung wird die Implementierung mithilfe von BLAS-Level-1-Routinen wie Skalar-Vektor-Produkt und Vektor-Vektor-Punktoprodukt konstruiert.
  2. In Level 2 verwenden die Implementierungen BLAS-Level-2-Routinen wie batchierte Skalar-Vektor-Produkte und batchierte Matrix-Vektor-Punktoprodukte.
  3. In Level 3 verwenden die Implementierungen den nicht-batchierten BLAS-Level-3-Matrix-Matrix-Multiplikationsansatz, und obwohl dies die schnellste Implementierung für Feedforward-Netzwerke ist, sind solche Implementierungen für schnelle Feedforward-Netzwerke nicht verfügbar, da die Bibliothek die Vektor-Ebene-Sparsamkeit der Computational Matrix Multiplication nicht unterstützt.

Darüber hinaus setzt das UltraFastBERT-Framework GPU-Implementierungen ein, indem es entweder benutzerdefinierte CUDA- oder PyTorch-Kernel verwendet.

Die obige Tabelle vergleicht die Leistung des UltraFastBERT-Frameworks mit seinen Vorgängern, den BERT-basierten Frameworks, in Bezug auf Feedforward- und schnelle Feedforward-Schichten, wobei jede Spalte die relative Interferenzschnelligkeit der schnellen Feedforward-Implementierung im Vergleich zur Feedforward-Implementierung bei Verwendung der gleichen linearen algebraischen Routine-Primitiven enthält.

Es ist jedoch zu beachten, dass die in der obigen Tabelle angegebenen Geschwindigkeitssteigerungen für „faire Vergleiche“ gedacht sind, d. h. sowohl die schnellen Feedforward- als auch die Feedforward-Implementierungen verwenden identische lineare algebraische Routine-Primitivoperationen. Darüber hinaus können die Implementierungen der schnellen Feedforward-Netzwerke auf Level 1 und Level 2 die Interferenz 48-mal bzw. 78-mal schneller durchführen als die schnellste Feedforward-Implementierung.

Letzte Gedanken

In diesem Artikel haben wir über UltraFastBERT gesprochen, eine Variante des BERT-Frameworks, die auf dem Konzept aufbaut, dass Feedforward-Schichten nicht 100% der verfügbaren Neuronen nutzen, um für jeden Eingabeausgaben zu generieren, was zu einer Verschwendung von Ressourcen führt, die die Komplexität, die Rechenzeit und die Rechenkosten erhöht, und ersetzt Feedforward-Schichten durch schnellere Feedforward-Netzwerke in seiner Architektur, was letztendlich dazu führt, dass das UltraFastBERT-Framework nur 0,3% der verfügbaren Neuronen nutzt, während es Ergebnisse liefert, die mit BERT-Modellen vergleichbar sind, insbesondere bei Downstream-Aufgaben.

Aufgrund seiner Designumsetzungen sind die Zwischenschichten im UltraFastBERT-Framework exponentiell schneller. Darüber hinaus ist die starke Leistung, die das UltraFastBERT-Framework liefert, ein Beweis dafür, dass LLMs starke Leistungen erbringen können, indem sie nur einen Bruchteil ihrer Parameter für individuelle Interferenzen nutzen, da das UltraFastBERT-Framework nur 0,3% der verfügbaren Neuronen während der Interferenz nutzt und dennoch eine 78-fache Geschwindigkeitssteigerung bei der Interferenzzeit erreicht.

Kunal Kejriwal ist Backend‑Entwickler und spezialisiert auf Python, PostgreSQL, Redis sowie Cloud‑Infrastruktur auf GCP und AWS. Mit drei Jahren Erfahrung im Aufbau und Skalieren von Produktionssystemen schreibt er über KI‑Infrastruktur, verteilte Systeme und die Architektur hinter der Bereitstellung von Machine‑Learning‑Arbeitslasten.