Modell / Datensatz
rasbt/reasoning-from-scratch avatar
rasbt/reasoning-from-scratch

rasbt/reasoning-from-scratch: Reasoning-Methoden als Lehrbuchcode in PyTorch

Implement a reasoning LLM in PyTorch from scratch, step by step

5.234 Sterne822 ForksJupyter NotebookApache-2.0

Auf einen Blick

Was ist das?
Ein Begleitrepository zu einem Manning-Buch, das auf einem vortrainierten Qwen3-Modell Inference-Time Scaling, Reinforcement Learning und Destillation in Notebooks nachvollziehbar macht. Wer Produktionscode sucht, ist hier falsch.
Für wen ist es gedacht?
Wer Reasoning-Methoden einmal selbst durchgerechnet haben will, findet hier neun Kapitel plus sieben Anhänge mit Notebooks, die auf Consumer-Hardware laufen sollen. Wer eine Bibliothek mit stabilem API sucht, sollte nicht damit planen.
Darf ich es kommerziell nutzen?
Ja. Apache-2.0 ist eine freizügige Lizenz: Sie dürfen darauf aufbauende Software nutzen, verändern und verkaufen, solange Sie die Urheberrechts- und Lizenzhinweise beibehalten.
Wird es noch gepflegt?
Ja. Die letzten Commits kamen vor 9 Tagen.
In welcher Sprache ist es geschrieben?
Hauptsächlich Jupyter Notebook, laut der Sprachstatistik von GitHub.

Die Antworten beruhen auf den GitHub-Daten des Projekts (zuletzt abgeglichen am 15. September 2026) und auf unserer Analyse. Sie sind keine Rechtsberatung.

TIEFGEHENDE OPEN-SOURCE-ANALYSE

Ein Buch mit ausführbarem Anhang

Das Repository ist kein Werkzeug, das man installiert, sondern der offizielle Code zu Build a Reasoning Model (From Scratch), erschienen bei Manning unter ISBN 9781633434677. Die Kapitel eins und die Anhänge A und B enthalten laut Tabelle keinen oder nur verteilten Code, alles andere liegt als Jupyter Notebook in Unterordnern wie ch02/01_main-chapter-code/ oder chC/01_main-chapter-code/. Die Hauptsprache ist deshalb Jupyter Notebook, nicht Python im Paketsinn. Wer nach einem importierbaren Modul sucht, wird nicht fündig. Wer wissen will, wie aus einem vortrainierten Basismodell ein Modell mit längeren Denkketten wird, bekommt hier den vollständigen Pfad in einer Reihenfolge, die didaktisch begründet ist und nicht nach Wiederverwendbarkeit.

Der Autor positioniert das Buch ausdrücklich als eigenständigen Band neben Build a Large Language Model (From Scratch). Die Abgrenzung ist scharf: Der vorherige Band baut einen konventionellen Basismodell-Stack, dieser Band setzt darauf auf und arbeitet mit einem fertigen Open-Source-Modell. Das ist die zentrale Designentscheidung des Projekts und erklärt, warum hier keine Tokenizer-Implementierung und keine Attention-Variante von Grund auf entsteht.

Qwen3 als feste Basis, nicht als Beispiel

Das Buch arbeitet mit Qwen3 als vortrainiertem Basismodell. Die README formuliert das als Rahmenbedingung: Wir arbeiten mit einem vortrainierten Open-Source-Basismodell (Qwen3), auf das wir Reasoning-Methoden von Grund auf anwenden. Das ist mehr als eine Fußnote. Wer ein anderes Basismodell einsetzen will, muss die Notebooks anpassen, weil Modellkonfiguration, Gewichtsformate und Tokenizer an dieser Stelle zusammenkommen. Der Anhang C ist dem Quellcode von Qwen3 gewidmet, was den Stellenwert dieser Bindung unterstreicht.

Die Kapitel folgen einer erkennbaren Progression. Kapitel 3 behandelt die Bewertung von Reasoning-Modellen, bevor überhaupt eine Verbesserung gebaut wird. Kapitel 4 und 5 skalieren zur Inferenzzeit, einmal über allgemeines Test-Time-Compute und einmal über Self-Refinement. Kapitel 6 führt Reinforcement Learning ein, Kapitel 7 verbessert GRPO, Kapitel 8 behandelt Destillation. Die Themenliste der Repository-Beschreibung deckt sich damit: chain-of-thought, distillation, grpo, inference-time-scaling, rlhf, test-time-compute. Das ist eine vollständige Landkarte der gängigen Verfahren, aber jede Station bleibt ein Kapitel, kein Modul.

Was in den Notebooks tatsächlich passiert

Aus der Verzeichnisstruktur und der Kapitelübersicht lässt sich der Datenfluss rekonstruieren, ohne dass man eine Zelle ausgeführt haben muss. Jedes Hauptkapitel hat ein chXX_main.ipynb und ein chXX_exercise-solutions.ipynb im selben Unterordner. Der Ablauf ist durchgängig: Basismodell laden, Aufgabe stellen, Antwort bewerten, Methode anwenden, erneut bewerten. Kapitel 3 liefert den Bewertungsschritt, auf den die späteren Kapitel zurückgreifen. Kapitel 4 und 5 verändern nur die Inferenz, nicht die Gewichte. Ab Kapitel 6 ändert sich das Modell selbst, und Kapitel 8 verlagert das Gelernte wieder in ein kleineres Modell.

Diese Trennung ist didaktisch sauber, hat aber eine Konsequenz für Leser, die selektiv einsteigen wollen. Die Inferenz-Kapitel lassen sich einzeln nachvollziehen, weil sie kein Training voraussetzen. Die Trainingskapitel ab 6 bauen auf Bewertungsroutinen auf, die in Kapitel 3 eingeführt werden. Wer bei Kapitel 6 einsteigt, muss die Bewertungslogik aus dem früheren Kapitel mitbringen oder selbst schreiben. Die README macht dazu keine Aussage, und die Materialbasis erlaubt keine Einschätzung, wie stark die Kopplung im Code tatsächlich ist.

Hardware: Consumer-Geräte als erklärtes Ziel

Die README ist an dieser Stelle ungewöhnlich konkret: Der Code der Hauptkapitel ist so ausgelegt, dass er überwiegend auf Consumer-Hardware in vertretbarer Zeit läuft und keine spezialisierte Server-Hardware erfordert. Zusätzlich nutzt der Code automatisch GPUs, falls vorhanden. Diese Formulierung deckt die Inferenzkapitel und das Training eines kleinen Modells ab. Sie ist keine Zusage für die größeren Varianten, und genau dafür existiert Anhang D mit dem Titel Using larger LLMs. Wer die Notebooks mit einem großen Modell betreibt, verlässt den Bereich, für den die Hardwareaussage gilt.

Anhang E behandelt Batching und Throughput-orientierte Ausführung. Das ist der Hinweis darauf, dass die Standardnotebooks auf Verständlichkeit optimiert sind, nicht auf Auslastung. Wer aus den Notebooks eine Pipeline bauen will, landet zwangsläufig bei den Themen dieses Anhangs. Die README bricht an dieser Stelle ab, weitere Angaben zu Speicherbedarf oder Laufzeiten liegen nicht vor.

Einrichtung: Klonen, Umgebung, Notebook öffnen

Der Einstieg ist bewusst schlicht gehalten. Die README nennt einen einzigen Befehl:

git clone --depth 1 https://github.com/rasbt/reasoning-from-scratch.git

Der Parameter --depth 1 holt nur den letzten Stand, was für ein Repository mit Notebooks und Bildern sinnvoll ist. Alternativ verweist die README auf den Download-ZIP-Knopf. Für die Umgebung gibt es keinen Installationsbefehl im sichtbaren Text. Stattdessen heißt es, Kapitel 2 enthalte zusätzliche Hinweise zur Installation von Python, zur Verwaltung von Python-Paketen und zur Einrichtung der Coding-Umgebung. Das ist eine bewusste Verlagerung: Die Setup-Anleitung steht im Buch und im Notebook, nicht in der README.

Für Probleme existiert eine eigene Datei, auf die die README verlinkt: ./troubleshooting.md. Dass dieses Dokument im Repository liegt und nicht nur im Buch, ist praktisch, weil Fehlermeldungen beim Laden von Modellgewichten oder bei CUDA-Versionen häufig umgebungsabhängig sind. Prüfpfade für den Zustand des Codes sind die drei Workflows tests-linux.yml, tests-macos.yml und tests-windows.yml, deren Badges die README oben einbindet. Wer wissen will, ob der aktuelle Stand auf seinem System überhaupt vorgesehen ist, findet dort die Plattformabdeckung.

Grenzen: Lehrbuchcode ist kein Produktionscode

Die wichtigste Einschränkung steht implizit in der Selbstbeschreibung. Die Methoden führen zu einem eigenen kleinen, aber funktionsfähigen Reasoning-Modell für Bildungszwecke. Bildungszwecke heißt: Die Implementierungen sind auf Nachvollziehbarkeit ausgelegt. Das zeigt sich an mehreren Stellen. Jedes Kapitel bringt ein separates Lösungsnotebook mit, was für Lehre sinnvoll ist und für Wiederverwendung Ballast bedeutet. Die Kapitel eins und die Anhänge A und B enthalten keinen ausführbaren Code, die Tabelle ist also keine Liste von Modulen. Und die Trennung zwischen Hauptkapitel und Anhängen bedeutet, dass Themen wie Batching oder größere Modelle außerhalb des didaktischen Kerns liegen.

Ein zweiter Punkt betrifft die Reproduzierbarkeit von Ergebnissen. Die README vergleicht den Ansatz mit dem Vorgehen hinter großen Reasoning-Modellen wie DeepSeek R1 oder GPT-5 Thinking, ohne Messwerte zu nennen. Wer aus dem Repository eine Aussage über erreichbare Genauigkeit ableiten will, findet in der README keine Grundlage dafür. Das ist kein Mangel des Buches, sondern eine Erwartungshaltung, die man ablegen sollte: Hier wird der Mechanismus gezeigt, nicht ein Ergebnis behauptet.

Alternative: TRL statt Kapitelnotebooks

Wer Reinforcement Learning für Sprachmodelle produktiv einsetzen will, greift üblicherweise zu einer Bibliothek wie TRL aus dem Hugging-Face-Ökosystem. Der Unterschied liegt nicht im Verfahren, sondern in der Form. TRL stellt Trainer-Klassen und Konfigurationsobjekte bereit, die man in ein bestehendes Trainingsskript einhängt und über Parameter steuert. Das Repository hier stellt Notebooks bereit, in denen die Loss-Berechnung und der Trainingsschritt sichtbar im Code stehen. Bei TRL liest man die Dokumentation der Trainer-Parameter, hier liest man die Implementierung selbst.

Das hat Folgen für beide Richtungen. Wer verstehen will, warum eine GRPO-Variante sich anders verhält, findet in einem Kapitelnotebook die Zeilen, in denen der Unterschied steckt, während er in einer Trainer-Abstraktion erst durch die Dokumentation und den Quellcode der Bibliothek hindurch muss. Umgekehrt bekommt man bei TRL verteiltes Training, Logging und Checkpoint-Verwaltung mitgeliefert, was die Notebooks nicht leisten. Die Wahl ist also keine Frage der Qualität, sondern der Frage, ob man den Mechanismus sehen oder ihn betreiben will. Kapitel 7, das GRPO verbessert, ist in dieser Hinsicht der klarste Fall für das Buch, weil dort genau die Details interessant sind, die eine Abstraktion verdeckt.

Lizenz, Pflege und was vor dem Start zu prüfen ist

Das Repository steht unter Apache-2.0. Diese Lizenz erlaubt kommerzielle Nutzung, Verbreitung und Änderung, verlangt aber die Beibehaltung von Copyright-Hinweisen und Lizenztext und enthält eine ausdrückliche Patentgewährung sowie eine Haftungsfreistellung. Wer Code aus den Notebooks in ein eigenes Produkt übernimmt, sollte die betreffenden Zellen mit Herkunftshinweis versehen. Eine rechtliche Bewertung ist das nicht, und der Bucheigentümer sollte bei einer geplanten Verwertung ohnehin prüfen, ob Buchinhalt und Repository-Code unterschiedlichen Bedingungen unterliegen.

Zur Pflege: Der letzte Push datiert auf den 6. September 2026, die einzige sichtbare Veröffentlichung ist v1.0 vom 18. Mai 2026. Das Repository ist nicht archiviert. Ob nach dem Buchrelease weitere Kapitel oder Korrekturen folgen, lässt sich aus der Materialbasis nicht ableiten, und die Kapitelüberschrift Table of Contents (In Progress) deutet darauf hin, dass der Stand nicht als abgeschlossen markiert ist. Dass die README an einer Stelle mitten im Absatz zu den Hardwareanforderungen abbricht, passt zu diesem Bild.

Vor dem ersten Start sind drei Dinge zu prüfen. Erstens, ob die Plattform abgedeckt ist: Die Workflows tests-linux.yml, tests-macos.yml und tests-windows.yml zeigen, für welche Systeme getestet wird. Zweitens, ob die eigene GPU-Umgebung zum Laden von Qwen3 passt, wozu Kapitel 2 die Anleitung liefert. Drittens, ob man bereit ist, den Code als Lehrmaterial zu behandeln. Wer ihn als Abhängigkeit einplant, plant mit einem Buch.

Redaktionelles Fazit

Wer Reasoning-Methoden einmal selbst durchgerechnet haben will, findet hier neun Kapitel plus sieben Anhänge mit Notebooks, die auf Consumer-Hardware laufen sollen. Wer eine Bibliothek mit stabilem API sucht, sollte nicht damit planen. Vor dem Klonen lohnt ein Blick in ch02/01_main-chapter-code/ch02_main.ipynb, ob die dort gezeigte Qwen3-Ladung zur eigenen Umgebung passt.

Offizielle Quellen

  1. License: Apache-2.0
  2. Project website
  3. rasbt/reasoning-from-scratch on GitHub
  4. README
  5. Releases
Community-Notizen

Community-Notizen