Skip to main content
Entwickler Themen
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

0.1.1. MinimalesLLM

Worum es geht

MinimalesLLM zeigt, wie ein Sprachmodell intern im Prinzip arbeitet. Aus einem kurzen Text werden Token, aus den Token werden Vektoren, ein Transformer 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)

Die Vereinfachung

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.

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].

Der Weg durch das Programm

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. Jede Token-ID und jede Position wird zu einem Vektor aus 16 Zahlen. Beide Vektoren werden addiert.
  • Attention. Die aktuelle Position mischt die Stellen, die sie schon gesehen hat. Spätere Zeichen bleiben unsichtbar.
  • Block. Attention und ein kleines vorwärtsgerichtetes Netz schreiben je eine Änderung auf den laufenden Vektor zurück.
  • Vorwärtspass. Am Ende steht für jedes Token eine Zahl, der Logit. Ein größerer Logit ist eine stärkere Neigung zu diesem Token.
  • Verlust. Er misst, wie überrascht das Modell vom tatsächlich nächsten Token war. Training soll diese Zahl senken.
  • Autograd. Der Rückwärtspass rechnet mit der Kettenregel aus, welches Gewicht am Verlust beteiligt war.
  • Training. Ein Schritt ist ein Wort. Adam 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 und Ziehung
cmd/minimalesllm Referenzlauf und die gedruckte Inspektion
cmd/namegenerator Trainiert eine Namensliste und setzt eingegebene Anfänge fort

Die Seiten