Tokenwerk · Das LLM-Lehrbuch

Kapitel 32 · VI · Dein eigenes Projekt · 5 Minuten

Dein Abschlussprojekt: von null bis zur Antwort

Ein vollständiger Ablauf mit Erfolgskriterien, Befehlen und kontrollierten Erweiterungen. Jetzt trägst du die Entscheidungen selbst.

Die Aufgabe

Baue ein kleines deutschsprachiges Themenmodell oder ein englisches Geschichtenmodell. Du trainierst Tokenizer und sämtliche Decodergewichte selbst. Anschließend ergänzt du einen kleinen SFT-Lauf für kurze Antworten. Der Kern des Erfolgs ist nicht ein perfekter Satz, sondern ein vollständiger, geprüfter und erklärbarer Weg.

Das Downloadpaket ist ein Referenzprojekt. Du darfst damit beginnen, solltest aber jede zentrale Funktion erklären und eine kleine Änderung selbst umsetzen können. „Völlig selbstständig“ heißt hier: Du kannst Daten und Architektur anpassen, Fehler eingrenzen und den nächsten Versuch begründen, ohne dich auf eine undurchsichtige Modellladefunktion zu verlassen.

Meilenstein A: die Pipeline läuft

bash
python tests.py
python prepare.py --demo --out runs/demo --vocab-size 320
python train.py --data runs/demo --out runs/micro \
  --device cpu --steps 100 --context 64 --dim 64 --layers 2 --heads 4
python sample.py --checkpoint runs/micro/last.pt \
  --prompt "Die Katze" --tokens 60 --temperature 0.8

Erfolg: Die Tests bestehen, der Trainer schreibt gültige Messwerte und Checkpoints, der Sampler dekodiert eine Ausgabe. Dieser Meilenstein fordert noch keine gute Sprache. Der Korpus ist dafür bewusst zu klein.

Meilenstein B: ein echter Sprachlernlauf

Erstelle data/documents.jsonl aus geeigneten, nutzbaren Quellen. Alternativ kannst du mit dem optionalen TinyStories-Hilfsscript beginnen; es braucht zusätzlich das Paket datasets und Netzwerkzugriff. Prüfe Datensatzbeschreibung und Nutzungsvoraussetzungen an der Quelle.

bash
python -m pip install datasets
python fetch_tinystories.py --count 5000 --out data/stories.jsonl
python prepare.py --input data/stories.jsonl --out runs/stories --vocab-size 1024
python train.py --data runs/stories --out runs/stories-base \
  --modern --context 128 --dim 128 --layers 4 \
  --heads 4 --kv-heads 2 --batch 8 --steps 2000

Diese Stichprobe und diese Schritte sind ein Pilot, keine garantiert ausreichende Endkonfiguration. Bewerte Loss und Samples. Für bessere Texte musst du je nach Befund Daten, Modell und Budget erhöhen. TinyStories ist englisch; deutsches SFT auf einem englischen Micro-Modell allein ist kein zuverlässiger Weg zu deutscher Sprachkompetenz.

Meilenstein C: Baseline vergleichen

bash
python baseline.py --data runs/stories
python evaluate.py --checkpoint runs/stories-base/best.pt --data runs/stories

Beide Programme verwenden denselben Tokenizer und dieselbe vorbereitete Validierungsfolge. Die Baseline lernt geglättete Bigram-Übergänge auf Training. Die vollständige Decoder-Evaluation verwendet nichtüberlappende Kontextblöcke und berichtet tokengewichteten Loss; die Kontextbedingungen unterscheiden sich zwangsläufig von einem nur einen Token lesenden Bigram-Modell. Dokumentiere diese Methode.

Erfolg: Der Decoder sollte bei einem geeigneten Lernlauf den Bigram-Loss unterschreiten. Wenn das nicht gelingt, bearbeite das Diagnosekapitel. Berichte zusätzlich zehn feste Fortsetzungen und typische Fehler.

Meilenstein D: Antworten trainieren

Für ein deutsches Modell verwendest du deutsches Pretraining und neue deutsche SFT-Beispiele. Trenne SFT-Training und SFT-Validierung nach Fragen oder Themen, nicht nur nach Zeilen, die praktisch dieselbe Frage umformulieren.

bash
python sft.py --checkpoint runs/base/best.pt \
  --input data/sft_train.jsonl --valid data/sft_valid.jsonl \
  --out runs/chat --steps 300 --lr 0.0001
python sample.py --checkpoint runs/chat/best.pt \
  --chat --prompt "Warum braucht eine Pflanze Licht?" \
  --tokens 100 --temperature 0.6

Die beigefügten SFT-Dateien sind kleine Funktionsbeispiele. Für ein belastbares Modell ersetzt oder erweiterst du sie. Ein überangepasster Demolauf kann bekannte Fragen beantworten und auf neuen Fragen scheitern. Genau deshalb gehört Meilenstein E dazu.

Meilenstein E: unabhängige Bewertung

Erstelle die 20 Testfragen und bewerte jede Antwort mit der Rubrik aus dem vorherigen Kapitel. Vergleiche Base und SFT bei denselben Fragen und Seeds. Notiere mindestens einen Erfolg und drei typische Fehler. Halte zurückgehaltene Fragen vom Training fern.

Erfolg bedeutet beispielsweise: Das Modell liefert auf einem engen eigenen Thema überwiegend verständliche Antworten und verbessert seine Aufgabenpassung durch SFT. Setze konkrete Schwellen passend zum Ziel. Wenn sachliche Korrektheit noch schwach ist, ist das ein Ergebnis, keine Aufforderung, die Testfragen nachträglich leichter zu machen.

Meilenstein F: selbst etwas verändern

Wähle genau eine Erweiterung. Implementiere einen korrekten KV-Cache mit Gleichheitstest der Logits. Oder vergleiche zwei Modellbreiten bei gleichem Tokenbudget. Oder ersetze den BPE-Trainer durch eine effizientere Implementierung bei identischen Roundtriptests. Dokumentiere, was deine Änderung misst und was sie nicht misst.

Dein Abschlussbericht

Schreibe zwei bis vier Seiten: Ziel und Bereich, Datenmanifest, Architektur, Parameterzahl, Trainingsbudget, Messmethoden, Ergebnisse, Fehler und nächster sinnvoller Versuch. Lege den Tokenizer, die Konfiguration und die feste Testliste daneben. So kann jemand anders dein Ergebnis nachbauen.

Wann du das Lernziel erreicht hast

Du kannst erklären, wie ein Zeichen in einen Token und ein Embedding gelangt. Du kannst eine Attention-Zeile rechnen. Du kannst zeigen, warum die Maske kausal ist. Du kannst das Target-Shift und die SFT-Maske begründen. Du kannst einen kompletten Trainingslauf beginnen, stoppen, fortsetzen und bewerten. Und du kannst eine Behauptung über Modellqualität durch eine passende Messung ersetzen.

Das ist die Grundlage, auf der du selbstständig weiterbauen kannst. Frontier-Training ist danach eine große Skalierungs- und Forschungsaufgabe, aber die Rechenmechanismen sind für dich keine Blackbox mehr.