Künstliche Intelligenz
UltraFastBERT: Exponentiell Schnelleres Language Modeling

Sprachmodelle und generative KI, bekannt für ihre Fähigkeiten, sind ein heißes Thema in der KI-Industrie. Globale Forscher verbessern ihre Effizienz und Fähigkeiten. Diese Systeme, typischerweise Deep-Learning-Modelle, werden auf umfangreichen gelabelten Daten vorab trainiert und nutzen neuronale Netze für Selbstaufmerksamkeit. Sie verwenden verschiedene Schichten – Feedforward-, Rekurrent-, Embedded- und Aufmerksamkeitsschichten – um Eingabetext zu verarbeiten und relevante Ausgaben zu erzeugen.
Meistens enthalten die Feedforward-Schichten großer Sprachmodelle 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 Effizienz der führenden BERT-Modelle erreicht, aber nur 0,3% der Neuronen während der Inferenz verwendet, insbesondere 12 von 4095 in jeder Schicht. Wir werden die Architektur, Funktionalität und Ergebnisse von UltraFastBERT erkunden. Lassen Sie uns beginnen.
UltraFastBERT : Eine Einführung in Exponentiell Schnelleres Language Modeling
Traditionell verwendet ein Sprachmodell verschiedene Komponenten, um sich mit Inhaltsgenerierungsfähigkeiten auszustatten, einschließlich Feedforward-Schichten, rekurrenten Schichten, Embedded-Schichten und Aufmerksamkeitsschichten. Diese Komponenten sind dafür verantwortlich, während des Trainings Muster zu erkennen und letztendlich auf der Grundlage der Eingabetexte genaue Ausgaben zu erzeugen. Jede dieser Komponenten hat einige Parameter, und in Sprachmodellen werden die meisten 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, Rechenzeit und Rechenkosten erhöht.
Im Kern ist das UltraFastBERT-Framework eine Variante des BERT-Frameworks, baut auf diesem Konzept auf und ersetzt die 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.
Gegeben ein schnelles Feedforward-(FFF)-Netzwerk und ein Feedforward-(FF)-Netzwerk, jedes mit n Neuronen, ist die Zeitkomplexität eines Vorwärtsdurchlaufs in einem Feedforward-Netzwerk 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 daran, 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 Inferenz 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 Punktproduktoperation bestimmt das Gewicht der Spalten, die fortgesetzt 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-Punktproduktkontrastierung steht im Gegensatz zur DMM oder dichten 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, die
- Nur 0,3% der verfügbaren Neuronen während der Inferenz verwenden und nur 12 Neuronen von insgesamt 4095 Neuronen in jeder Schicht verwenden.
- Starke Leistung liefern, die mit den führenden BERT-Modellen vergleichbar ist, indem Feinabstimmungsstrategien auf Downstream-Aufgaben implementiert werden.
- Eine native Implementierung der CMM oder bedingten Matrixmultiplikation bieten, die die Grundlage für das schnelle Feedforward-Netzwerk bildet und letztendlich zu einer 78-fachen Geschwindigkeitssteigerung bei der Leistung im Vergleich zu nativer optimierter DMM oder dichter Matrixmultiplikation führt.
Feed-Forward-Neuronale Netze
Ein Feed-Forward-Neuronales Netz ist eines der einfachsten künstlichen neuronalen Netze, das die Information nur in die Vorwärtsrichtung bewegt, von den Eingabeknoten zu den Ausgabeknoten über versteckte Knoten. Ein wichtiger Aspekt eines Feed-Forward-Neuronalen Netzes ist, dass es keine Schleifen oder Zyklen gibt und es einfacher zu konstruieren ist als RNN oder rekurrente Neuronale Netze und CNN oder konventionelle Neuronale Netze. Die Architektur eines Feed-Forward-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 Feed-Forward-Netzwerks ist mit jedem Neuron in der nächsten Schicht verbunden, was Feed-Forward-Neuronale Netze zu vollständig verbundenen Netzen macht. 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 aktualisiert, der in der Ausgabe auftritt.
Weiterhin gibt es zwei wichtige Phasen in der Funktionsweise eines Feed-Forward-Neuronalen Netzes: die Feed-Forward-Phase und die Backpropagation-Phase.
Feed-Forward-Phase
In der Feed-Forward-Phase wird der Eingabe dem Netzwerk zugeführt und es propagiert dann vorwärts. Die versteckten Schichten berechnen die gewichtete Summe der Eingaben und führen eine 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 rückwärts durch das Netzwerk propagiert und das Netzwerk verwendet einen Gradientenabstiegs-Optimierungs-Algorithmus, um die Gewichte anzupassen und 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, die in den Zwischenschichten des CrammedBERT-Frameworks enthalten sind, durch schnelle Feedforward-Netzwerke. Das UltraFastBERT-Framework führt die folgenden Änderungen an den ursprünglichen Feedforward-Netzwerken durch.
- Das Framework entfernt den Unterschied zwischen Blatt- und Nicht-Blatt-Knoten, indem es die GeLu-Aktivierungsfunktion über Knoten hinweg verwendet und diese Knoten mit Ausgangsgewichten ausstattet und Ausgangsfehler vollständig entfernt. Anschließend fixiert das Framework die Blattgröße auf 1.
- Schließlich ermöglicht das Framework multiple schnelle Feedforward-Netzwerke in Parallelschaltung, 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 präsentiert.
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 umfasst. Das Modell wird dann fein abgestimmt, um seine Leistung auf einer Vielzahl von Aufgaben, insbesondere des GLUE-Benchmarks, für insgesamt 5 Epochen zu maximieren.
Inferenz
Die Inferenz ist ein wichtiger Teil für ein schnelles Feedforward-Netzwerk und diese schnellen Feedforward-Netzwerke bilden 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 für eines der fortschrittlichsten Sprachmodelle, das 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 die Inferenz verwenden, 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 die schnelle Feedforward-Inferenz und der Algorithmus wird im folgenden Bild dargestellt.

Hier stellt B die Batch-Größe dar, H die Breite der Eingabeschichten und M die Spalten. Ein weiterer wichtiger Aspekt bei der Verwendung eines Computational-Matrix-Multiplikations-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 von der Ausführung der MAC- oder Multiplikations- und Akkumulationsanweisungen abhängt und dass die Ersetzung von DMM durch den CMM-Ansatz CPUs zugute kommt, da weniger MAC-Anweisungen benötigt werden, um die Schichtausgabe pro Element zu berechnen. Daher wirkt die “neuronale Verzweigung” als Addition zum Speicheroffset für relevante Zeiger im Framework. Daher wird im UltraFastBERT-Framework die Anweisungsverzweigungsvorhersage nie vollständig eingeschaltet, um die Bedingtheit der CMM zu ermöglichen, und lädt nur die relevanten Spalten der Gewichtsmatrix individuell. Darüber hinaus kann die SIMD- oder single-instruction-multiple-data-Vektor-Parallelverarbeitung immer noch verwendet werden, um die Inferenz-Implementierungen für bestimmte Geräte zu beschleunigen.
UltraFastBERT : Leistung und Ergebnisse
Wir werden die Leistung des UltraFastBERT-Frameworks für Feinabstimmung und Inferenz-Aufgaben diskutieren, um zu analysieren, wie das Framework im Vergleich zu den führenden Sprachmodellen abschneidet.
Feinabstimmungsergebnisse
Das folgende Bild zeigt die Leistung verschiedener Modelle auf den GLUE-dev-Test-Datensä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 den GLUE-Downstream-Aufgaben im Vergleich zum ursprünglichen BERT-Framework. Darüber hinaus kann auch gesehen werden, 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 den Moment außer Acht gelassen wird, erreicht das UltraFastBERT-Framework einen Vorhersageleistungs-Wert von etwa 98,6%.
Inferenz-Ergebnisse
In diesem Abschnitt werden wir die Leistung verschiedener Feedforward- oder schneller Feedforward-Netzwerke auf Inferenz-Implementierungen vergleichen und diese Implementierungen sind auf drei Ebenen verteilt.
- In der Ebene 1 wird die Implementierung mithilfe von BLAS-Ebene-1-Routinen wie Skalar-Vektor-Produkt und Vektor-Vektor-Punktprodukte konstruiert.
- In der Ebene 2 verwenden die Implementierungen BLAS-Ebene-2-Routinen wie batchierte Skalar-Vektor-Produkte und batchierte Matrix-Vektor-Punktprodukte.
- In der Ebene 3 verwenden die Implementierungen den nicht-batchierten BLAS-Ebene-3-Matrix-Matrix-Multiplikationsansatz und obwohl es die schnellste Implementierung für Feedforward-Netzwerke ist, sind solche Implementierungen nicht für schnelle Feedforward-Netzwerke verfügbar, da die Bibliothek die Vektor-Ebene-Sparsamkeit der Computational-Matrix-Multiplikation nicht unterstützt.
Darüber hinaus setzt das UltraFastBERT-Framework GPU-Implementierungen ein, indem es entweder benutzerdefinierte CUDA- oder PyTorch-Kernel verwendet.

Der 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 Inferenz-Geschwindigkeitssteigerung der schnellen Feedforward-Implementierung im Vergleich zu Feedforward-Implementierungen enthält, die die gleichen linearen algebraischen Routine-Primitiven verwenden.
Es ist jedoch zu beachten, dass die in der Tabelle gemeldeten Geschwindigkeitssteigerungen für “faire Vergleiche” gedacht sind, d. h. sowohl die schnellen Feedforward- als auch die Feedforward-Implementierungen verwenden identische lineare algebraische Routine-Primitive. Darüber hinaus können die Implementierungen der schnellen Feedforward-Netzwerke auf der Ebene 1 und Ebene 2 die Inferenz 48-mal bzw. 78-mal schneller ausfü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, Rechenzeit und 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 Design-Implementierungen 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 Leistung liefern können, indem sie nur einen Bruchteil ihrer Parameter für individuelle Inferenzen einsetzen, da das UltraFastBERT-Framework nur 0,3% der verfügbaren Neuronen während der Inferenz verwendet und dennoch eine 78-fache Geschwindigkeitssteigerung bei der Inferenzzeit erreicht.








