MinimalesLLM: ein kleines Sprachmodell zum Anfassen
Auf dev.neitzel.de habe ich beschrieben, was Large Language Models sind und wie sie arbeiten. Das bleibt Theorie, solange man die Maschine nicht selbst laufen sieht. Deshalb habe ich dieselbe Arbeitsweise in einem kleinen Go-Projekt umgesetzt: MinimalesLLM.
MinimalesLLM ist ein winziges neuronales Netz. Es trainiert auf einer normalen CPU, ohne Grafikkarte und ohne großes Rechenzentrum. Die Texte sind keine Sätze und keine Dialoge, sondern einzelne kurze Wörter, Vornamen, Buchstabe für Buchstabe. Das Netz lernt, welches Zeichen als Nächstes wahrscheinlich folgt, hängt dieses Zeichen an und macht weiter, bis das Wort zu Ende ist. Wer einen Anfang vorgibt, bekommt eine Fortsetzung. Ohne Anfang zieht das Programm selbst ein neues kurzes Wort.
Daran sieht man sehr konkret, wie eine Ausgabe entsteht. Es gibt kein Lexikon, in dem der Name nachgeschlagen wird, und kein Verständnis dafür, dass es ein Name ist. Das Modell setzt nur fort, was in den Beispielen häufig vorkam. Manche Ergebnisse sind bekannte Vornamen, manche sind neue Buchstabenfolgen, die nur so klingen. Genau das ist die Arbeitsweise eines Sprachmodells, nur klein genug, dass man sie an einem Wort ablesen kann.
Den Quelltext gibt es unter gitea.neitzel.de/konrad/MinimalesLLM. Die Dokumentation dazu, vom Aufruf bis zum Aufbau, steht auf dev.neitzel.de unter MinimalesLLM.