Maksim Sekretov hat einen winzigen, reinen JavaScript-Transformer veröffentlicht, der auf Node.js läuft und jeden Skalar, jedes Gewicht und jeden Gradienten während des Trainings anzeigt. Das Repository tiny-language-model-neuro-js ermöglicht es jedem, mit einem zufälligen Modell zu beginnen, einen Prompt wie „can human read ?“ einzugeben, zuzusehen, wie es scheitert, dann einen Trainingslauf mit einem einzigen Befehl zu starten und zu sehen, wie die Antwort korrekt wird.

Warum die meisten LLM-Demos die Mathematik verbergen

Typische Tutorials für Sprachmodelle verlassen sich auf TensorFlow oder PyTorch. Diese Frameworks erstellen automatisch Berechnungsdiagramme (Computation Graphs) und berechnen Gradienten im Hintergrund, sodass Lernende nur High-Level-Code und Loss-Kurven sehen. Die zugrunde liegenden Operationen – wie jedes Token zu einem Embedding wird, wie Attention-Scores berechnet werden und wie Gradienten durch jede Matrix zurückfließen – bleiben unsichtbar.

Was das JavaScript-Modell anders macht

Sekretovs Implementierung reduziert alles auf ein einziges, von Abhängigkeiten befreites Node.js-Skript. Die Trainings-Pipeline folgt einer einfachen Sequenz:

  • Tokenisierung
  • Embeddings
  • Causale Transformer-Blöcke
  • Multi-Head Self-Attention
  • Feed-Forward-Netzwerke (FFN)
  • Language-Model-Head und Softmax
  • Cross-Entropy-Loss
  • Backpropagation

Das Ausführen von node src/train.js --generalize --adaptive-teach startet die vollständige Trainingsschleife. Da der Code reines JavaScript ist, ist jeder Tensor ein einfaches Array, jede Matrixmultiplikation eine explizite Schleife und jeder Gradient liegt direkt neben seinem Ursprungsgewicht.

Von Zufallsraten zu korrekten Antworten

Wenn das Modell startet, sind alle Parameter zufällig. Die Frage „can human read ?“ liefert nur Kauderwelsch. Nach einer kurzen Pre-Training-Phase und einer Runde Supervised Fine-Tuning (SFT) liefert derselbe Prompt eine sinnvolle Antwort. Das Lehrer-Signal – korrekte Token-Sequenzen, die durch die Loss-Funktion geleitet werden – propagiert zurück durch Embeddings, Attention-Heads und FFN-Layer und aktualisiert dabei nacheinander jeden Skalar.

Das Problem des katastrophalen Vergessens angehen

Frühe Testläufe zeigten ein klassisches Problem: Das Lernen einer neuen Tatsache löschte zuvor gelernte Informationen. Sekretov behob dies durch „Rehearsal“ – das erneute Präsentieren alter Beispiele, während neue Daten eingeführt werden. Das Training stoppt erst, wenn jedes Ziel-Token eine Wahrscheinlichkeit von mindestens 95 % erreicht und zehn aufeinanderfolgende Prüfungen besteht. Diese einfache Schleife demonstriert eine zentrale Forschungsherausforderung ganz ohne externe Bibliotheken.

Wer profitiert und wer bleibt außen vor

Das Projekt steht nicht in Konkurrenz zu kommerziellen LLMs, die auf Milliarden von Parametern und GPU-Clustern laufen. Diese Leistungslücke macht es für produktive Workloads ungeeignet, verwandelt das Modell jedoch in ein transparentes Lehrmittel. Studenten, Hobbyisten und Forscher, die Schwierigkeiten haben, in ein Black-Box-Framework hineinzublicken, haben nun eine Sandbox, in der die Mathematik buchstäblicher Code ist.

Was fehlt und wohin sich das Projekt entwickeln könnte

Da die Implementierung bewusst minimal gehalten ist, bleibt der Code lesbar, aber die Skalierbarkeit ist begrenzt.

Worauf man als Nächstes achten sollte

Das Repository ist bereits öffentlich auf GitHub verfügbar.

Fazit: Indem er einen Transformer auf reines JavaScript reduziert hat, hat Sekretov ein notorisch undurchsichtiges Stück Technologie in ein lesbares, editierbares Skript verwandelt. Der Kompromiss ist die Geschwindigkeit, aber der Gewinn ist die Erkenntnis – jeder kann nun beobachten, wie ein Sprachmodell lernt, vergisst und wieder lernt, Skalar für Skalar.