0.1.1. MinimalesLLM
MinimalesLLM zeigt, wie ein Sprachmodell intern im Prinzip arbeitet. Aus einem kurzen Text werden Token, Glossar, öffnet in neuem Tab , aus den Token werden Vektoren, ein Transformer, Glossar, öffnet in neuem Tab mischt diese Vektoren, das Training verschiebt die Gewichte, und eine Stichprobe setzt den Text fort.
Das ist dieselbe Kernoperation wie im Abschnitt Was sind LLMs: das jeweils nächste Token vorhersagen. Die Ausgabe des Programms ist eine kurze Buchstabenfolge. Es führt keinen Dialog.
Der Quelltext liegt hier: https://gitea.neitzel.de/konrad/MinimalesLLM (extern)
Ein heutiges Modell kennt Zehntausende Token: Wortteile, Satzzeichen, Code. Hier ist das Vokabular des Referenzlaufs auf die 26 Kleinbuchstaben a bis z reduziert. Dazu kommt ein weiteres Token, BOS, Glossar, öffnet in neuem Tab
.
BOS ist kein Buchstabe. Es markiert den Rand eines Worts. Jede Trainingszeile beginnt mit BOS, und eine erzeugte Zeichenfolge endet, wenn das Modell BOS zieht.
Dadurch wird ein „Satz“ in diesem Beispiel zu einem einzelnen Wort: ein Vorname in einer Zeile. Das Modell sieht keine Absätze und keine Rollen. Es lernt, welcher Buchstabe in solchen kurzen Wörtern als Nächstes kommt.
Das Wort ana wird zu fünf Token: BOS, a, n, a, BOS. In der Namensliste des Referenzlaufs sind das die IDs [26 0 13 0 26].
Die folgenden Seiten beschreiben jeden Schritt. Hier nur die Rolle.
- Tokenizer. Eine Zeile wird zu BOS, den IDs ihrer Buchstaben und noch einmal BOS. Ein Zeichen, das in der Datei nicht vorkommt, hat keine ID.
- Einbettung, Glossar, öffnet in neuem Tab . Jede Token-ID und jede Position wird zu einem Vektor aus 16 Zahlen. Beide Vektoren werden addiert.
- Attention, Glossar, öffnet in neuem Tab . Die aktuelle Position mischt die Stellen, die sie schon gesehen hat. Spätere Zeichen bleiben unsichtbar.
- Block. Attention und ein kleines vorwärtsgerichtetes Netz, Glossar, öffnet in neuem Tab schreiben je eine Änderung auf den laufenden Vektor zurück.
- Vorwärtspass, Glossar, öffnet in neuem Tab . Am Ende steht für jedes Token eine Zahl, der Logit, Glossar, öffnet in neuem Tab . Ein größerer Logit ist eine stärkere Neigung zu diesem Token.
- Verlust, Glossar, öffnet in neuem Tab . Er misst, wie überrascht das Modell vom tatsächlich nächsten Token war. Training soll diese Zahl senken.
- Autograd, Glossar, öffnet in neuem Tab . Der Rückwärtspass rechnet mit der Kettenregel aus, welches Gewicht am Verlust beteiligt war.
- Training. Ein Schritt ist ein Wort. Adam, Glossar, öffnet in neuem Tab verschiebt danach alle Gewichte ein kleines Stück.
- Stichprobe. Die Gewichte bleiben stehen. Das Programm zieht das nächste Zeichen, hängt es an und hört bei BOS auf.
Die Referenzform ist schmal: Breite 16, eine Schicht, vier Attention-Köpfe, Kontextfenster 16. Für 26 Buchstaben plus BOS sind das 4192 Parameter.
| Paket | Aufgabe |
|---|---|
token |
Korpus, Vokabular, Kodierung |
autograd |
Elementare Operationen und der Rückwärtspass |
model |
Einbettung, Attention, Block, Vorwärtspass, Verlust |
train |
Adam und ein Schritt je Wort |
sample |
Temperatur, Glossar, öffnet in neuem Tab und Ziehung |
cmd/minimalesllm |
Referenzlauf und die gedruckte Inspektion |
cmd/namegenerator |
Trainiert eine Namensliste und setzt eingegebene Anfänge fort |
- 0.1.2. Aufruf und Beispielausgabe
Start des Referenzlaufs, die beiden Parameter und was die gedruckten Zeilen bedeuten. - 0.1.3. Namensgenerator
Dieselbe Rechnung, danach Fortsetzungen zu einem eingegebenen Anfang. - 0.1.4. Token
Wie eine Zeile zu IDs wird. - 0.1.5. Einbettungen
Token-ID und Position als gelernte Vektoren. - 0.1.6. Attention
Query, Glossar, öffnet in neuem Tab , Key, Value und die Mischung der bisherigen Positionen. - 0.1.7. Block
Attention, vorwärtsgerichtetes Netz und Residualverbindung, Glossar, öffnet in neuem Tab . - 0.1.8. Vorwärtspass
Die Reihenfolge der Rechnung und die 4192 Parameter. - 0.1.9. Verlust
Vom Logit zur Überraschung über das nächste Token. - 0.1.10. Autograd
Kettenregel auf einzelnen Skalaren. - 0.1.11. Training
Ein Wort, ein Adam-Schritt. - 0.1.12. Stichprobe
Zeichen ziehen, bis BOS kommt. - 0.1.13. Was weggelassen wurde
Techniken heutiger Modelle, die dieses Beispiel bewusst auslässt.
Englische Fachwörter dieser Seiten — Attention, Logit, Softmax, Glossar, öffnet in neuem Tab und die übrigen — erklärt das Glossar.