Wie moderne LLMs mit lokaler Aufmerksamkeit und verteiltem Compute unbegrenzte Kontexte ermöglichen
Standard Self-Attention hat eine quadratische Komplexität O(n²) in Speicher und Zeit. Für lange Sequenzen wird dies schnell unmöglich:
Bei 128K Tokens: 128K × 128K = 16.3 Mrd. Zahlen. Bei 32-Bit Precision = 64 GB RAM nur für Attention!
Während Inference muss das Modell alle bisherigen K/V-Vektoren speichern. Mit Sequenzen wächst dies unkontrolliert.
Jedes neue Token muss mit allen bisherigen verglichen werden. Zeit = O(n) pro Token, total O(n²) für Sequenz.
Idee: Tokens müssen nicht mit der gesamten Historie kommunizieren. Stattdessen kann jedes Token nur mit den letzten W Tokens kommunizieren. Dies reduziert die Komplexität von O(n²) auf O(n×W).
Beispiel: Mistral 7B mit W=4,096
| Metrik | Standard Attention | Sliding Window (W=4K) | Einsparung |
|---|---|---|---|
| 100K Tokens | Attention: 10 Mrd. ops | 409 Mio. ops | ~24× |
| Memory (KV) | 20 GB (unbegrenzt) | 800 MB (bounded) | ~25× |
| Latenz/Token | O(n) | O(W) = O(1) | Linear |
Ein Token kann in einer einzigen Schicht nur W Tokens sehen. Aber Information propagiert aufwärts durch das Netzwerk! Dies ist der entscheidende Punkt: Das effektive rezeptive Feld = W × Anzahl der Schichten.
| Modell | Window Size W | Schichten L | Effektive Reichweite | Praktisch |
|---|---|---|---|---|
| Mistral 7B | 4,096 | 32 | 131,072 | Long-Docs OK |
| Llama 2 70B | Full (kein SWA) | 80 | 4,096 (training) | Pre-trained limit |
| Llama 3 | 8,192 (variantenweise) | 80 | ~655K | Very Long Docs |
Sliding Window hilft bei einzelnen GPUs. Aber für 1M+ Token Kontexte, bei denen man volle Attention braucht (nicht nur lokal), nutzen Forscher Ring Attention.
Die Idee: Verteile die Sequenz auf N GPUs in einer Ringopologie. K/V Blöcke zirkulieren im Ring, während jede GPU ihre Query-Tokens mit allen K/V Blöcken verrechnet.
Kontextlänge ∝ Anzahl GPUs
Mit N GPUs: Context = (Single GPU Context) × N
2 GPU = 2× Context, 4 GPU = 4×, usw.
Jede GPU speichert nur 1/N der Sequenz.
Speicher pro GPU bleibt konstant!
Ermöglicht 1M Token mit begrenzbarem Speicher.
Ring-Topologie minimiert Bandbreite.
Vollständige Attention erreicht (kein Approximation).
Aber: ~10-30% Latenz-Overhead.
Um wirklich lange Kontexte zu ermöglichen, werden mehrere Techniken kombiniert:
| Optimierung | Einsparung | Technik |
|---|---|---|
| Flash Attention 2/3 | ~4× Memory | IO-Aware Attention Computation |
| GQA (8 KV-Heads) | ~8× KV-Cache | Grouped Query Attention (Llama 2 70B nutzt dies) |
| INT8 Quantization | ~2× KV-Cache | KV-Cache auf 8-bit statt 16-bit |
| Combined Effect | ~64× gesamt | Multipliziert sich: 4 × 8 × 2 = 64 |
1M+ tokens
Proprietary optimizations vermutlich basierend auf Flash Attention + MQA + Distributed Attention.
200K tokens
Effiziente Attention Mechanisms + Kontextfenster Design für praktische Arbeitslasten.
128K tokens
Optimized inference mit effizienten Aufmerksamkeitsmechanismen für lange Prompts.
| Technik | Formel | Komplexität | Qualität |
|---|---|---|---|
| Full Attention | Attn(Q, K, V) | O(n²) | Baseline |
| Sliding Window | Attn(Q, K[-W:], V[-W:]) | O(n×W) | -0-3% |
| Strided Attn | Local + every k-th | O(n×W + n²/k) | -2-5% |
| Blockwise | Blocks only talk to blocks | O(n²/B²) | -5-10% |
| Longformer | Local + global tokens | O(n×W + n×G) | -1-4% |
Eine neuere Variante: Keep initial tokens forever. Beobachtung: Die ersten 4 Tokens erhalten überproportional viel Attention über alle Positionen. Dies sind „Sink Tokens".
Dynamisch: Behalte Tokens mit höchster Attention Score. Eviction basiert auf Content, nicht nur Position.
Komprimiere distante Tokens (pooling). Attention zu compressed representations für alte Teile.
Nicht alle Token müssen mit allen reden. Lokale Muster reichen für viele Aufgaben.
Information breitet sich durch Schichten aus. ERF = W × L ermöglicht effektiv lange Kontexte.
Sliding Window Memory O(n) statt O(n²). Einfach aber kraftvoll für prakti sche Szenarien.
Verteilte Attention via Ring Topology ermöglicht wahre 1M+ Token mit voller Attention.
Flash Attention + GQA + Quantization + Position Encoding = 64× besser. Komplett-Stack nötig.
Einige Tokens sind „wichtiger" (höhere Attention). Bewusste Eviction ≫ einfache Fenster.