Jedes Mal, wenn ein Prompt an Claude, GPT oder Gemini geht, laeuft im Kern derselbe Mechanismus: Attention. Er entscheidet, welche Teile der Eingabe fuer die Erzeugung jedes einzelnen Ausgabe-Tokens relevant sind. Dieser Artikel erklaert Attention von der Grundidee bis zu den Optimierungen, die Kontextfenster von 200K Tokens erst moeglich machen.
Intuition
Beim Lesen eines Satzes wie "Die Katze sass auf der Matte, weil sie muede war" loest das Gehirn automatisch auf, dass "sie" sich auf "Katze" bezieht -- nicht auf "Matte". Dafuer muss man zurueckschauen und die Relevanz jedes vorherigen Wortes bewerten.
Vor Attention haben rekurrente Netze (RNNs, LSTMs) eine Sequenz Token fuer Token verarbeitet und den gesamten bisherigen Kontext in einen einzigen Hidden State fester Groesse komprimiert. Das ist ein Informationsengpass: Bei langen Sequenzen geht der Anfang verloren, weil der Hidden State nicht unbegrenzt Kapazitaet hat.
Attention beseitigt diesen Engpass. Statt alles in einen Vektor zu pressen, kann das Modell bei jedem Schritt auf alle Positionen der Eingabe zurueckgreifen und dynamisch entscheiden, welche davon gerade relevant sind.
Technische Details
Scaled Dot-Product Attention
Die Grundidee laesst sich als Datenbank-Lookup verstehen. Gegeben sind drei Vektoren pro Token:
- Query (Q): "Wonach suche ich?" -- die Anfrage des aktuellen Tokens
- Key (K): "Was biete ich an?" -- ein Identifikator jedes anderen Tokens
- Value (V): "Was ist mein Inhalt?" -- die tatsaechliche Information, die zurueckgegeben wird
Das Dot-Product zwischen Query und Key ergibt einen Relevanz-Score. Hoher Score bedeutet: dieses Key-Value-Paar ist relevant fuer diese Query. Die Formel:
Attention(Q, K, V) = softmax(Q * K^T / sqrt(d_k)) * V
Die Skalierung durch sqrt(d_k) ist entscheidend. Ohne sie waechst die Varianz der Dot-Products mit der Dimension d_k. Bei hohen Dimensionen (typisch: 64-128 pro Head) werden einzelne Werte so gross, dass Softmax extrem spitze Verteilungen erzeugt -- fast One-Hot. Die Gradienten verschwinden, das Training stagniert. Die Skalierung haelt die Werte in einem Bereich, in dem Softmax sinnvolle Gradienten liefert.
Konkretes Beispiel. Drei Tokens, d_k = 4:
Q = [[1,0,1,0], K = [[1,1,0,0], V = [[0.1, 0.2],
[0,1,0,1], [0,0,1,1], [0.3, 0.4],
[1,1,0,0]] [1,0,1,0]] [0.5, 0.6]]
Scores = Q * K^T / sqrt(4)
= Q * K^T / 2
Q * K^T = [[1, 1, 1],
[1, 1, 0],
[1, 1, 1]]
Skaliert: [[0.5, 0.5, 0.5],
[0.5, 0.5, 0.0],
[0.5, 0.5, 0.5]]
Nach Softmax (zeilenweise):
Token 0: [0.33, 0.33, 0.33] -- gleichmaessig
Token 1: [0.39, 0.39, 0.22] -- weniger Attention auf Token 2
Token 2: [0.33, 0.33, 0.33] -- gleichmaessig
Output = Softmax-Gewichte * V (gewichtete Summe der Values)
Jedes Token erhaelt eine gewichtete Mischung aller Value-Vektoren, proportional zu den Attention-Gewichten.
Self-Attention
Bei Self-Attention stammen Q, K und V aus derselben Sequenz. Jedes Token wird durch drei gelernte Gewichtsmatrizen projiziert:
Q = X * W_Q
K = X * W_K
V = X * W_V
Dabei ist X die Eingabematrix (n Tokens x d_model). Die Matrizen W_Q, W_K, W_V (Groesse d_model x d_k) sind trainierbare Parameter. Durch unterschiedliche Projektionen kann ein Token als Query etwas anderes "fragen" als es als Key "anbietet".
Jedes Token attendiert auf alle anderen -- inklusive sich selbst. Das ergibt eine n x n Attention-Matrix. Die Rechenkomplexitaet ist O(n^2 * d), wobei n die Sequenzlaenge und d die Modelldimension ist. Diese quadratische Abhaengigkeit von n ist der zentrale Kostentreiber bei langen Kontexten.
Multi-Head Attention
Ein einzelner Attention-Kopf kann nur eine Art von Beziehung gleichzeitig modellieren. Multi-Head Attention loest das, indem h parallele Attention-Koepfe mit unterschiedlichen Projektionsmatrizen arbeiten:
head_i = Attention(X * W_Q_i, X * W_K_i, X * W_V_i)
MultiHead(Q, K, V) = Concat(head_1, ..., head_h) * W_O
Jeder Kopf lernt andere Muster: syntaktische Abhaengigkeiten, semantische Aehnlichkeit, Positionsrelationen, Koreferenz. Die Ausgaben werden konkateniert und durch eine weitere Projektion W_O zusammengefuehrt.
Moderne Modelle verwenden 32 bis 128 Koepfe. GPT-4-Klasse-Modelle typischerweise 96-128, kleinere Modelle wie Gemma 2 oder Mistral Small um die 32.
Cross-Attention
Bei Cross-Attention kommt Q aus einer Sequenz, K und V aus einer anderen. Der klassische Anwendungsfall: im Encoder-Decoder-Transformer attendiert der Decoder (Q) auf die Encoder-Ausgabe (K, V). So fliesst Information von der Eingabe in die Ausgabe.
Cross-Attention ist auch zentral in multimodalen Modellen. Vision-Language-Modelle wie Flamingo oder LLaVA verwenden Cross-Attention, damit Sprachtoken auf visuelle Features zugreifen koennen.
Flash Attention
Standard-Attention materialisiert die vollstaendige n x n Attention-Matrix im GPU-Speicher. Bei n = 128K Tokens sind das 128K x 128K = 16 Milliarden Eintraege -- allein fuer die Attention-Scores einer Schicht. Das sprengt jeden GPU-Speicher.
Flash Attention (Dao et al., 2022) loest das durch einen algorithmischen Trick: Die Berechnung wird in Bloecke (Tiles) zerlegt, die jeweils in den schnellen SRAM der GPU passen. Die zentrale Innovation ist der Online-Softmax-Algorithmus, der Softmax inkrementell berechnet, ohne je die vollstaendige Zeile im Speicher zu halten.
Das Ergebnis ist mathematisch identisch mit Standard-Attention, aber:
- Speicher: O(n) statt O(n^2)
- Geschwindigkeit: 2-4x schneller durch bessere Nutzung der Speicherhierarchie (weniger HBM-Zugriffe)
- Exaktheit: Kein Approximationsfehler -- das Ergebnis ist bitidentisch
Flash Attention 2 (2023) optimiert die Parallelisierung ueber Sequenzlaenge und Batch-Dimension. Flash Attention 3 (2024) nutzt Hardware-Features neuerer GPUs (Hopper-Architektur, FP8). Diese Optimierungen sind der Grund, warum Claude 200K Tokens und Gemini bis zu 1M Tokens verarbeiten kann.
Grouped Query Attention (GQA)
Bei Standard-Multi-Head-Attention hat jeder der h Koepfe eigene K- und V-Projektionen. Waehrend der Inferenz muessen die K- und V-Vektoren aller bisherigen Tokens im sogenannten KV-Cache gespeichert werden. Bei 128 Koepfen und langen Kontexten wird dieser Cache zum Speicherengpass.
Grouped Query Attention (Ainslie et al., 2023) teilt die Query-Koepfe in Gruppen und laesst jede Gruppe K und V teilen. Beispiel: 32 Query-Koepfe mit 8 KV-Gruppen bedeuten, dass je 4 Query-Koepfe dasselbe K/V-Paar nutzen. Das reduziert den KV-Cache um den Faktor 4 bei minimalem Qualitaetsverlust.
GQA ist Standard in aktuellen Modellen: Llama 3 (8 KV-Koepfe bei 32 Query-Koepfen), Mistral, Gemma 2 und DeepSeek-V3 verwenden es. Es ist der entscheidende Hebel, um Inferenzkosten bei langen Kontexten kontrollierbar zu halten.
Praxis-Relevanz
Attention ist keine theoretische Abstraktion -- es bestimmt die konkreten Eigenschaften der Modelle, mit denen Entwickler taeglich arbeiten:
- KV-Cache und Kosten: Jeder zusaetzliche Token im Kontext vergroessert den KV-Cache. Deshalb werden lange Konversationen langsamer und teurer. Wer Kosten optimiert, haelt den Kontext kurz.
- Kontextfenster: Ohne Flash Attention waeren Kontextfenster jenseits von 8K Tokens auf aktueller Hardware unpraktikabel. Die Kombination aus Flash Attention und GQA ermoeglicht die 128K-1M-Fenster aktueller Modelle.
- Positionseffekte: Attention ist nicht gleichmaessig verteilt. Tokens am Anfang des Kontexts erhalten oft ueberproportional hohe Attention-Gewichte ("Attention Sinks"). Das erklaert, warum System-Prompts am Anfang stehen und warum Instruktionen in der Mitte langer Kontexte manchmal ignoriert werden ("Lost in the Middle"-Effekt).
- Prompt Engineering: Wer versteht, dass jedes Token gegen jedes andere Token konkurriert, strukturiert Prompts anders. Relevante Informationen gehoeren an den Anfang oder ans Ende, nicht in die Mitte.
Quellen
- Vaswani et al. "Attention Is All You Need" (2017) -- NeurIPS
- Dao et al. "FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness" (2022) -- NeurIPS
- Ainslie et al. "GQA: Training Generalized Multi-Query Transformer Models from Multi-Head Checkpoints" (2023) -- EMNLP
- Jay Alammar "The Illustrated Transformer" -- Visualisierte Erklaerung
- Liu et al. "Lost in the Middle: How Language Models Use Long Contexts" (2023) -- Stanford/Berkeley