- MicroGPT ist eine minimale Implementierung eines GPT-Modells, geschrieben in 200 Zeilen reinem Python-Code, und so aufgebaut, dass sich die Kernstruktur großer Sprachmodelle visuell nachvollziehen lässt
- Es wird mit einem Datensatz aus 32.000 menschlichen Namen trainiert, erzeugt neue Namen und visualisiert Tokenisierung, Vorhersage, Verlustberechnung und Backpropagation Schritt für Schritt
- Wichtige GPT-Bausteine wie Softmax, Cross-Entropy Loss, Backpropagation, Embedding und Attention werden zusammen mit dem Code erklärt
- Im Trainingsprozess wird der Adam-Optimierer verwendet, um den Loss schrittweise zu senken; anschließend werden über Temperatursteuerung (Temperature Sampling) unterschiedliche Namen erzeugt
- Als vereinfachte Form des Kernalgorithmus großer Modelle wie ChatGPT ist es ein Lernmaterial, das das Innenleben von LLMs verständlich macht
Überblick über MicroGPT
- Basierend auf einem 200-Zeilen-Python-Skript von Andrej Karpathy wird der Trainings- und Inferenzprozess eines GPT-Modells visuell erklärt
- Implementiert ausschließlich in reinem Python ohne externe Bibliotheken
- Enthält denselben grundlegenden Algorithmus wie große Sprachmodelle à la ChatGPT
- Der Artikel zeigt durch einen anfängerfreundlichen visuellen Ansatz jede Phase des Modells Schritt für Schritt
Datensatz und Trainingsziel
- Als Trainingsdaten werden 32.000 menschliche Namen (z. B. emma, olivia, ava) verwendet
- Jeder Name wird als ein Dokument betrachtet, und das Modell lernt die Zeichenmuster von Namen
- Nach dem Training erzeugt es neue Namen wie „kamon“, „karai“, „anna“ und „anton“
- Das Modell lernt statistische Beziehungen zwischen Zeichen, Namenslängen sowie lautliche Muster am Anfang und Ende von Namen
Wie Text in Zahlen umgewandelt wird
- Da neuronale Netze nur Zahlen verarbeiten, wird jedes Zeichen in eine ganzzahlige ID umgewandelt
- a–z werden als 0–25 kodiert, BOS (Beginning of Sequence) als 26
- Das BOS-Token markiert Anfang und Ende eines Namens
- Das tiktoken von GPT-4 tokenisiert statt einzelner Zeichen auf Basis von Zeichensegmenten, das Grundprinzip ist jedoch identisch
Vorhersage des nächsten Tokens
- Das Modell sagt im gegebenen Kontext das nächste Zeichen voraus
- Beispiel: [BOS] → „e“, [BOS, e] → „m“, [BOS, e, m] → „m“, [BOS, e, m, m] → „a“
- Jeder Schritt erzeugt ein Paar aus Eingabe (Kontext) und Ziel (nächstes Zeichen); dieses Verfahren ist dasselbe wie bei ChatGPT
Softmax und Wahrscheinlichkeitsberechnung
- Die Modellausgabe besteht aus 27 Logits, die per Softmax in Wahrscheinlichkeiten umgewandelt werden
- Jeder Logit wird exponentiert und anschließend durch die Summe geteilt, um eine Wahrscheinlichkeitsverteilung zu erzeugen
- Das Abziehen des Maximalwerts dient der Stabilisierung, um Overflow zu vermeiden
- Das Softmax-Ergebnis zeigt die Wahrscheinlichkeit dafür, welches Token als Nächstes erscheint
Verlustberechnung: Cross-Entropy
- Die Genauigkeit der Vorhersage wird als −log(p) berechnet
- Je höher die Wahrscheinlichkeit der richtigen Antwort, desto kleiner der Loss; je näher an 0, desto größer der Loss
- Bei p=1 ist der Loss 0, bei p→0 geht der Loss gegen unendlich
- Das Training verläuft in Richtung der Minimierung dieses Loss
Backpropagation
- Ausgehend vom Loss wird berechnet, wie stark jeder Parameter den Loss beeinflusst
- Die Ableitung erfolgt über einen Rechengraphen, in dem alle Operationen (add, multiply, exp, log usw.) als Knoten dargestellt sind
- Jeder Knoten speichert Eingaben und lokale Ableitungen und propagiert die Gradienten rückwärts
- Beispiel: L = a⋅b + a (a=2, b=3) → der Gradient von a ist 4.0 (Summe aus zwei Pfaden)
- Dasselbe Prinzip wie bei
loss.backward() in PyTorch
Embedding
- Jede Token-ID wird in einen 16-dimensionalen Vektor umgewandelt, der Bedeutung lernt
- Token-Embedding und Positions-Embedding werden addiert und als Eingabe verwendet
- Je nach Position kann dasselbe Zeichen eine andere Rolle haben
- Nach dem Training haben ähnliche Zeichen (z. B. Vokale) ähnliche Vektoren
Attention
- Jedes Token erzeugt Query-, Key- und Value-Vektoren
- Über das Skalarprodukt von Query und Key wird Relevanz berechnet, Softmax liefert die Gewichte
- Das gewichtete Mittel der Values wird als Ausgabe verwendet
- Mit einer Causal Mask wird verhindert, dass auf zukünftige Tokens zugegriffen wird
- Vier Attention Heads arbeiten parallel und lernen unterschiedliche Muster
Gesamte GPT-Struktur
- Eingabe-Tokens durchlaufen die folgenden Schritte
- Embedding + Positions-Embedding
- RMSNorm-Normalisierung
- Multi-Head-Attention
- Residual-Verbindung
- MLP (Erweiterung auf 64 Dimensionen → ReLU → Reduktion auf 16 Dimensionen)
- Erneute Residual-Verbindung, danach Berechnung der Ausgabe-Logits
- Residual-Verbindungen verhindern verschwindende Gradienten
- RMSNorm hält die Größenordnung der Aktivierungen stabil und verbessert so die Trainingsstabilität
Trainingsschleife
- 1.000 Trainingsiterationen
- Namen auswählen → tokenisieren → Forward Pass → Loss berechnen → Backpropagation → Parameter aktualisieren
- Verwendung des Adam-Optimierers
- Stabile Konvergenz durch Momentum und adaptive Lernrate
- Der anfängliche Loss sinkt von etwa 3,3 auf 2,37
- Die erzeugten Namen entwickeln sich von zufällig zu zunehmend natürlich wirkend
Inferenz und Sampling
- Nach dem Training beginnt die Generierung mit BOS und sagt dann wiederholt das nächste Token voraus
- Die Erzeugung läuft, bis BOS erneut erscheint
- Mit Temperature wird die Vielfalt des Samplings gesteuert
- Niedrige Werte sind deterministischer (durchschnittlicher), hohe Werte kreativer, aber instabiler
- Eine geeignete Temperatur für die Namensgenerierung liegt bei etwa 0,5
- Beispielausgabe: „karai“
Effizienz und Skalierbarkeit
- MicroGPT ist eine vollständige, vereinfachte Implementierung des Kernalgorithmus von GPT
- Der Unterschied zu ChatGPT liegt nur in der Größenordnung
- Statt 32.000 Namen und 4.192 Parametern geht es dort um Billionen Tokens und Hunderte Milliarden Parameter
- Statt skalarer CPU-basierter Operationen werden GPU-Tensoroperationen verwendet
- Die grundlegende Schleife bleibt identisch: Tokenisierung → Embedding → Attention → Vorhersage → Loss → Backpropagation → Update
Fazit
- MicroGPT ist ein didaktisches Modell, mit dem sich die interne Funktionsweise von GPT intuitiv lernen lässt
- Es vereinfacht die komplexe Struktur großer LLMs und macht die zentralen Mechanismen von Sprachmodellen direkt erfahrbar
1 Kommentare
Hacker-News-Kommentare
Es hieß, dass das Modell am Ende des Trainings Namen wie "kamon", "karai", "anna" und "anton" erzeugt, aber tatsächlich kommen diese Namen auch im Datensatz vor
Es wäre wohl besser, andere Namen zu verwenden — Link zum Datensatz
Es heißt zwar, der Text sei für Anfänger gedacht, aber ich weiß nicht, wie viele Anfänger eine solche mathematische Erklärung verstehen würden
Zum Beispiel wirkte der Teil, der die Formel für den Cross-Entropy-Loss erklärt, viel zu kompliziert
Ich werde noch einmal darüber nachdenken
Was ich nicht verstehe, ist, wie so ein einfaches Modell am Ende beliebige Code-Probleme debuggen kann
Ich frage mich, wie statistische Inferenz zu einer Art „Reasoning-Fähigkeit“ wird
Seit ich täglich Claude Code benutze, wirkt es inzwischen wirklich so
Der Kern ist: „Wenn man immer das richtige nächste Wort vorhersagen kann, kann man am Ende auch jede Frage richtig beantworten“
Deshalb entwickelt sich das Feld zuletzt in Richtung reinforcement-learning-basierter Ansätze wie RLHF oder RLVR, um die „richtige Antwort“ zu finden
Mathematisch sind sie eher ein Optimierungsproblem auf Basis der Differentialrechnung
Es geht nicht einfach darum, Textstatistiken zu lernen, sondern darum, eine komplexe Lösung zur Vorhersage des nächsten Tokens zu finden
In neuronalen Netzen gibt es zwar statistische Elemente, aber wie beim menschlichen Gehirn auch mehr als das
Ich habe den ganzen Text gelesen; es gab nützliche Teile, aber es fühlte sich auch etwas nach „zeichne den Rest der Eule“ an
Es wirkte, als würden die Verbindungen zwischen den Konzepten fehlen, aber der interaktive Aufbau war gut
Ich hätte mir gewünscht, dass das gründlicher behandelt wird
Ich frage mich, ob es gerade ein Trend ist, absichtlich Rechtschreib- oder Grammatikfehler einzubauen, um zu zeigen, dass ein Text nicht von einem LLM geschrieben wurde
Sowohl in Karpathys Blog als auch in diesem Text gab es einige solche Tippfehler
Er hat nur lange Zeit Elons Full Self Driving-Projekt getragen und war auch nicht besonders lange bei OpenAI
In letzter Zeit scheint er sich fast nur noch auf Code Golf oder das Erfinden von Neologismen zu konzentrieren
Das Original steht in Karpathys Blog — Link zum microGPT-Beitrag
Manche meinten, es sei zu grundlegend, andere wiederum, es gehe zu tief
Aber für jemanden wie mich, der nicht genau weiß, wie Modelle funktionieren, war es eine gute Übersicht
Ich habe nicht alles vollständig verstanden, aber als Einstieg ins Lernen scheint es ein guter Ausgangspunkt zu sein
Es war eines der hilfreichsten Tutorials, die ich bisher gesehen habe
Ich habe früher nicht programmiert, aber wegen KI schreibe ich inzwischen Code
Die Erklärung ist einfach und klar, was sehr dabei hilft, darüber nachzudenken, was man einer KI eingeben sollte
Es sieht so aus, als würde T-Mobile diese Blog-Seite blockieren
Link zur Blockierungswarnung
Nachdem ich den Text gelesen hatte, verstand ich zwar, dass Namen ausgegeben werden, aber ich fragte mich, warum ausgerechnet Namensgenerierung als Beispiel gewählt wurde
Man könnte genauso gut beliebige andere Daten verwenden