Was ein Sprachmodell vorhersagt
Ein probabilistischer Fortsetzungs-Engine
Ein Sprachmodell nimmt eine Sequenz von Tokens & weist eine Wahrscheinlichkeitsverteilung darüber zu, welches Token als Nächstes kommt. Füttern Sie es mit the cat sat on the & es gibt Wahrscheinlichkeiten über das gesamte Vokabular aus: hohe Masse auf mat, floor, couch; niedrige Masse auf xylophone, Tuesday.
Durch Sampling dieser Verteilung, Anhängen eines Tokens & Zurückfüttern: Diese Schleife erzeugt Text Token für Token. Autoregressive Generierung, benannt, weil jeder Schritt auf seiner eigenen vorherigen Ausgabe regressiert.
Drei Zahlen definieren ein Sprachmodell
Vokabulargröße (V). Wie viele unterschiedliche Token ein Modell erzeugen kann. ANDREA-12M verwendete 4.353 Token; ANDREA-120M verwendet 8.449.
Kontextfenster (T). Wie viele Token in einen Forward-Pass passen. ANDREA-Modelle verwenden T = 1.024.
Parameteranzahl (P). Wie viele gelernte Gewichte darin enthalten sind. 12M, 120M & 480M benennen eine Familie nach P.
Eine Familie aus Drei
| Variante | d_model | Köpfe | Schichten | Kontext | Parameter |
|---|---|---|---|---|---|
| ANDREA-12M | 384 | 12 | 6 | 1024 | 12,8M |
| ANDREA-120M | 768 | 12 | 12 | 1024 | ~120M |
| ANDREA-480M | 1536 | 24 | 16 | 1024 | ~480M |
Drei Skalenparameter: d_model (Breite jedes internen Vektors), n_layer (Tiefe der gestapelten Transformer-Blöcke), n_head (parallele Attention-Projektionen). Vokabular & Kontext bleiben in der Familie fest.
Die Family-Tabelle lesen
Warum Klein wichtig ist
Zwang als Befreiung
Große Sprachmodelle mit Hunderten von Milliarden Parametern erfordern Tausende von GPUs, proprietäre Datensätze und Unternehmensbudgets. Wenige Menschen können eines trainieren. Wenige Menschen können eines reparieren.
Ein kleines Sprachmodell auf einer GPU kehrt das um. Jeder mit einer 4090 (oder einer 3060) kann ANDREA aus offenen Daten reproduzieren. Das Trainingsrezept dient gleichzeitig als Modellkarte. Offener Code, offene Gewichte, offene Daten; volle Herkunftsnachverfolgung in 72 Stunden Rechenzeit.
Kapazität vs. Qualität
Kleinere Modelle können ihren Trainingskorpus nicht auswendig lernen. ANDREA-12M mit 12,8 Mio. Parametern fehlt die Kapazität, faktenbasierten Inhalt zu speichern; es lernt Gesprächsstruktur, Vokabelverteilung und Antwortform. ANDREA-120M mit 10× Kapazität lernt faktenbasiertes Abrufen, mehrabsatzige Kohärenz und Fachbreite (verifiziert durch externe Bewertung mit 9,5/10 bei Biologie- und Signalverarbeitungsproben).
Die wichtigste Erkenntnis: Die Kapazität setzt eine Obergrenze. Der Lehrplan entscheidet, ob diese Obergrenze erreicht wird. Aktivitäten 14-23 decken den Lehrplan ab. [TITLE decoder_only/]
Drei Transformer-Varianten
Encoder, Decoder, Beides
Der ursprüngliche Transformer (Vaswani et al., 2017) enthielt einen Encoder & einen Decoder, die für Übersetzungen zusammengefügt wurden. Drei architektonische Linien stammen aus diesem Paper ab:
Encoder-only (BERT-Linie). Bidirektionale Attention, keine kausale Maske. Optimiert für Klassifikation, nicht für Generierung. Ein Token sieht während des Trainings sowohl seine Vergangenheit als auch seine Zukunft.
Encoder-Decoder (T5, BART). Der Encoder liest den Input; der Decoder generiert den Output und verwendet Cross-Attention auf den Encoder. Verwendet für Übersetzung, Zusammenfassung.
Decoder-only (GPT, ANDREA). Causale Maske: Jedes Token sieht nur seine Vergangenheit. Trainiert, das nächste Token vorherzusagen. Generierung ist kostenlos; Training & Inferenz teilen denselben Forward-Pass.
Warum Decoder-Only auf einer GPU gewinnt
Drei Gründe:
1. Einzelnes Ziel. Next-Token-Vorhersage funktioniert mit jedem Text. Kein gepaartes Quell-/Zielmaterial nötig.
2. Symmetrie bei Training & Inference. Gleicher Forward-Pass, keine spezielle Generierungslogik.
3. Einfachheit des Speichers. Keine Cross-Attention; ein Stack von Layern; ein Aktivierungsfluss.
ANDREA erbt die decoder-only-Wahl von microGPT, die von nanoGPT geerbt wurde, die von GPT-2 geerbt wurde. Die Linie bleibt standard; was sich ändert, liegt in Tokenization, Training-Infrastruktur & Curriculum.
Warum Decoder-Only für ANDREA
Was passt in 24 GB
Bytes pro Parameter
Eine RTX 4090 wird mit 24 GB VRAM ausgeliefert. Das Training von ANDREA-12M benötigte 1,4 GB. ANDREA-120M benötigte deutlich mehr. Der Unterschied ergibt sich aus einer einfachen Bilanzierungsübung: Jedes Parameter erscheint mehrmals im Speicher während des Trainings.
Für jeden Parameter hält das Training:
- Das Gewicht selbst (1× Gewicht)
- Adam erstes Moment (m): gleiche Form wie Gewicht (1× Gewicht)
- Adam zweites Moment (v): gleiche Form wie Gewicht (1× Gewicht)
- Gradienten: gleiche Form wie Gewicht (1× Gewicht)
- Aktivierungen & Temporäre: ~2-4× Gewicht (variiert mit Batch & Kontext)
Gesamt: ~6-8× die Gewichtsanzahl, in Bytes bestimmt durch Präzision.
Präzision multipliziert alles
| Präzision | Bytes/Param | Gesamt für 120M Gewichte | Hinweise |
|---|---|---|---|
| FP32 | 4 | 480 MB | Basislinie; sicherste, langsamste |
| FP16 | 2 | 240 MB | cuBLAS, halber Speicher |
| FP8 E4M3 | 1 | 120 MB | Tensor-Kerne, NaN-Risiko |
Multipliziere mit 6-8× für den vollständigen Trainings-Fußabdruck. ANDREA-120M trainiert bequem in FP16 (~2 GB für Gewichte + Optimizer + Grads); FP8 E4M3 halbiert die Trainingszeit auf RTX 4090 Tensor-Kernen.
Aktivität 13 (grow_a_language_model_precision) beleuchtet die FP-Präzisions-Kompromisse im Detail.
Größe des Optimizer-States von ANDREA-120M
Fünfundzwanzig Aktivitäten
Zwei Hälften
Dieser Kurs teilt sich klar. Die erste Hälfte behandelt, was microGPT dem Fachgebiet beigebracht hat: ein Transformer, der auf einer GPU läuft. Die zweite Hälfte behandelt ANDREA's tatsächlichen Beitrag: ein Curriculum, das lernt.
Hälfte 1: Ein Transformer auf einer GPU (Aktivitäten 2-13)
| # | Aktivität | Meilenstein |
|---|---|---|
| 2 | Harris-Morphem-Tokenizer | distributionelle Segmentierung, 256+N+1 Vokabular |
| 3 | Tokenizer-Diät-Ausrichtung | Sättigungspunkt, warum 12M 63,6 % verschwendet |
| 4 | Embeddings & Position | gelernte Token- + Positionsnachschlage |
| 5 | Skalierte Dot-Product-Aufmerksamkeit | Q·Kᵀ/√d, kausale Maske, Softmax |
| 6 | Multi-Head-Aufmerksamkeit | Head-Aufteilungen, parallele Projektionen |
| 7 | Transformer-Block | MLP, Residuums, Layer-Norm |
| 8 | Kreuzentropie & Perplexität | Log-Wahrscheinlichkeit, SMMA-Verlust |
| 9 | Backprop in custom CUDA | Kettenregel über microgpt_cuda.cu |
| 10 | AdamW | entkoppelte Gewichtszerfall; warum vanilla Adam starb |
| 11 | LR-Warmup + Cosinus-Abfall | 2000-Schritt-Rampe; warum sofortiger Peak 120M zerstört |
| 12 | Gradienten-Clipping | globaler L2-Norm; 3 CUDA-Kernel |
| 13 | FP32 / FP16 / FP8 E4M3 | Präzisionsabwägungen; Tensor-Cores |
Hälfte 2: Ein Curriculum, das lernt (Aktivitäten 14-24)
| # | Aktivität | Beat |
|---|---|---|
| 14 | Multi-armed Bandits | UCB1, Exploration vs. Ausbeutung |
| 15 | Phasenbasierte Würfelsteuerung | 7/14/21/28/42 Phasen, 1d3/1d4 Würfel |
| 16 | Belohnungszuordnung & EMA | pro-Quelle-Verlust-EMA, 1000× Skalierung |
| 17 | Quellenböden & Epochenstrafe | 1/(1+epochs) verhindert Memorierung |
| 18 | Abdeckungsbonus | dokumentenweites Tracking, 1.3× Frische |
| 19 | Curriculum-Aufwärmphase | 7 Chat-/Prosaquellen erste 20K Schritte |
| 20 | Filterung nach Form, nicht Zeichen | has_system_prompt_shape() |
| 21 | Kohärenz-gesteuertes frühes Stoppen | bigram/trigram/word/char auto-halt |
| 22 | Checkpoint, Fortsetzen, Signale | Format, SIGTERM/SIGUSR1, loss.json Kontinuität |
| 23 | Stichproben-Audit & externe Bewertung | Auslesen eines Laufs, 9,5/10 Bereich |
| 24 | Von microGPT zu ANDREA-120M | v1 Kollaps, v2 Korrekturen, v2.5 Patch, v3 Politur |
Plus ein Begleiter: geometry_of_andrea betrachtet jede Schicht als Geometrie (Einbettungsraum, Attention als Projektion, Verlustoberfläche, Bandit als Spaziergang auf einem diskreten Simplex).
Empfohlene Reihenfolge
Aktivitäten 2-13 bauen einen funktionsfähigen Transformer auf. Springe vor zu Teil 2, wenn du bereits Transformers trainiert hast; kehre zurück, wenn die Neugier zuschlägt.
Jede Aktivität steht möglichst für sich. Mathematische Verweise nennen frühere Aktivitäten beim Namen (siehe Aktivität 5: scaled dot-product attention). Code-Verweise zeigen auf microgpt/microgpt_cuda.cu & microgpt/training_proxy.py in ~/git/uncloseai-cli/.