Heim Technologie-Peripheriegeräte KI DeepMind rüstet Transformer auf, Vorwärtspass-FLOPs können um bis zur Hälfte reduziert werden

DeepMind rüstet Transformer auf, Vorwärtspass-FLOPs können um bis zur Hälfte reduziert werden

Apr 16, 2024 pm 08:10 PM
git 工程

Durch die Einführung der Hybridtiefe kann das neue Design von DeepMind die Transformer-Effizienz erheblich verbessern.


Die Bedeutung von Transformer liegt auf der Hand. Derzeit arbeiten viele Forschungsteams an der Verbesserung dieser revolutionären Technologie. Eine der wichtigen Verbesserungsrichtungen besteht darin, die Effizienz von Transformer zu verbessern, beispielsweise durch die Ausstattung mit adaptiven Rechenfunktionen Dies erspart unnötige Berechnungen.

Wie Illiya Polosukhin, einer der Vorreiter der Transformer-Architektur und Mitbegründer des NEAR-Protokolls, vor nicht allzu langer Zeit in einem Gespräch mit Jen-Hsun Huang sagte: „Adaptives Computing muss als nächstes erscheinen. Wir müssen.“ Achten Sie insbesondere darauf, wie viele Rechenressourcen für das Problem aufgewendet werden? . DeepMind rüstet Transformer auf, Vorwärtspass-FLOPs können um bis zur Hälfte reduziert werden
Das Gleiche sollte für die Sprachmodellierung gelten. Um genaue Vorhersageergebnisse zu erhalten, ist es nicht notwendig, für alle Token und Sequenzen die gleiche Zeit oder Ressourcen zu investieren. Das Transformer-Modell verbraucht jedoch für jeden Token in einem Vorwärtsdurchlauf den gleichen Rechenaufwand. Das lässt die Leute jammern: Die meisten Berechnungen sind Verschwendung!

Wenn Sie unnötige Berechnungen nicht durchführen können, können Sie im Idealfall das Rechenbudget des Transformers reduzieren.
DeepMind rüstet Transformer auf, Vorwärtspass-FLOPs können um bis zur Hälfte reduziert werden
Bedingte Berechnung ist eine Technik, die Berechnungen nur dann durchführt, wenn sie benötigt werden, wodurch die Gesamtzahl der Berechnungen reduziert wird. Viele Forscher haben bereits verschiedene Algorithmen vorgeschlagen, die auswerten können, wann Berechnungen durchgeführt werden und wie viele Berechnungen verwendet werden.

Allerdings kommen häufig verwendete Lösungsformen für dieses anspruchsvolle Problem möglicherweise nicht gut mit bestehenden Hardwareeinschränkungen zurecht, da sie dazu neigen, dynamische Berechnungsdiagramme einzuführen. Stattdessen könnten die vielversprechendsten bedingten Berechnungsmethoden diejenigen sein, die konsequent den aktuellen Hardware-Stack nutzen und der Verwendung statischer Berechnungsgraphen und bekannten Tensorgrößen, die auf der Grundlage der maximalen Auslastung der Hardware ausgewählt werden, Vorrang einräumen.

Kürzlich hat Google DeepMind dieses Problem untersucht. Sie hoffen, mit einem geringeren Rechenbudget den Rechenaufwand von Transformer zu reduzieren.

Titel des Papiers: Mixture-of-Depths: Dynamische Zuordnung von Rechenleistung in transformatorbasierten SprachmodellenDeepMind rüstet Transformer auf, Vorwärtspass-FLOPs können um bis zur Hälfte reduziert werden
  • Adresse des Papiers: https://arxiv.org/pdf/2404.02258.pdf
  • Sie stellen sich vor: In jeder Schicht muss das Netzwerk lernen, Entscheidungen für jeden Token zu treffen und dadurch das verfügbare Rechenbudget dynamisch zuzuweisen. In ihrer spezifischen Implementierung wird der gesamte Rechenaufwand vom Benutzer vor dem Training festgelegt und nie geändert, sondern ist eine Funktion der Entscheidungen, die während des Netzwerkbetriebs getroffen werden. Dadurch können Hardware-Effizienzgewinne (z. B. geringerer Speicherbedarf oder geringere FLOPs pro Vorwärtsdurchlauf) vorhergesehen und genutzt werden. Die Experimente des Teams zeigen, dass diese Gewinne erzielt werden können, ohne die Gesamtleistung des Netzwerks zu beeinträchtigen.

Dieses Team bei DeepMind verfolgt einen Ansatz ähnlich dem Mixed Expert (MoE) Transformer, bei dem dynamische Routing-Entscheidungen auf Token-Ebene über die gesamte Netzwerktiefe durchgeführt werden.

Im Gegensatz zu MoE haben sie hier die Wahl: entweder die Berechnung auf den Token anwenden (wie beim Standard-Transformer) oder sie durch eine Restverbindung umgehen (gleich bleiben, Berechnung speichern). Ein weiterer Unterschied zu MoE besteht darin, dass dieser Routing-Mechanismus sowohl für MLP als auch für Multi-Head-Aufmerksamkeit verwendet wird. Daher wirkt sich dies auch auf die vom Netzwerk verarbeiteten Schlüssel und Abfragen aus, sodass die Route nicht nur entscheidet, welche Token aktualisiert werden, sondern auch, welche Token zur Bearbeitung verfügbar sind.

DeepMind nannte diese Strategie Mixture-of-Depths (MoD), um die Tatsache hervorzuheben, dass jeder Token eine unterschiedliche Anzahl von Schichten oder Modulen in der Transformer-Tiefe durchläuft. Wir übersetzen es hier mit „Mischtiefe“, siehe Abbildung 1.

MoD unterstützt Benutzer dabei, Leistung und Geschwindigkeit abzuwägen. Einerseits können Benutzer den MoD Transformer mit denselben Trainings-FLOPs wie einen regulären Transformer trainieren, was zu einer Verbesserung des endgültigen Trainingsziels für die Log-Wahrscheinlichkeit um bis zu 1,5 % führen kann.Der MoD Transformer hingegen benötigt weniger Rechenaufwand, um den gleichen Trainingsverlust wie der reguläre Transformer zu erzielen – bis zu 50 % weniger FLOPs pro Vorwärtsdurchlauf.

Diese Ergebnisse zeigen, dass MoD Transformer lernen kann, intelligent zu routen (d. h. unnötige Berechnungen zu überspringen).

Implementierung des Mixed Depth (MoD) Transformer

Zusammenfassend lautet die Strategie wie folgt:

  • Legen Sie ein statisches Rechenbudget fest, das niedriger ist als der entsprechende herkömmliche Betrag Die von Transformer benötigte Berechnung besteht darin, die Anzahl der Token in der Sequenz zu begrenzen, die an Modulberechnungen teilnehmen können (z. B. Selbstaufmerksamkeitsmodul und nachfolgendes MLP). Beispielsweise kann ein regulärer Transformer zulassen, dass alle Token in der Sequenz an Selbstaufmerksamkeitsberechnungen teilnehmen, der MoD-Transformer kann jedoch die Verwendung von nur 50 % der Token in der Sequenz beschränken.
  • Für jeden Token gibt es in jedem Modul einen Routing-Algorithmus, der eine skalare Gewichtung angibt; diese Gewichtung stellt die Routing-Präferenz für jeden Token dar – ob er an der Berechnung des Moduls teilnimmt oder diese umgeht.
  • Finden Sie in jedem Modul die obersten k größten Skalargewichte, und ihre entsprechenden Token nehmen an der Berechnung des Moduls teil. Da nur k Token an der Berechnung dieses Moduls teilnehmen müssen, sind sein Berechnungsdiagramm und seine Tensorgröße während des Trainingsprozesses statisch. Diese Token sind dynamische und kontextbezogene Token, die vom Routing-Algorithmus erkannt werden.

Routing-Schema

Das Team berücksichtigte zwei erlernte Routing-Schemata (siehe Abbildung 2): Token-Auswahl und Expertenauswahl.
DeepMind rüstet Transformer auf, Vorwärtspass-FLOPs können um bis zur Hälfte reduziert werden
Im Token-selektiven Routing-Schema generiert der Routing-Algorithmus eine Wahrscheinlichkeitsverteilung für jedes Token über Rechenpfade hinweg (z. B. über Expertenidentitäten in MoE Transformer). Die Token werden dann an ihren bevorzugten Pfad gesendet (d. h. den Pfad mit der höchsten Wahrscheinlichkeit), und der Hilfsverlust stellt sicher, dass nicht alle Token auf demselben Pfad konvergieren. Beim Token-selektiven Routing kann es zu Lastausgleichsproblemen kommen, da nicht sichergestellt ist, dass die Token richtig auf die möglichen Pfade verteilt werden.

Expert Selective Routing kehrt das obige Schema um: Anstatt Token ihre bevorzugten Pfade auswählen zu lassen, wählt jeder Pfad die obersten k Token (top-k) basierend auf den Token-Präferenzen aus. Dies gewährleistet einen perfekten Lastausgleich, da jedem Pfad immer k Token garantiert sind. Dies kann jedoch auch dazu führen, dass einige Token über- oder unterverarbeitet werden, da sich einige Token möglicherweise im obersten k mehrerer Pfade befinden und andere Token möglicherweise keinen entsprechenden Pfad haben.

DeepMind hat sich aus drei Gründen für die Expertenauswahlweiterleitung entschieden.

Erstens ist kein zusätzlicher Gleichgewichtsverlust erforderlich.

Zweitens: Da die Auswahl des obersten k von der Größe des Routing-Gewichts abhängt, ermöglicht dieses Routing-Schema die Verwendung relativer Routing-Gewichte, wodurch ermittelt werden kann, welche Token für die aktuelle Modulberechnung am meisten benötigt werden Der Routing-Algorithmus kann die Gewichtung entsprechend festlegen, um sicherzustellen, dass der kritischste Token zu den obersten k gehört – das ist etwas, was das Token-selektive Routing-Schema nicht kann. Im konkreten Anwendungsfall gibt es einen Berechnungspfad, der im Wesentlichen eine Nulloperation ist, sodass die Weiterleitung wichtiger Token an Null vermieden werden sollte.

Drittens kann eine einzelne Top-k-Operation das Token effizient in zwei sich gegenseitig ausschließende Sätze (einen Satz für jeden Berechnungspfad) aufteilen, da das Routing nur über zwei Pfade erfolgt. oder Unterverarbeitungsprobleme.

Informationen zur konkreten Umsetzung dieses Routing-Schemas finden Sie im Originalpapier.
Sampling

Obwohl expertenselektives Routing viele Vorteile hat, weist es auch ein offensichtliches Problem auf: Top-k-Operationen sind akausal. Das heißt, ob die Routing-Gewichtung eines bestimmten Tokens im oberen k liegt, hängt vom Wert der Routing-Gewichtung danach ab, aber wir können diese Gewichte nicht erhalten, wenn wir eine autoregressive Stichprobe durchführen.

Um dieses Problem zu lösen, testete das Team zwei Methoden.

Die erste besteht darin, eine einfache Hilfsverlustpraxis einzuführen. Sie hat gezeigt, dass ihr Einfluss auf das Hauptziel der Sprachmodellierung 0,2 % bis 0,3 % beträgt, sie ermöglicht dem Modell jedoch eine autoregressive Stichprobe. Sie verwendeten einen binären Kreuzentropieverlust, bei dem die Ausgabe des Routing-Algorithmus den Logit liefert und durch Auswahl des Top-k dieser Logits das Ziel bereitgestellt werden kann (d. h. 1, wenn sich ein Token im Top-k befindet, andernfalls). 0).

Die zweite Methode besteht darin, einen kleinen Hilfs-MLP-Prädiktor einzuführen (genau wie ein anderer Routing-Algorithmus), dessen Eingabe mit der des Routing-Algorithmus (mit Stoppgradienten) identisch ist, dessen Ausgabe jedoch ein Vorhersageergebnis ist: Token Ob es sich im Top-k der Sequenz befindet. Dieser Ansatz hat keinen Einfluss auf die Ziele der Sprachmodellierung und Experimente zeigen, dass er die Geschwindigkeit dieses Schritts nicht wesentlich beeinflusst.

Mit diesen neuen Methoden ist es möglich, ein autoregressives Sampling durchzuführen, indem der Token ausgewählt wird, an den weitergeleitet werden soll, oder ein Modul basierend auf der Ausgabe des Routing-Algorithmus zu umgehen, ohne auf Informationen über zukünftige Token angewiesen zu sein. Experimentelle Ergebnisse zeigen, dass es sich hierbei um eine relativ einfache Hilfsaufgabe handelt, mit der schnell eine Genauigkeit von 99 % erreicht werden kann. ?? .
Insgesamt können Sie sehen, dass der MoD Transformer die Basislinie der isoFLOP-Kurve nach rechts unten zieht. Mit anderen Worten: Der optimale MoD-Transformator hat einen geringeren Verlust als das optimale Basismodell und verfügt außerdem über mehr Parameter. Dieser Effekt hat eine glückliche Konsequenz: Es gibt MoD-Modelle, die genauso gut oder besser funktionieren als das optimale Basismodell (während sie in Schritten schneller sind), obwohl sie selbst unter ihren Hyperparametereinstellungen nicht isoFLOP-optimal sind. Beispielsweise ist eine MoD-Variante mit 220 Mio. Parametern (Modell Nr. 3 in Abbildung 3) etwas besser als das optimale Basislinienmodell von isoFLOP (ebenfalls 220 Mio. Parameter, Modell Nr. 1 in Abbildung 3), diese MoD-Variante weist jedoch Schritte während des Trainings auf über 60 % schneller.

Abbildung 4 unten zeigt die isoFLOP-Analyse, wenn die gesamten FLOPs 6e18, 2e19 und 1e20 betragen. Wie man sieht, setzt sich der Trend fort, wenn das FLOP-Budget größer ist.
Abbildung 5 unten zeigt die Routing-Entscheidung eines MoD-Transformers, der mit dem Interleaved-Routing-Modul trainiert wurde. Trotz der großen Anzahl an Modulbypässen erreicht dieser MoD Transformer immer noch eine bessere Leistung als der reguläre Transformer.
DeepMind rüstet Transformer auf, Vorwärtspass-FLOPs können um bis zur Hälfte reduziert werdenAutoregressive Bewertung

Sie bewerteten auch die autoregressive Stichprobenleistung von MoD-Varianten. Die Ergebnisse sind in Abbildung 6 unten dargestellt. Diese Ergebnisse zeigen, dass die durch den MoD Transformer erzielten Recheneinsparungen nicht auf die Trainingsumgebung beschränkt sind.
DeepMind rüstet Transformer auf, Vorwärtspass-FLOPs können um bis zur Hälfte reduziert werden
Mixed Depth and Expertise (MoDE)
DeepMind rüstet Transformer auf, Vorwärtspass-FLOPs können um bis zur Hälfte reduziert werden
MoD-Technologie kann auf natürliche Weise in MoE-Modelle integriert werden, um sogenannte MoDE-Modelle zu bilden. Abbildung 7 unten zeigt MoDE und die damit verbundenen Verbesserungen.

MoDE gibt es in zwei Varianten: Staged MoDE und Integrated MoDE.
DeepMind rüstet Transformer auf, Vorwärtspass-FLOPs können um bis zur Hälfte reduziert werden
Das abgestufte MoDE dient dazu, Routing-Bypass- oder Reach-Token-Operationen vor dem Selbstaufmerksamkeitsschritt durchzuführen, während das integrierte MoDE das MoD-Routing durch die Integration von „No-Operation“-Experten zwischen regulären MLP-Experten implementiert. Der Vorteil des ersteren besteht darin, dass Token den Schritt der Selbstaufmerksamkeit überspringen können, während der Vorteil des letzteren darin besteht, dass der Routing-Mechanismus einfach ist.
Das Team stellte fest, dass die integrierte Implementierung von MoDE deutlich besser ist, als die Fähigkeit von Experten direkt zu reduzieren und sich auf das Verwerfen von Token zu verlassen, um Restrouting-Designs zu implementieren.

Das obige ist der detaillierte Inhalt vonDeepMind rüstet Transformer auf, Vorwärtspass-FLOPs können um bis zur Hälfte reduziert werden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So laden Sie GIT -Projekte auf lokale Herd herunter So laden Sie GIT -Projekte auf lokale Herd herunter Apr 17, 2025 pm 04:36 PM

Um Projekte lokal über Git herunterzuladen, befolgen Sie die folgenden Schritte: Installieren Sie Git. Navigieren Sie zum Projektverzeichnis. Klonen des Remote-Repositorys mit dem folgenden Befehl: Git Clone https://github.com/username/repository-name.git.git

So aktualisieren Sie den Code in Git So aktualisieren Sie den Code in Git Apr 17, 2025 pm 04:45 PM

Schritte zur Aktualisierung von Git -Code: CODEHOUSSCHAFTEN:

Wie man Git Commit benutzt Wie man Git Commit benutzt Apr 17, 2025 pm 03:57 PM

Git Commit ist ein Befehl, mit dem Dateien Änderungen an einem Git -Repository aufgezeichnet werden, um einen Momentaufnahme des aktuellen Status des Projekts zu speichern. So verwenden Sie dies wie folgt: Fügen Sie Änderungen in den temporären Speicherbereich hinzu, schreiben Sie eine prägnante und informative Einreichungsnachricht, um die Einreichungsnachricht zu speichern und zu beenden, um die Einreichung optional abzuschließen: Fügen Sie eine Signatur für die Einreichungs -Git -Protokoll zum Anzeigen des Einreichungsinhalts hinzu.

Wie man Code in Git zusammenfasst Wie man Code in Git zusammenfasst Apr 17, 2025 pm 04:39 PM

Git -Code -Merge -Prozess: Ziehen Sie die neuesten Änderungen an, um Konflikte zu vermeiden. Wechseln Sie in die Filiale, die Sie zusammenführen möchten. Initiieren Sie eine Zusammenführung und geben Sie den Zweig an, um zusammenzuarbeiten. Merge -Konflikte auflösen (falls vorhanden). Inszenierung und Bekämpfung verschmelzen, liefern die Botschaft.

Was tun, wenn der Git -Download nicht aktiv ist Was tun, wenn der Git -Download nicht aktiv ist Apr 17, 2025 pm 04:54 PM

Auflösung: Wenn die Git -Download -Geschwindigkeit langsam ist, können Sie die folgenden Schritte ausführen: Überprüfen Sie die Netzwerkverbindung und versuchen Sie, die Verbindungsmethode zu wechseln. Optimieren Sie die GIT-Konfiguration: Erhöhen Sie die Post-Puffer-Größe (GIT-Konfiguration --global http.postbuffer 524288000) und verringern Sie die Niedriggeschwindigkeitsbegrenzung (GIT-Konfiguration --global http.lowSpeedLimit 1000). Verwenden Sie einen GIT-Proxy (wie Git-Proxy oder Git-LFS-Proxy). Versuchen Sie, einen anderen Git -Client (z. B. Sourcetree oder Github Desktop) zu verwenden. Überprüfen Sie den Brandschutz

So löschen Sie ein Repository von Git So löschen Sie ein Repository von Git Apr 17, 2025 pm 04:03 PM

Befolgen Sie die folgenden Schritte, um ein Git -Repository zu löschen: Bestätigen Sie das Repository, das Sie löschen möchten. Lokale Löschen des Repositorys: Verwenden Sie den Befehl rm -RF, um seinen Ordner zu löschen. Löschen Sie ein Lager aus der Ferne: Navigieren Sie zu den Lagereinstellungen, suchen Sie die Option "Lager löschen" und bestätigen Sie den Betrieb.

So aktualisieren Sie den lokalen Code in Git So aktualisieren Sie den lokalen Code in Git Apr 17, 2025 pm 04:48 PM

Wie aktualisiere ich den lokalen Git -Code? Verwenden Sie Git Fetch, um die neuesten Änderungen aus dem Remote -Repository zu ziehen. Merge Remote -Änderungen in die lokale Niederlassung mit Git Merge Origin/& lt; Remote -Zweigname & gt;. Lösung von Konflikten, die sich aus Fusionen ergeben. Verwenden Sie Git Commit -m "Merge Branch & lt; Remote Branch Name & gt;" Um Änderungen zu verschmelzen und Aktualisierungen anzuwenden.

Wie löste ich das effiziente Suchproblem in PHP -Projekten? Typense hilft Ihnen, es zu erreichen! Wie löste ich das effiziente Suchproblem in PHP -Projekten? Typense hilft Ihnen, es zu erreichen! Apr 17, 2025 pm 08:15 PM

Bei der Entwicklung einer E-Commerce-Website habe ich auf ein schwieriges Problem gestoßen: Wie kann ich effiziente Suchfunktionen in großen Mengen an Produktdaten erzielen? Herkömmliche Datenbanksuche sind ineffizient und haben eine schlechte Benutzererfahrung. Nach einigen Nachforschungen entdeckte ich den Suchmaschinen-Artensense und löste dieses Problem durch seine offizielle PHP-Client-Artense-/Artense-Php, die die Suchleistung erheblich verbesserte.

See all articles