Ein ganzes GPT in 200 Zeilen – Schritt für Schritt im Debugger.
microgpt ist eine einzige Python-Datei ohne Abhängigkeiten, die ein GPT trainiert und benutzt: Datensatz, Tokenizer, Autograd, Transformer, Adam, Trainings- und Inferenzschleife. „Alles andere ist nur Effizienz.“ Hier gehst du jede Zeile vor und zurück durch – mit echten Zahlen aus einem echten Modell.
- 4.192
- Parameter
- 27
- Token (a–z + BOS)
- 2,35
- Verlust nach 1.000 Schritten
- kalia, cami
- erfundene Namen
🧩 Die sieben Bausteine
Die Gliederung von Karpathys Artikel – jeder Baustein hat eine eigene Debugger-Lektion.
🧭 Die Lektionen
Sechs Ausschnitte aus microgpt.py, die du wie im Debugger durchläufst – mit Haltepunkten, Step Over und Rückwärtsschritten.
🪜 Schicht für Schicht wie eine Zwiebel
Karpathys empfohlene Reihenfolge aus build_microgpt.py – jede Stufe fügt genau einen Baustein hinzu.
| Datei | fügt hinzu | Worum es geht |
|---|---|---|
| train0.py | Bigramm-Zähltabelle – kein neuronales Netz, keine Gradienten | Zählt, wie oft Buchstabe B auf Buchstabe A folgt, und zieht daraus. Die einfachste mögliche Sprachmodell-Idee. |
| train1.py | MLP + manuelle Gradienten (numerisch und analytisch) + SGD | Ein kleines Netz ersetzt die Tabelle. Die Ableitungen werden noch von Hand hergeleitet und numerisch geprüft. |
| train2.py | Autograd (Klasse Value) ersetzt die manuellen Gradienten | Jede Operation merkt sich ihre lokale Ableitung, backward() wendet die Kettenregel automatisch an. |
| train3.py | Positions-Embeddings + Single-Head-Attention + RMSNorm + Residuals | Das Modell kann erstmals auf frühere Positionen schauen; Normalisierung und Residualstrom stabilisieren das Training. |
| train4.py | Multi-Head-Attention + Schichten-Schleife – volle GPT-Architektur | Mehrere Heads parallel und beliebig viele Transformer-Blöcke übereinander. |
| train5.py | Adam-Optimizer – das ist train.py / microgpt.py | Adam mit Bias-Korrektur und linearem Lernraten-Abfall ersetzt einfaches SGD. |
🏭 microgpt vs. ChatGPT
Was sich auf dem Weg zum produktiven Sprachmodell ändert – am Kernalgorithmus nichts.
Daten
Tokenizer
Autograd
Architektur
Training
Optimierung
Post-Training
Inferenz
💬 Häufige Fragen
Aus dem FAQ des Artikels.
Mechanisch passiert keine Magie: Das Modell ist eine große mathematische Funktion, die Eingabe-Token auf eine Wahrscheinlichkeitsverteilung für das nächste Token abbildet. Ob man das „Verstehen“ nennt, ist eine philosophische Frage – der Mechanismus steckt vollständig in den 200 Zeilen.
📖 Glossar
Die Begriffe aus microgpt kurz erklärt.
BOS
DatenBeginning of Sequence – Sondertoken, das Anfang und Ende eines Dokuments markiert.
tokens = [BOS] + … + [BOS]Token
DatenEin diskretes Symbol, mit dem das Modell rechnet. Bei microgpt ein Buchstabe oder BOS, in großen Modellen meist ein Wortstück.
uchars.index(ch)Halluzination
InferenzPlausibel klingende, aber nicht reale Ausgabe – Folge des Ziehens aus einer Wahrscheinlichkeitsverteilung.
Temperatur
InferenzTeilt die Logits vor der Softmax: klein = konservativ, groß = vielfältig.
softmax([l / temperature …])Attention
ModellMechanismus, mit dem eine Position auf frühere Positionen schaut: Query · Key → Gewichte → gewichtete Summe der Values.
softmax(q·k / √d)Embedding
ModellGelernter Vektor, der ein Token (wte) oder eine Position (wpe) repräsentiert.
state_dict['wte'][token_id]KV-Cache
ModellSpeicher der Keys und Values früherer Positionen, damit sie nicht neu berechnet werden müssen.
keys[li].append(k)Logits
ModellRohe, unnormierte Bewertungen pro möglichem nächsten Token – vor der Softmax.
logits = linear(x, lm_head)MLP
ModellZweischichtiges Netz pro Position: 16 → 64 → ReLU → 16. Hier „denkt“ das Modell lokal.
linear → relu → linearResidualverbindung
ModellDas Ergebnis eines Blocks wird zum Eingang addiert – Informationen und Gradienten fließen ungehindert durch.
x = [a + b for …]RMSNorm
ModellSkaliert einen Vektor auf mittlere Größe 1 und stabilisiert so das Training (einfachere Variante von LayerNorm).
rmsnorm(x)Softmax
ModellMacht aus beliebigen Zahlen eine Wahrscheinlichkeitsverteilung (alle Werte zwischen 0 und 1, Summe 1).
softmax(logits)Adam
TrainingOptimizer mit Schwung (m) und angepasster Schrittweite (v) je Parameter, plus Bias-Korrektur.
p.data -= lr * m_hat / (√v_hat + eps)Backpropagation
TrainingRückwärtslauf durch den Rechengraphen, der per Kettenregel alle Gradienten berechnet.
loss.backward()Kreuzentropie
TrainingVerlust −log p(richtiges Token): 0 bei Sicherheit, groß bei Überraschung. Raten unter 27 Token ergibt 3,30.
-probs[target_id].log()📎 Quellen
Andrej Karpathy: „microgpt“, Blogartikel vom 12.02.2026 · Datensatz names.txt aus makemore. Die App rechnet microgpt in TypeScript nach (Zufallsgenerator Mulberry32 statt Pythons Mersenne Twister – daher andere Einzelzahlen, gleicher Algorithmus).