Inhalt
Die kurze Antwort
Ich baue nlm, weil ich Sprachmodelle nicht nur nutzen, sondern verstehen möchte: von der ersten Tokenisierung über Attention und Training bis zur kritischen Bewertung der Ergebnisse.
nlm ist ein kleines, eigenes GPT-ähnliches Sprachmodell, das auf einem kuratierten Korpus englischer Kindergeschichten trainiert wird. Es ist kein allgemeiner Chatbot und kein Ersatz für ChatGPT. Es ist ein klar abgegrenztes Lern- und Forschungsprojekt: ein Sprachmodell für kurze englische Kindergeschichten.
nlm ist kein allgemeiner Chatbot.
nlm ist ein englischsprachiges Kurzgeschichten-Sprachmodell.
Der Name ist dabei wörtlich gemeint: nlm steht für Nano Language Model. nlm hat etwa 10 Millionen Parameter — große kommerzielle Sprachmodelle haben häufig viele Milliarden bis hin zu Billionen. nlm ist also bewusst klein: nicht als Koketterie, sondern weil kleine Modelle auf begrenzter Hardware trainierbar, verständlich und untersuchbar sind.
Das Ziel
Mein Ziel ist nicht, ein großes, kommerzielles Sprachmodell nachzubauen.
Mein Ziel ist, ein kleines Sprachmodell von Grund auf zu bauen, zu trainieren, zu debuggen und kritisch zu bewerten.
1. Einen BPE-Tokenizer verstehen und bauen
2. Embeddings und Position Embeddings erklären
3. Einen Decoder-only Transformer aufbauen
4. Attention und Residual Stream verstehen
5. Ein Modell auf begrenzter Hardware — ausschließlich mit CPU — trainieren
6. Loss-Werte und Fehler systematisch deuten
7. Text generieren und Qualität bewerten
8. Das Ganze als Projekt dokumentieren
Mir geht es darum, jede Entscheidung nachvollziehen zu können und dabei zum fachlichen Experten zu werden.
Warum englische Kindergeschichten?
Ich arbeite mit kurzen, einfachen englischen Kindergeschichten. Sie sind ein guter Kompromiss für ein kleines Sprachmodell:
Kurze Sequenzen
Klare Struktur
Einfache Sprache
Konsistenter Stil
Begrenzter Kontext
Geeignet für CPU-Training
Ein Modell, das auf einem solchen Korpus trainiert wird, muss keine Enzyklopädie sein. Es muss lernen, einfache Geschichten fortzusetzen, zum Beispiel:
„Once upon a time, there was a little fox in London.“
Daraus soll später entstehen:
„Once upon a time, there was a little fox in London.
He lived in a small forest near Wimbledon with his family.“
Das ist ein klarer, begrenzter Scope.
Warum kein allgemeiner Chatbot?
Ein allgemeiner Chatbot muss Fragen beantworten, Code schreiben, Übersetzungen erstellen, Wissen erklären und Gespräche führen.
nlm soll ein spezialisiertes Sprachmodell sein.
nlm soll englische Kurzgeschichten für Kinder erzeugen.
nlm ist kein Chatbot.
nlm ist ein englischsprachiger Kurzgeschichten-Generator für Kinder.
Diese Abgrenzung ist wichtig. Sie bestimmt nicht nur die Kommunikation, sondern auch Tokenizer, Trainingsdaten, Architektur, Evaluation und spätere Produktentscheidungen.
Warum CPU statt GPU?
Die meisten LLM-Tutorials setzen stillschweigend eine GPU voraus, weil die Gleitkommaberechnungen damit deutlich schneller durchgeführt werden.
nlm läuft auf einem VPS mit acht virtuellen CPUs. Das macht das Projekt schwieriger, aber für mich persönlich interessanter.
Kein A100.
Kein H100.
Kein großes Cloud-Budget.
Sondern:
Ein begrenzter VPS,
ein kleines Modell
und klare Grenzen.
Dadurch werden Fragen relevant, die in vielen Tutorials fehlen:
Welche Batch-Größe passt in den Speicher?
Wie viel Kontext kann das Modell verarbeiten?
Warum wird der Loss instabil?
Wann brauche ich Gradient Clipping?
Wie lange dauert Training realistisch?
Diese Grenzen sehe ich erstmal nicht als Nachteil. Sie sorgen aber dafür, dass ich mich mit mehr Fragen beschäftigen muss.
Der aktuelle Stand
nlm ist bereits im Training.
Bei etwa Schritt 57.370 von 100.550 lag der Validation-Loss im Mittel bei etwa 1,084. Der bisher beste Validation-Loss betrug 0,9465 bei Schritt 57.250.
Schritt: 57.370 von 100.550
Trainings-Loss: etwa 1,081
Validation-Loss: etwa 1,084
Bester Validation-Loss: 0,9465
Das bedeutet: Das Modell lernt weiterhin. Das Training läuft seit etwa drei Tagen ununterbrochen. Es zeigt derzeit keine klaren Anzeichen für Overfitting, weil Trainings- und Validation-Loss nah beieinander liegen.
Aber ein niedriger Loss ist kein Qualitätsnachweis.
Ein guter Loss sagt:
Das Modell wird besser darin,
das nächste Token vorherzusagen.
Ein guter Loss sagt nicht automatisch:
Die generierten Geschichten sind gut.
Ich werde die ersten Textproben erst nach Abschluss des initialen Trainings generieren (voraussichtlich in 3 Tagen). Das initiale Training entspricht derzeit etwa 0,24 Epochen — ich bin gespannt, wie gut die generierten Texte am Ende sein werden.
Was ich dokumentieren werde
Ich werde den Aufbau von nlm als Build-Log dokumentieren.
Dazu gehören:
Tokenizer und BPE
Embeddings und Position Embeddings
Attention: Q, K und V
Residual Stream
Feed-Forward und LayerNorm
Training und Validation
Backward Pass
Optimizer und Learning Rate
Debugging: OOM, NaN und schlechte Generierung
Evaluation jenseits des Loss
Interpretierbarkeit
Wichtig ist mir dabei: Ich dokumentiere nicht nur Erfolge.
Auch Fehler gehören dazu:
OOM-Fehler
NaN-Werte
Schlechte Generierungen
Speicherprobleme
Falsche Annahmen
Notwendige Kompromisse
Was nlm nicht sein wird
nlm wird kein allgemeiner Chatbot.
Es wird keine allgemeinen Fragen beantworten, keinen Code schreiben und keine beliebigen Aufgaben erledigen.
Nutzer: „Erkläre mir Quantenphysik.“
nlm:
Kein sinnvoller allgemeiner Chatbot-Use-Case.
Stattdessen wird der Scope klar sein:
Nutzer: „Schreibe eine Geschichte über einen mutigen Hund.“
nlm:
Erzeugt eine kurze, einfache englische Kurzgeschichte für Kinder.
Diese Abgrenzung ist wichtig. Sie verhindert falsche Erwartungen und macht das Projekt deutlicher.
Der nächste Schritt
Der nächste Schritt ist, das initiale Training abzuschließen und danach die ersten Textproben zu generieren.
Nicht nur:
„Der Loss sinkt.“
Sondern:
Sind die Geschichten verständlich?
Sind sie kohärent?
Sind sie altersgerecht?
Sind sie zu repetitiv?
Welche Fehler treten auf?
Welche Verbesserungen sind sichtbar?
Denn das eigentliche Ziel ist nicht ein möglichst niedriger Loss.
Das Ziel ist ein Modell, dessen Verhalten ich verstehen und kritisch bewerten kann.
Nächster Beitrag
Im nächsten Beitrag gehe ich einen Schritt zurück und erkläre den ersten Baustein:
Vom Text zum Token:
Wie nlm Sprache in Zahlen übersetzt.
Dies ist der erste Beitrag einer Serie über den Aufbau von nlm: einem kleinen Sprachmodell, das von Grund auf gebaut, trainiert und kritisch bewertet wird.