Die Frage, die nicht wegging
Ich habe ChatGPT in den ersten Tagen nach dem Start ausprobiert und war sofort beeindruckt. Nicht davon, dass ein Programm antwortet, sondern davon, dass es dabei zu treffen schien, was ich eigentlich meinte.
Danach ließ mich die Frage nicht mehr los, wie das von innen funktioniert. Die Erklärungen, die ich fand, hörten für mich immer an derselben Stelle auf: Sie beschreiben, was so ein Modell tut, aber nicht, warum daraus Sprache wird. Irgendwann habe ich aufgehört zu lesen und angefangen, eins zu bauen.
Eine Anleitung, der ich von vorn bis hinten gefolgt wäre, gab es nicht. Ich habe mir die Bausteine aus Fachtexten und Dokumentation zusammengesucht, ausprobiert, was passiert, und bei einzelnen Details nachgefragt, wenn ich feststeckte. Geschrieben habe ich es selbst.
Der erste Versuch: eine Datei, 179 Zeilen
Der Anfang war eine einzige Datei. Als Trainingstext diente eine Erzählung von Kafka auf Englisch, frei verfügbar und klein genug, dass ein Durchlauf Minuten dauerte statt Stunden. Englisch deshalb, weil das fertige Vokabular, das ich anfangs benutzte, ein englisches war.
Die Zahlen dazu: 5.700 Token Trainingstext, ein Gedächtnis von 32 Token, 3.000 Schritte. Heraus kam Buchstabensalat, der von Weitem nach Sätzen aussah. Trotzdem war das der wichtigste Lauf des Projekts, weil der Verlust sank. Damit stand fest, dass der Aufbau grundsätzlich funktioniert. Er war nur viel zu klein, um brauchbare Sätze zu erzeugen.
Der eigentliche Fehler fiel erst beim Nachrechnen auf: Das Modell lernte pro Beispiel nur aus einem einzigen Token, dem letzten. Alle anderen Positionen im Fenster liefen mit, ohne etwas beizutragen. Im neu gebauten Modell mit einem Fenster von 128 Token brachte die Korrektur das 128-Fache an Lernsignal, aus exakt denselben Daten. Danach habe ich das Skript auseinandergenommen und neu aufgebaut, mit getrennten Dateien für Modell, Training und Chat.
Selbst schreiben statt aufrufen
Ab hier hätte ich ein fertiges Modell laden und darauf aufbauen können. Stattdessen wollte ich wissen, wie weit ich komme, wenn jeder Baustein von mir ist.
Selbst geschrieben heißt konkret: die Architektur mit Attention, Blöcken und Positionscodierung. Das Vokabular, trainiert auf deutschem Text. Die Trainingsschleife mit Batching, Lernraten-Zeitplan und Wiederaufnahme nach Abbruch. Der Aufbau der Trainingsdaten, das Chat-Format samt zweiter Trainingsstufe, die Werkzeugschicht, der Prüfstand und die Oberfläche.
Nicht von mir ist die Rechenbibliothek darunter. PyTorch liefert Tensoren, Ableitungen und den optimierten Attention-Kern, so wie ein Webprojekt einen Browser voraussetzt. Auch das Vokabular-Training läuft über eine fertige Bibliothek, gefüttert wurde sie mit eigenem deutschem Text. Kein fremdes Sprachmodell und keine fremden Gewichte stecken darin.
Deutsch ist teurer als Englisch
Ein Modell liest keine Buchstaben, sondern Token. Wie ein Text zerlegt wird, entscheidet das Vokabular, und die gängigen Vokabulare sind auf Englisch trainiert. „Künstliche Intelligenz“ zerfällt bei GPT-2 in neun Stücke, die ersten drei davon heißen K, ü und n. Jedes Stück kostet Platz im Kontextfenster, und das Modell muss den Begriff aus Trümmern wieder zusammensetzen.
Mit einem eigenen Vokabular aus 16.000 Einträgen, trainiert auf deutschem Text, sind es fünf Stücke. Über ganze Sätze gerechnet spart das rund ein Drittel, bei langen Komposita die Hälfte. Hier ist es, mit demselben Vokabular wie im Modell:
Läuft im Browser mit demselben Vokabular wie das Modell.
Wie das Vokabular gelernt hat
Die 16.000 Einträge wurden nicht ausgesucht, sie wurden gelernt: Aus einzelnen Zeichen verschmelzen die häufigsten Paare Regel für Regel zu Stücken. Die ersten Regeln sind er, en und ch, Regel 11 macht aus s und ch das sch, später entstehen Endungen wie ung und ganze Wörter. Der Schieber wendet die echten Regeln in ihrer Lernreihenfolge an.
Der Rechenweg
Ein Satz, von innen
Für einen festen Satz ist der Rechenweg des Modells vollständig nachrechenbar. Alle Zahlen hier stammen aus dem Basismodell, einmal berechnet und gespeichert. Im Browser läuft kein Modell, nur die Anzeige. Der Satz lässt sich wechseln.
Station 1·bedeutung
Jedes Token ist ein Punkt im Raum
Alle 16.000 Token des Vokabulars, auf zwei Achsen gebracht. Token, die ähnlich verwendet werden, liegen nah beieinander: Zahlen, Ortsnamen und Endungen bilden eigene Inseln. Die Token des Satzes leuchten.
Ein Klick auf ein Token zeigt seine zehn nächsten Nachbarn, gerechnet im vollen Raum mit 768 Achsen.
Station 2·beziehung
Wohin ein Token schaut
In jeder der zwölf Schichten verteilen zwölf Köpfe die Aufmerksamkeit eines Tokens auf alles, was vor ihm steht. Die Bögen zeigen diese Verteilung: dick und hell, wo viel Gewicht liegt.
Manche Köpfe schauen fast immer ein Token zurück, andere zum Satzanfang, wieder andere suchen das Wort, das dazugehört. Schicht und Kopf lassen sich einzeln wählen.
Station 3·schichten
Die Antwort schält sich heraus
Nach jeder Schicht lässt sich der Zwischenstand so lesen, als wäre er schon das Ende. Unten die erste Schicht, oben die zwölfte, ganz oben die Ausgabe.
Man sieht, in welcher Schicht der spätere Favorit erstmals vorn liegt, und wie oft es erst spät kippt.
Station 4·entscheidung
16.000 Möglichkeiten, eine Wahl
An dieser Stelle hat das Modell eine Verteilung über alle 16.000 Token. Der Regler ändert die Temperatur: Bei null nimmt es immer den Favoriten, bei hoher Temperatur bekommen Außenseiter eine Chance.
Ziehen wählt ein Token aus genau dieser Verteilung, mit echtem Zufall.
Größer werden hilft, aber nicht unbegrenzt
Von 7 auf 98 Millionen Parameter, Kontextfenster von 128 auf 1024 Token, Trainingsdaten von einer einzelnen Erzählung auf die deutsche Wikipedia. Die Perplexität misst, wie überrascht das Modell vom nächsten Wort ist. Niedriger ist besser.
Der Sprung von Stufe zu Stufe wird dabei kleiner, obwohl der Aufwand wächst. Bei Star 1 ging die Perplexität von 42 auf 27, bei Star 2 mit dem größeren Netz und dem dreifachen Korpus weiter auf 14,6, dafür liefen die Basisläufe über hunderttausend Schritte. Flüssiges Deutsch kommt damit zuverlässig heraus. Beim Faktenwissen bleibt es schwach, das zeigt der nächste Abschnitt.
Perplexität der Basis, niedriger ist besser.
Die Leiter: dieselbe Eingabe durch die Stufen
Was Größe und Chat-Tuning bewirken, sieht man am besten an derselben Eingabe. Oben setzt das Basismodell einen Satzanfang fort, unten antworten die Chat-Modelle auf drei Fragen, ohne Werkzeuge, bei Temperatur 0. Alle Antworten stammen aus dem Export, nichts ist nachträglich geglättet.
Antworten werden geladen
Wo es kippt
Der Prüfstand stellt 113 Fragen, die nie im Training vorkommen, bei Temperatur 0, also ohne Zufall. Rechnen und Textaufgaben sitzen. Bei Faktenwissen bricht es ein, und die Art der Fehler ist aufschlussreich:
Durchgefallen, Auszug, mit dem Grund aus dem Tagebuch:
Was ist die Hauptstadt von Argentinien?
Die Hauptstadt von Australien ist Canberra.
Die Abruf-Form sitzt, der seltene Fakt fehlt im Reservoir: Das Modell füllt die gelernte Schablone mit dem nächstliegenden bekannten Wert.
Zähle drei Jahreszeiten auf.
Drei Jahreszeiten sind vier Jahreszeiten.
Listen sind Faktenwissen: Die Form der Antwort ist gelernt, ihr Inhalt nicht. Formen generalisieren, Fakten nicht.
Wer war Bodo Klimper?
Brego Limper war ein britischer Informatiker (geb. 1955) und erfand das World Wide Web.
Es gibt diese Person nicht. Ob ein Name bekannt ist, ist Mengenwissen und bei dieser Größe nicht lernbar; das Modell erfindet eine passende Biografie im richtigen Ton.
Deshalb rechnet Code, nicht das Modell
Ein Modell dieser Größe kann Sprache, aber es kann keine Fakten speichern. Auf die Frage nach Argentinien antwortet es mit Australien, weil der Satzbau stimmt und das Wort ähnlich klingt. Bei einer erfundenen Person erfindet es eine passende Biografie dazu.
Fakten kommen deshalb aus Code: Rechnen, Datumsangaben, Nachschlagelisten. Das Modell formuliert nur noch. Wenn es für eine Frage keine Quelle gibt, sagt es das, statt etwas zu erfinden.
Als die Zahlen nicht stimmten
Im Juli standen die Werte zwischen 60 und 77 Prozent. Dann fiel auf, dass beim Bauen der Trainingsdaten Prüffragen mit hineingeraten waren. Das Modell hatte die Antworten also vorher gesehen, der Prüfstand maß Auswendiggelerntes.
Seitdem läuft nach jedem Datenbau eine Kontrolle, die genau das abfängt. Die erste ehrliche Messung danach ergab 63 Prozent. Der niedrigere Wert ist mir lieber, weil man auf ihm etwas aufbauen kann.
Was das kostet
Trainiert wird auf zwei Rechnern, kurze Läufe unterwegs, große zu Hause. Ein voller Basislauf über 80.000 Schritte:
| Maschine | 80.000 Schritte | Strom |
|---|---|---|
| MacBook Air M416 GB | 40 h | 0,45 € |
| RTX 306012 GB | 11,4 h | 1,30 € |
| RTX 309024 GB | 4,5 h | 0,85 € |
Bei einem Strompreis von 0,37 Euro je Kilowattstunde.
Wohin die Reise geht
Die Modelle tragen Namen nach einem festen Schema: Die Größenklasse kommt aus der Parameterzahl, die Versionsnummer steigt nur, wenn ein vorher benanntes Ziel am Prüfstand erreicht ist. Star 3 verlangt zum Beispiel, dass das Netz erstmals nennenswert Weltwissen aus der Basis abruft. So kann kein Name behaupten, was die Messung nicht hergibt.
Der Zielpunkt heißt Cosmos 1 und liegt zwei Größenklassen über dem heutigen Stand: ein Modell, das sich mit dem ersten öffentlichen ChatGPT messen kann. Nach heutigen Maßstäben war dessen Wow-Effekt bescheiden, aber es war ein ernstzunehmendes Modell. Ganz dorthin reichen meine Rechner nicht, in einzelnen Bereichen halte ich es für machbar. Der Weg dahin ist in Etappen zerlegt, und jede wird gemessen, bevor sie einen Namen bekommt.

