- In Long-Context-Transformern, bei denen die Kosten von Self-Attention zum Flaschenhals werden, senkt SPECTRE mit einem FFT-basierten Token-Mixer die Komplexität pro Layer von O(L²) auf O(L log L)
- Jeder Attention-Head wird durch die Kombination aus schneller Real-FFT, inhaltsadaptivem spektralem Gate und inverser FFT ersetzt, während die bestehende Transformer-Struktur erhalten bleibt
- Bei der autoregressiven Generierung reduziert der Prefix-FFT-Cache die Last wiederholter FFT-Neuberechnungen pro Schritt, und ein optionales Wavelet-Modul kann den Verlust lokaler Merkmale ausgleichen
- Auf Basis des Llama-3.2-1B-Backbones wurden SDPA, FlashAttention-2 und SPECTRE verglichen; auf einer NVIDIA A100-80GB wurden Durchsatz und Latenz für 512 bis 128k Tokens gemessen
- SPECTRE erreichte auf PG-19 und ImageNet-1k die gleiche oder eine bessere Basisleistung und zielt mit weniger als 6 % zusätzlicher Parameter auf Long-Context-Verarbeitung auf gewöhnlichen GPUs ab
Wie die quadratischen Kosten von Self-Attention mit FFT reduziert werden
- Long-Context-Transformer werden für Aufgaben benötigt, die Zehntausende von Tokens verarbeiten, etwa Multi-Turn-Dialoge, buchlange Zusammenfassungen oder hochauflösende Vision-Anwendungen
- Herkömmliche Self-Attention erhöht wegen der Kosten von O(n²d) mit wachsender Kontextlänge die Inferenzlatenz und den Speicherverbrauch
- SPECTRE ist ein Drop-in-Ersatz, der Self-Attention-Layer durch einen Token-Mixer im Frequenzbereich ersetzt
- Tokens werden auf eine orthonormale Fourier-Basis projiziert
- Ein inhaltsadaptives diagonales Gate und optional ein Low-Rank-Gate werden angewendet
- Anschließend erfolgt die Rücktransformation in den Token-Raum
- Der Kern besteht darin, die Komplexität pro Layer auf O(n log n) zu senken, ohne die umgebende Netzwerkarchitektur zu verändern
Aufbau des Token-Mixers und Unterstützung für Generierung
- Der Ersatz eines Attention-Heads in SPECTRE besteht aus schneller Real-FFT, spektralem Gate und inverser FFT
- Das spektrale Gating arbeitet auf n/2 + 1 Frequenzkoeffizienten und ist so ausgelegt, Rechen- und Speicheraufwand zu verringern, ohne die Ausdrucksstärke zu verlieren
- Der Prefix-FFT-Cache erfüllt eine ähnliche Rolle wie ein standardmäßiger KV-Cache und unterstützt Streaming-Decoding
- Er reduziert die Schwäche herkömmlicher spektraler Mixer, bei autoregressiver Generierung in jedem Zeitschritt die FFT neu berechnen zu müssen
- Die Struktur ermöglicht effiziente Generierung innerhalb eines festen Speicherbudgets
- Das optionale Wavelet Refinement Module ergänzt lokale Details, die bei rein spektralen Verfahren verloren gehen könnten, bei geringem Rechen-Overhead
Anwendung auf bestehende Transformer
- SPECTRE kann Multi-Head-Attention-Layer direkt ersetzen und erfordert keine separate Architekturüberarbeitung
- Bereits vortrainierte Modelle können mit SPECTRE-Layern feinabgestimmt werden
- Aktualisiert werden nur die neu eingeführten Parameter
- Die zusätzlichen Parameter machen weniger als 6 % der Gesamtgewichte aus
- Im Unterschied zu Ansätzen, die spezielle Optimierungen oder nicht standardisierte Architekturen benötigen, bleibt die umgebende Transformer-Struktur erhalten
Experimente auf Basis von Llama-3.2-1B
- Auf demselben Llama-3.2-1B-Backbone wurden drei Attention-Kernels verglichen
- standard softmax-dot-product attention (SDPA)
- FlashAttention-2
- SPECTRE-Mixer
- Die Messumgebung war eine NVIDIA A100-80GB; die Sequenzlängen waren L ∈ {512, 1k, 4k, 8k, 32k, 128k}
- Die Metriken waren der Durchsatz in Tokens pro Sekunde und die Latenz bei Single-Batch-Verarbeitung
- Je höher der Durchsatz, desto besser
- Je niedriger die Latenz, desto besser
- SPECTRE zeigte bei erhaltener Backbone-Genauigkeit eine Laufzeit nahe O(n log n)
- Bis 32k Tokens blieb die Laufzeit nahezu flach
- Laut Abstract war SPECTRE bei einem 128k-Token-Kontext bis zu 7× schneller als FlashAttention-2
- Laut der Liste der Contributions im Haupttext war die Inferenz bei 32k Tokens bis zu 7× schneller als mit FlashAttention-2
Benchmark-Ergebnisse und praktischer Einsatzbereich
- SPECTRE zeigte bei Sprachmodellierung auf PG-19 und Klassifikation auf ImageNet-1k Ergebnisse auf oder über Basisniveau
- Bei der Verarbeitung langer Kontexte vermeidet es die quadratischen Kosten von Self-Attention und behält dennoch globales Context-Mixing bei
- Auf Sparse-Mustern, Kernel-Approximationen oder Low-Rank-Strukturen basierende Verfahren zur Beschleunigung von Attention können Einschränkungen wie den Verzicht auf Exaktheit, nicht standardisierte Optimierungen oder fehlende Unterstützung für Streaming-Generierung haben
- SPECTRE nutzt einen Ansatz im Frequenzbereich, bei dem FFT die zirkuläre Faltung diagonalisiert und globales Mixing in ein elementweises Produkt überführt
- Mit weniger als 6 % zusätzlichen Parametern zielt es ohne spezialisierte Hardware auf die Verarbeitung von Kontexten im Bereich von Hunderttausenden Tokens auf commodity GPUs ab
1 Kommentare
Hacker-News-Kommentare
Im Grunde nutzt der Ansatz den Faltungssatz: Eine teure Faltung im ursprünglichen Raum wird im reziproken Raum zu einer einfachen Multiplikation, und umgekehrt gilt das ebenfalls.
Wenn es in den Daten eine Faltungsoperation gibt, transformiert man sie in den konjugierten Bereich und macht daraus eine Multiplikation.
Anders gesagt: Arbeite in dem Bereich, der für die Daten natürlich ist.
https://en.wikipedia.org/wiki/Convolution_theorem
Zum Optimieren optimiert man jeden Schritt und erledigt möglichst viel Arbeit in dem effizientesten verfügbaren Raum.
Ist das nicht etwas anderes, als dass sie einfach leichter zu berechnen ist?
Außerdem muss man für die Berechnung komplexe Zahlen verwenden, und numerisch ist sie weniger stabil. Soweit ich weiß, bringt FFT bei allgemeinen Faltungen keinen Vorteil.
Bei Self-Attention oder dem Anwendungsfall dieses Papers könnte n deutlich größer sein. Ich habe das Paper nicht gelesen. Das Problem mit den komplexen Zahlen bleibt trotzdem.
Google hat diese Idee 2022 mit FNet: Mixing Tokens with Fourier Transforms eingeführt.
Danach stellte sich heraus, dass die Matrixmultiplikationsleistung von TPUs in den meisten Situationen schneller ist als FFT.
https://arxiv.org/abs/2105.03824
„Insgesamt zeigen Ansätze wie FNet, Performer und Sparse Transformer, dass feste oder approximative Token-Mischung den Rechenaufwand reduzieren kann; unsere Strategie des adaptiven spektralen Filterns kombiniert jedoch auf einzigartige Weise die Effizienz der FFT mit lernbaren, eingabeabhängigen spektralen Filtern. Das bietet eine starke Kombination aus Skalierbarkeit und Anpassungsfähigkeit, die für komplexe Aufgaben der Sequenzmodellierung wichtig ist.“
Danach gibt es auch einen Vergleichsabschnitt.
Haben DSPs eigentlich dedizierte Hardware, die FFT unterstützt? Ich frage aus echtem Interesse. Ich habe sie nie benutzt, aber vage würde ich erwarten, dass das hilft.
„TPUs sind bei Fourier-Transformationen so ineffizient, dass die Forschenden bei Sequenzen mit weniger als 4096 Elementen nicht den FFT-Algorithmus verwendeten, sondern eine Fourier-Transformationsimplementierung mit quadratischer Skalierung über eine vorberechnete DFT-Matrix wählten.“
„Auf einer Nvidia Quadro P6000 GPU machte die Fourier-Transformation in der FNet-Architektur bis zu 30 % der Inferenzzeit aus.“
Dieses Unternehmen behauptete 2021, Google könne die Inferenzzeit um 40 % senken, wenn es in seinen TPUs deren optische Chips einsetzte. Wenn FFTNet mehr Arbeit übernimmt, könnte die Reduktion noch größer ausfallen.
https://scribe.rip/optalysys/attention-fourier-transforms-a-...
Die Fourier-Transformation wird entlang der „Token“-Dimension angewendet. In vielen Anwendungen hat diese Dimension jedoch keine Bedeutung. Deshalb sind Transformer eine gute Wahl für die Verarbeitung permutationsinvarianter Daten.
Ich würde gern weitere Experimente mit der weniger bekannten Fourier-Transformation auf endlichen Gruppen sehen. Sie ist permutationsinvariant und teilt zugleich viele Eigenschaften mit der Standard-Fourier-Transformation.
Außerdem frage ich mich, falls das der nächste große Trend bei LLMs wird, wie leicht Inferenz-Engines wie vLLM oder llama.cpp das integrieren könnten.
https://en.wikipedia.org/wiki/Fourier_transform_on_finite_gr...
Soweit ich weiß, wendet llama je nach Position in der Eingabe eine Rotation auf den Vektor an.
Die Mathematik geht völlig über meinen Kopf hinweg, und selbst die Erklärungen rund um die Formeln verstehe ich nur knapp. Kann jemand in einfachen Worten erklären, inwiefern das dem Attention-Mechanismus gleichwertig ist?
Was ist hier mit Frequenz gemeint, und wie werden Positionsbeziehungen zwischen Tokens kodiert?
Bei Signalanalyse oder Bildern ist das am intuitivsten: https://homepages.inf.ed.ac.uk/rbf/HIPR2/fourier.htm
Der Frequenzraum ist im Wesentlichen ein „komplexer“ Raum, der durch komplexe Zahlen dargestellt wird. Frequenzen haben den Vorteil, ein Problem global zu betrachten.
Dieser Mechanismus ist nicht gleichwertig mit dem Attention-Mechanismus, und es gibt klare Trade-offs. Er könnte allerdings viele der wichtigen Beziehungen erfassen, die Attention erfasst.
Zu modReLU habe ich momentan keine gute Intuition, aber es scheint wichtig zu sein, weil es Frequenzen verändert und zugleich die inverse Fourier-Transformation erhält.
„Frequenz“ ist hier vermutlich etwas ziemlich Abstraktes. FFT wird häufig auch auf Weisen eingesetzt, die keine klare Frequenzinterpretation haben. Oft nutzt man sie wegen praktischer mathematischer Eigenschaften wie dem Faltungssatz.
Wenn das wirklich gut funktioniert, ist das ziemlich überraschend und sehr elegant.
Das heißt, jeder Vektor im Output hängt davon ab, wie der entsprechende Input-Vektor durch irgendeine Funktion aller anderen Input-Vektoren transformiert wird.
https://medium.com/optalysys/attention-fourier-transforms-a-...
Konzeptionell kann man sehen, wie das einer etwas vereinfachten Faltung ähnelt: https://openreview.net/pdf?id=8l5GjEqGiRG
Faltungen werden oft verwendet, wenn man auf irgendeine Weise den globalen Zustand berücksichtigen möchte.
Um kausales Masking in dieses Framework einzubauen, müsste man vermutlich n verschiedene FFTs machen; außerdem gibt es keine Erwähnung von Position Embeddings.
Daher scheint die Self-Attention-Implementierung zum Vergleich eine nicht-kausale NoPE-Variante zu sein. Wenn das stimmt, wäre das ein Fall einer absichtlich schwach gewählten Baseline und damit möglicherweise nicht besonders beeindruckend.
Wenn die Ergebnisse nahe am State of the Art gelegen hätten, hätten die Autoren das vermutlich erwähnt.
Scheint einschlägige Literatur dazu zu sein: https://arxiv.org/abs/2111.13587
Adaptive Fourier Neural Operators: Efficient Token Mixers for Transformers
John Guibas, Morteza Mardani, Zongyi Li, Andrew Tao, Anima Anandkumar, Bryan Catanzaro
Ich frage mich, ob es eine Intuition dafür gibt, warum die Betrachtung im Frequenzbereich hier hilfreich ist.
Die Gleichkomponente verstehe ich, aber ich würde nicht erwarten, dass die Eingabedaten periodisch genug sind, damit andere Frequenzen Bedeutung haben.
Die frühere Arbeit zum Hyena Operator, die schon vor einigen Jahren vollständiges Kontext-Mixing in O(n log n) gezeigt hat, scheint nicht erwähnt zu werden.
https://arxiv.org/abs/2302.10866
https://arxiv.org/abs/2111.00396
Die Big-O-Notation bekomme ich halbwegs eingeordnet, aber wie bei den meisten Dingen rund um Informatik oder Elektrotechnik geht mir auch das über den Kopf.
Aus der Perspektive von jemandem, der wirklich schlecht in Mathe ist, beneide ich Leute, die so etwas verstehen oder es zumindest so weit lernen können, dass sie einen Ingenieurabschluss und eine Berufszulassung bekommen.
Über FFT weiß ich ungefähr nur, dass sie Signale transformiert, für bestimmte Arten der Signalverarbeitung verwendet wird und früher, wie ich gehört habe, ein zentraler Bestandteil der Erkennung von Nuklearexplosionen war.
Die Grundidee ist: Fast jedes nützliche Signal lässt sich als Summe von Sinuswellen mit unterschiedlichen Frequenzen und Phasen darstellen. Elektrische Signale oder Schallwellen sind zum Beispiel eindimensionale Signale, bei denen die x-Achse die Zeit ist. Auf den ersten Blick können sie wie eine komplizierte, schwer handhabbare Zickzacklinie wirken.
Mit der Fourier-Transformation kann man die einzelnen Frequenzen eines zeitbasierten Signals isolieren. Danach kann man bestimmte Frequenzen nach Wunsch verändern. Wenn ein Signal zum Beispiel viel zufälliges, spitzes Rauschen enthält, zeigt sich das als hohe Frequenzen. Zum Bereinigen führt man eine Fourier-Transformation durch, verwirft Daten mit Frequenzen oberhalb eines bestimmten Schwellenwerts und wendet dann auf die verbleibenden Daten die inverse Fourier-Transformation an, um zu einer glatteren Version des ursprünglichen Signals zurückzukehren. Das nennt man Tiefpassfilter und es ist in etwa damit vergleichbar, einen gleitenden Mittelwert des ursprünglichen Signals zu bilden.
Interessant ist, dass sich das ziemlich intuitiv auf höhere Dimensionen erweitern lässt. Ein zweidimensionales Signal, bei dem sowohl x- als auch y-Achse räumlich sind, ist ein Bild. JPEG-Kompression basiert auf diesem Konzept. Um ein Bild kleiner zu speichern, entfernt man hochfrequente Signale und nimmt dafür in Kauf, feine Details zu verlieren oder, wenn man zu viel entfernt, ringförmige Artefakte zu erzeugen. Fügt man als dritte Dimension die Zeit hinzu, wird daraus Video, und das lässt sich weiter fortsetzen.
All das lässt sich visuell gut verstehen, sodass man eine gute Intuition bekommen kann, ohne die gesamte Mathematik im Detail zu kennen. Eine gute Seite mit vielen Visualisierungen und interaktiven Beispielen: https://www.jezzamon.com/fourier/index.html
Auch das Video von 3Blue1Brown erklärt es gut: https://youtu.be/spUNpyF58BY?si=dz0z-s8NftW3Htun
Die Fourier-Transformation, deren diskrete Version die FFT ist, zerlegt dieses eindimensionale Zeitbereichssignal in Komponenten aus Betrag und Phase über der Frequenz.
Frequenz ist im Grunde Tonhöhe. Eine reine Sinuswelle oder ein reiner Ton ähnelt dem Ton, den man früher spätabends beim Sendeschluss im Fernsehen hörte; in diesem Fall ist fast alles null, und an der Frequenzposition dieses Tons entsteht ein einzelner „Spike“. Je größer die Signalamplitude, desto größer ist auch dieser Spike. Wenn die Tonhöhe, also die Frequenz, steigt oder fällt, wandert die Position dieses Spikes entlang der horizontalen Achse nach oben oder unten.
Phase ist im Grunde der zeitliche Offset des Signals. Ein auf irgendeine Weise verzögerter Ton erscheint mit einer anderen Phase. Allerdings ist das keine absolute, sondern eine relative Messung. Die Einheit sind Radiant, also Winkel; nach einer vollen Umrundung des Kreises wird sie wieder „zurückgesetzt“, daher kann man nicht erkennen, ob ein Signal um 1 Sekunde oder 2 Sekunden verschoben wurde.
Aus einem Signal, also Amplitude über Zeit, gewinnt man tatsächlich zwei Informationen: Betrag und Phase über der Frequenz.
Wenn man imaginäre Zahlen oder komplexe Variablen versteht, sind diese beiden Signale eigentlich nur Betrag und Argument der FFT-Ausgabe, die eine komplexwertige Funktion ist.
Im Zeitalter der Telemetrie scheint es eine große verpasste Chance zu sein, FFT nicht auf Cloud-Telemetrie anzuwenden, um periodische Anomalien und metastabile Systeme zu finden, bevor etwas schiefgeht, statt erst danach.
Leider liegt das zwar auf einem Niveau, auf dem ich es erkennen kann, aber nicht auf einem Niveau, auf dem ich es implementieren könnte, und mein Kalender ist ohnehin schon voll.
„SLAs werden 23–25 Minuten nach dem Deployment eines Dienstes am wahrscheinlichsten verletzt. Hm, warum wohl … oh nein.“
Spaß beiseite: Der Bereich, in dem sich damit wirklich Geld verdienen ließe, wäre die Vorhersage von Traffic-Zyklen, um Server-Instanzen hoch- und herunterzufahren und so Kosten zu sparen.
So etwas würde eine Firma nie genehmigen, wenn man es in der Freizeit macht; als fertiges Produkt verpackt wäre es aber genau die Art von Arbeit, die eine Firma sofort kaufen würde.