diy-llm: ein chinesischsprachiger CS336-Nachbau mit sechs Pflichtabgaben
Covers pre-training data, Tokenizer, Transformer, MoE,distributed training, Scaling Laws, inference & alignment .6 progressive code assignments for full-stack LLM learning | 涵盖预训练数据、分词器、Transformer、MoE、分布式训练、缩放定律、推理与对齐,6 项渐进代码作业,掌握 LLM 全栈知识
Auf einen Blick
- Was ist das?
- Das Repository datawhalechina/diy-llm ist ein Lehrgang zum Bau großer Sprachmodelle, der die Vorlesung Stanford CS336 in chinesischer Sprache neu ordnet und um sechs progessive Programmierabgaben ergänzt. Wer ihn durcharbeitet, braucht ein GPU-fähiges Rechenumfeld, denn die Kapitel reichen von BPE über FlashAttention bis zu GRPO.
- Für wen ist es gedacht?
- Sinnvoll ist diy-llm für chinesischsprachige Leser mit PyTorch-Erfahrung und Zugang zu mindestens einer GPU, die den vollständigen Weg von der Tokenisierung bis zur Bewertung einmal selbst gehen wollen. Wer nur eine Bibliothek für ein Produktionsmodell sucht oder kein Chinesisch liest, sollte Abstand nehmen.
- Darf ich es kommerziell nutzen?
- Nicht ohne Erlaubnis. GitHub findet in diesem Repository keine Lizenzdatei, und ohne Lizenz sind standardmäßig alle Rechte vorbehalten: Sie dürfen den Code lesen, aber nicht wiederverwenden. Prüfen Sie die README oder fragen Sie die Autoren, bevor Sie ihn nutzen.
- Wird es noch gepflegt?
- Ja. Die letzten Commits kamen vor 6 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
Welche Lücke der Lehrgang schließt
Stanford CS336 behandelt den kompletten Weg zum eigenen Sprachmodell, ist aber englischsprachig und geht von einem Umfeld aus, das nicht überall verfügbar ist. diy-llm setzt genau dort an. Die Projektbeschreibung nennt als Ziel, keine reine Übersetzung zu sein, sondern eine für chinesische Lernende gebaute Werkstatt. Das äußert sich konkret in der Themenwahl: Die README kündigt an, verstärkt Qwen und DeepSeek als Beispiele zu behandeln, also Modelle, die im chinesischen Open-Source-Ökosystem verbreitet sind. Die Zielgruppe ist damit enger umrissen als bei einem allgemeinen Kurs. Angesprochen sind Leser, die Python und PyTorch beherrschen, lineare Algebra, Wahrscheinlichkeitsrechnung und Analysis mitbringen und bereit sind, Code zu schreiben statt nur zu lesen. CUDA-Kenntnisse sind laut README ausdrücklich optional, weil Kapitel 7 eine Einführung enthält. Wer dagegen ein fertiges Trainingsframework sucht, das er auf eigene Daten ansetzt, wird hier nicht bedient: Das Repository ist Lehrmaterial mit Übungsaufgaben, kein Werkzeugkasten.
Sechzehn Kapitel, sechs Abgaben und ihre Kopplung
Die Struktur ist der eigentliche Inhalt dieses Projekts. Die README listet sechzehn Kapitel, die von Werkzeugen wie W&B über Tokenizer, PyTorch-Ressourcenrechnung, Architekturdetails, Mixture-of-Experts, GPU-Optimierung, CUDA und Triton, verteiltes Training, Scaling Laws, Inferenz, Datenengineering, Evaluation, Trainingspipeline und verifizierbares Reinforcement Learning bis zu multimodalen Modellen reichen. Diese Kapitel sind nicht gleichmäßig mit Aufgaben hinterlegt. Sechs Abgaben stehen sechzehn Kapiteln gegenüber, und die Zuordnung ist ungleich: assignment1-basics hängt an Kapitel 2 und 4, assignment2-systems an die Kapitel 6, 7 und 8, assignment3-scaling an Kapitel 9, assignment4-data an Kapitel 11, assignment5-alignment an die Kapitel 13 und 14, assignment6-evaluation an die Kapitel 10 und 12. Kapitel 1, 3, 5 und 15 haben keine eigene Abgabe. Wer eine dieser Kapitel durcharbeitet, bekommt also Theorie ohne direktes Übungsformat. Das ist eine bewusste Gewichtung, aber auch eine Lücke: Gerade MoE in Kapitel 5 und die Multimodalität in Kapitel 15 sind Themen, bei denen reines Lesen wenig bringt.
Wie eine Abgabe aufgebaut ist
Die sechs Abgaben sind progressiv angelegt, das heißt jede setzt Fähigkeiten aus der vorherigen voraus. assignment1-basics verlangt laut README die Implementierung von Tokenizer, Modellarchitektur und Optimizer sowie das Training eines minimalen Sprachmodells. assignment2-systems baut darauf auf und fordert Leistungsanalyse, ein FlashAttention-2 in Triton und verteilten Trainingscode. assignment3-scaling lässt ein Scaling Law fitten, um Modellskalierung vorherzusagen. assignment4-data wandelt rohe Common-Crawl-Daten in einen Pretraining-Datensatz um, inklusive Filterung und Deduplizierung. assignment5-alignment trainiert ein Modell per SFT und Reinforcement Learning, genannt wird GRPO, auf mathematische Aufgaben. assignment6-evaluation schließlich nutzt lm-evaluation-harness und evalscope für Bewertungen in den Bereichen Sprachverständnis, Alltagslogik, Code und mathematisches Schließen. Das ist eine durchdachte Reihenfolge: Erst entsteht ein Modell, dann wird es schnell und verteilt, dann wird seine Größe geplant, dann sein Datenbestand kuratiert, dann sein Verhalten ausgerichtet, dann seine Qualität gemessen. Der Datenfluss verläuft also nicht durch eine Pipeline im Repository, sondern durch die Lernbiografie des Lesers.
Installation und was die README offen lässt
Der Einstieg ist bewusst schlank gehalten. Die README zeigt genau zwei Schritte: git clone https://github.com/datawhalechina/diy-llm.git und anschließend cd diy-llm. Danach folgt der Kommentar, dass Basisabhängigkeiten je nach Aufgabe zu installieren sind. Eine requirements.txt, ein pyproject.toml oder ein Lockfile wird im gezeigten Material nicht genannt. Das ist der schwächste Teil der Dokumentation. Wer assignment2-systems mit Triton oder assignment5-alignment mit GRPO bearbeiten will, muss die Abhängigkeiten selbst aus dem jeweiligen Aufgabenordner erschließen. Die README verweist für jede Abgabe auf ein eigenes Verzeichnis unter coursework/, etwa coursework/assignment1-basics/ oder coursework/assignment6-evaluation/, was die Suche strukturiert, aber nicht ersetzt. Auch die Dokumentation selbst liegt als VitePress-Seite vor, konfiguriert im Verzeichnis docs/.vitepress/; die chinesische Fassung liegt unter docs/zh/, die englische unter docs/en/. Für das Lesen der Kapitel braucht man also nur einen Browser oder einen lokalen VitePress-Build, für die Abgaben dagegen eine vollständige Deep-Learning-Umgebung.
Der Status der Kapitel als Reifegrad-Ersatz
Statt Versionsnummern als Qualitätsindikator zu lesen, lohnt der Blick auf die Statustabelle in der README. Sie verwendet fünf Markierungen: erledigt, in Aktualisierung, unvollständig, in Vorbereitung und pausiert. Kapitel 1 (Werkzeuge) trägt unvollständig, Kapitel 16 (Erweiterungen) in Aktualisierung, alle übrigen von Kapitel 2 bis 15 sind als erledigt markiert. Die README selbst schreibt zu den Statuszeichen, dass die Liste fortlaufend gepflegt wird. Für eine Adoption heißt das: Der Kern des Kurses ist nach Angaben des Projekts fertig, die Ränder sind es nicht. Kapitel 1 ist insofern ein Sonderfall, als es W&B-Experimentverfolgung, Hyperparametersuche und Visualisierungsdashboards verspricht und damit Werkzeuge, die in den späteren Abgaben gebraucht würden. Wer den Kurs beginnt, sollte also damit rechnen, dass dieser Einstieg noch dünn ist und man sich die Werkzeugkette selbst zusammenstellt. Die beiden Releases V0.1 vom 10. Juni 2026 und V0.2 vom 17. August 2026 zeigen, dass das Projekt in Abständen von etwa zwei Monaten aktualisiert wird, was für ein Lehrbuchprojekt ein normales Tempo ist.
Lizenz und die Frage der Weiterverwendung
Die Lizenz ist im vorliegenden Material nicht angegeben. Das Repository nennt keine Kennung, und die README enthält keinen Abschnitt dazu. Für einen Kurs, der sich auf Stanford CS336 bezieht und dessen Vorlesungsmaterialien eigene Nutzungsbedingungen haben können, ist das kein Nebenaspekt. Wer die Kapitel ganz oder teilweise in eigene Unterlagen, Firmenschulungen oder kommerzielle Angebote übernehmen will, kann die Bedingungen dafür aus dem Repository allein nicht ableiten. Auch die PDF-Fassung, die über die Release-Seite verteilt wird, ist betroffen: Die README erklärt, dass ein Datawhale-Wasserzeichen eingefügt wurde, um Weiterverkauf durch Marketingkanäle zu erschweren. Das ist eine nachvollziehbare Absicht, ersetzt aber keine Lizenzangabe. Praktisch bleibt nur, vor jeder Weiterverwendung im Wurzelverzeichnis nach einer LICENSE-Datei zu suchen und, falls vorhanden, deren Bedingungen zu lesen. Eine rechtliche Einschätzung lässt sich daraus nicht ableiten, und dieses Material liefert sie auch nicht.
Wo der Ansatz an seine Grenzen stößt
Der offensichtlichste Fehlerfall ist der Rechenbedarf. Kapitel 6 bis 8 behandeln GPU-Optimierung, CUDA, Triton und verteiltes Training mit ZeRO-1/2/3 und FSDP. Die zugehörige Abgabe assignment2-systems verlangt ein selbst geschriebenes FlashAttention-2 in Triton und verteilten Trainingscode. Ohne GPU lässt sich das nicht sinnvoll bearbeiten, und die README macht dazu keine Angabe, welche Hardware ausreicht. Das ist eine echte Einschränkung, keine Formalie. Ein zweiter Punkt betrifft die Sprache: Die Dokumentation liegt unter docs/zh/ auf Chinesisch und unter docs/en/ auf Englisch, die README existiert in beiden Fassungen. Wer kein Chinesisch liest, verliert den eigentlichen Mehrwert gegenüber dem Originalkurs, nämlich die angepassten Beispiele und die erklärte Denkweise. Ein dritter Fall: Wer ein Modell für den Produktionseinsatz sucht, ist hier falsch. Die Abgaben bauen bewusst minimale Modelle, um Mechanismen sichtbar zu machen. assignment1-basics trainiert ausdrücklich ein extrem einfaches Sprachmodell, nicht ein konkurrenzfähiges. Wer vortrainierte Gewichte oder ein Serving-System braucht, findet das in einem anderen Projekt.
Was ein Vergleich mit dem Original zeigt
Die naheliegende Alternative ist Stanford CS336 selbst. Der Unterschied liegt nicht im Stoff, sondern im Zugang. CS336 ist eine Vorlesung mit Vorlesungsvideos, Übungsblättern und einem festen akademischen Zeitplan; diy-llm ist ein Repository, das man im eigenen Tempo durchgeht, mit chinesischen Erklärtexten und einer Kapitelstruktur, die an chinesische Lerngewohnheiten angepasst sein soll. Der zweite Unterschied betrifft die Aufgaben. CS336-Abgaben sind an einen Kurskalender gebunden, diy-llm ordnet seine sechs Abgaben den Kapiteln zu und lässt sie nach Angaben der README progressiv aufeinander aufbauen. Der dritte Unterschied ist die Werkzeugwahl bei der Evaluation: diy-llm nennt lm-evaluation-harness und evalscope, wobei evalscope aus dem ModelScope-Umfeld stammt und damit näher an der chinesischen Infrastruktur liegt als ein rein angelsächsisches Toolset. Wer ohnehin Zugang zu den Originalmaterialien hat und Englisch fließend liest, gewinnt durch diy-llm vor allem die chinesischen Erklärungen und die lokalen Modellbeispiele. Wer den umgekehrten Fall hat, gewinnt den Zugang überhaupt.
Redaktionelles Fazit
Sinnvoll ist diy-llm für chinesischsprachige Leser mit PyTorch-Erfahrung und Zugang zu mindestens einer GPU, die den vollständigen Weg von der Tokenisierung bis zur Bewertung einmal selbst gehen wollen. Wer nur eine Bibliothek für ein Produktionsmodell sucht oder kein Chinesisch liest, sollte Abstand nehmen. Vor dem Einstieg lohnt es sich, die Datei LICENSE im Wurzelverzeichnis zu prüfen und zu klären, ob die Abgabe assignment6-evaluation mit dem in Kapitel 12 genannten lm-evaluation-harness tatsächlich auf der eigenen Hardware lauffähig ist.
Community-Notizen