CS336: Sprachmodellierung von Grund auf
(cs336.stanford.edu)- Sprachmodelle sind die Grundlage moderner NLP-Anwendungen und eröffnen ein neues Paradigma, bei dem ein einziges universelles System verschiedene Teilaufgaben abdeckt
- Dieser Kurs lässt den gesamten Entwicklungsprozess von Sprachmodellen direkt umsetzen – von der Sammlung und Bereinigung von Daten für das Pretraining über den Aufbau von Transformern und das Training bis zur Evaluierung vor dem Deployment
- Die Aufgaben beginnen mit der Implementierung von Tokenizer, Modellarchitektur und Optimizer und erweitern sich bis zu GPU-Optimierung, einer Triton-Implementierung von FlashAttention2 und Code für verteiltes Training
- Für die Teilnahme sind Python- und Software-Engineering-Erfahrung, PyTorch, Systemkonzepte wie Speicherhierarchien sowie Kenntnisse in Analysis, linearer Algebra, Wahrscheinlichkeitsrechnung, Statistik und Machine Learning erforderlich
- Der implementierungsorientierte Kurs mit 5 Units schränkt den Rückgriff auf bestehenden Code und direkte LLM-Lösungen ein und empfiehlt CPU-Debugging vor GPU-Training und Benchmarks
Ziele und Umfang des Kurses
- Sprachmodelle sind der Grundpfeiler moderner Natural Language Processing (NLP)-Anwendungen und eröffnen ein neues Paradigma, in dem ein einziges universelles System mehrere Teilaufgaben übernimmt
- Da die Bereiche AI, ML und NLP weiter wachsen, wird ein tiefes Verständnis von Sprachmodellen sowohl für Wissenschaftler als auch für Ingenieure immer wichtiger
- Inspiriert von Betriebssystemkursen, in denen ein komplettes Betriebssystem von Grund auf gebaut wird, verfolgt dieser Kurs den gesamten Prozess, in dem Studierende selbst ein Sprachmodell entwickeln
- Der behandelte Umfang reicht von der Sammlung und Bereinigung von Pretraining-Daten über den Aufbau von Transformer-Modellen und das Training bis zur Evaluierung vor dem Deployment
Erforderliche Kompetenzen
- Die meisten Aufgaben werden in Python durchgeführt, und im Vergleich zu anderen AI-Kursen wird nur ein minimales Maß an Scaffolding bereitgestellt
- Die zu schreibende Code-Menge ist mindestens um eine Größenordnung höher als in anderen Kursen, daher sind solide Python- und Software-Engineering-Kenntnisse sehr wichtig
- Einen großen Teil macht die Aufgabe aus, neuronale Sprachmodelle schnell und effizient auf GPUs über mehrere Maschinen hinweg auszuführen
- Erwartet werden eine sehr gute Vertrautheit mit PyTorch sowie grundlegende Systemkonzepte wie Speicherhierarchien
- Man sollte sicher mit Matrix- und Vektornotation und entsprechenden Operationen, Wahrscheinlichkeiten, Gauß-Verteilungen, Mittelwert, Standardabweichung sowie Grundlagen von Machine Learning und Deep Learning umgehen können
- Der Kurs umfasst 5 Units und ist stark implementierungsorientiert, daher sollte man ausreichend Zeit einplanen
Aufbau der Aufgaben
- Assignment 1 Basics implementiert den Tokenizer, die Modellarchitektur und den Optimizer, die für das Training eines standardmäßigen Transformer-Sprachmodells erforderlich sind, und trainiert ein minimales Sprachmodell
- Assignment 2 Systems profiliert und benchmarkt das Modell und die Layer aus Assignment 1 mit fortgeschrittenen Tools, optimiert FlashAttention2 mit einer eigenen Triton-Implementierung und erstellt speichereffizienten Code für verteiltes Training
- Assignment 3 Scaling dient dazu, die Funktion jeder Komponente des Transformers zu verstehen und durch Anfragen an die Trainings-API ein Scaling Law zur Vorhersage der Modellskalierung anzupassen
- Assignment 4 Data wandelt rohe Common-Crawl-Dumps in nutzbare Pretraining-Daten um und verbessert die Modellleistung durch Filterung und Deduplizierung
- Assignment 5 Alignment and Reasoning RL wendet Supervised Fine-Tuning und Reinforcement Learning an, um ein LM darauf zu trainieren, bei der Lösung mathematischer Probleme zu schlussfolgern
- Optional Part 2 von Assignment 5 implementiert und verwendet Sicherheits-Alignment-Methoden wie DPO
GPU-Compute und Kosten
- Wer den Kurs von zu Hause aus nachvollzieht, kann die Aufgaben mithilfe von GPU-Compute eines Cloud-Anbieters abschließen
- Stand 28. März 2026 beträgt der öffentliche Preis für eine einzelne B200-GPU bei Modal 6,25 $/Stunde, bei Lambda Labs 6,69 $/Stunde, bei RunPod 4,99 $/Stunde, bei Nebius 5,50 $/Stunde oder 3,05 $/Stunde als Spot-Instanz und bei Together 7,49 $/Stunde
- Modal bietet monatlich 30 $ kostenlosen Compute, berechnet nur tatsächlich genutzten Compute und vereinfacht den Wechsel zwischen lokaler Entwicklung und groß angelegten GPU-Experimenten
- Um Kosten zu sparen und die Arbeit zu vereinfachen, wird empfohlen, die Korrektheit der Implementierung zunächst auf der CPU zu debuggen und für Trainingsläufe oder Benchmarks von GPU-Operationen die in den Aufgaben empfohlene Anzahl an GPUs zu verwenden
Kursbetrieb und Abgaberegeln
- Die Vorlesung findet montags und mittwochs von 3:00–4:20pm im Skilling Auditorium statt; Aufzeichnungen sind in der YouTube playlist verfügbar
- Alle kursbezogenen Fragen müssen im öffentlichen Slack-Kanal gestellt werden, und alle Ankündigungen erfolgen ebenfalls über Slack
- Alle Aufgaben werden bis zum Abgabetermin über Gradescope eingereicht; Einreichungen per E-Mail werden nicht akzeptiert
- Bis zur Deadline kann beliebig oft erneut eingereicht werden, bewertet wird nur die letzte Abgabe
- Eine teilweise Abgabe ist besser als gar keine Abgabe
- Pro Student können 6 Late Days genutzt werden; 1 Late Day verlängert die Frist um 24 Stunden
- Pro Aufgabe können maximal 3 Late Days verwendet werden
- Wer bei der Bewertung einen objektiven Fehler vermutet, kann innerhalb von 3 Tagen nach Bekanntgabe der Note über Gradescope eine Neubewertung beantragen
Richtlinien zu Zusammenarbeit und AI-Tools
- Lerngruppen sind erlaubt, aber jeder Studierende muss die eigene Aufgabe verstehen und selbst abschließen, und pro Studierendem ist eine eigene Abgabe einzureichen
- Wenn in einer Gruppe gearbeitet wurde, müssen die Namen der Mitglieder der Lerngruppe oben auf der Aufgabe angegeben werden
- LLM-Prompts wie für ChatGPT sind für Low-Level-Programmierfragen oder High-Level-Konzeptfragen zu Sprachmodellen erlaubt
- Der direkte Einsatz von LLMs zur Lösung der Aufgaben ist verboten
- Bei der Bearbeitung der Aufgaben wird dringend empfohlen, AI-Autovervollständigung wie Cursor Tab oder GitHub CoPilot zu deaktivieren; nicht-AI-basierte Autovervollständigung wie die automatische Ergänzung von Funktionsnamen ist erlaubt
- Da die Kursmaterialien die für die eigene Implementierung nötigen Inhalte enthalten, soll man keinen online verfügbaren bestehenden Implementierungscode ansehen, sofern dies im Assignment-Handout nicht ausdrücklich erlaubt ist
1 Kommentare
Hacker-News-Kommentare
Ich habe die Version des Kurses von 2025 vor Kurzem abgeschlossen, die Videos angesehen und die meisten Aufgaben bearbeitet, aber einige teurere Teile ausgelassen. Schon die ersten beiden Aufgaben erforderten enorm viel Nachdenken und Debugging, und obwohl ich bereits etwas Grundlagenwissen im Deep Learning hatte, hat es mit ein bisschen Zeit nach Feierabend und an den Wochenenden mehrere Monate gedauert
Es ist schwer vorstellbar, wie Stanford-Studierende ihre Aufgaben im Zweiwochenrhythmus abgeben können. Das Lehrteam und die TAs haben offensichtlich sehr viel Arbeit in die Kursgestaltung, die Folien mit den neuesten Entwicklungen und die hervorragenden Aufgaben gesteckt, und es ist sehr erfüllend, selbst zu sehen, wie sich alles zusammenfügt, indem man von kleinen Komponenten aus ein echtes Sprachmodell baut und die zentralen Teile der LLM-Pipeline überprüft
Allerdings hätte ich mir klarere Hinweise zu den Anforderungen an die Laufzeitumgebung gewünscht. Das Harness funktioniert am besten unter Linux + NVIDIA-GPU und erwartet bestimmte CUDA-Versionen oder Architekturen; für Forschende ist das selbstverständlich, in einer privaten Umgebung aber selten. Wenn man das zu Hause nachvollziehen will, sind Windows + WSL2 + NVIDIA-GPU oder gemietete GPUs auf verschiedenen Plattformen die zweitbeste Lösung, aber beides ist weder einfach noch billig. Es wäre auch hilfreich, zu erklären, wie Leute ohne kompatible GPU möglichst viel aus dem Kurs herausholen können, und ich habe außerdem gelernt, dass Python-Code unter Mac OS bei unvorsichtiger Speicheranalyse hängen bleiben und einen Neustart erzwingen kann
In diesen Kommentaren werden die GPU-Mietkosten teilweise auch etwas übertrieben. Der Großteil der Entwicklung läuft lokal, und nur bei Bedarf lässt man kurze Jobs auf On-Demand-GPUs laufen. Aufgabe 1 lässt sich auch ohne GPU komplett auf einer lokalen Maschine ausführen, und auch Aufgabe 1 und 2 sind mit nur wenigen Stunden Mietzeit größtenteils machbar. Selbst wenn man ohne große Vorsicht durchgehend gemietete GPUs nutzt, landet man bei etwa 200 Dollar, und wenn man bereit ist, die Problemgröße zu verringern, kommt man leicht unter 50 Dollar. Solche Punkte und die möglichen Anpassungen könnten wir vermutlich klarer in einer Tabelle darstellen
Wenn es weiteres Feedback oder Probleme gibt, wäre es gut, im Repository ein Issue zu eröffnen. Dinge, von denen wir nichts wissen, lassen sich schwer beheben
Ich habe vor ein paar Tagen mit Claude eine verbesserte Version von gpt-1 implementiert. Ich bin kein Machine-Learning-Ingenieur, sondern ein ganz normaler Backend-Ingenieur, und am Ende ist es eine Mischung aus gpt-1 und KellerJordans modded-nanogpt geworden
Ich konnte die Ergebnisse aus dem ursprünglichen gpt-1-Paper auf einem Gaming-PC reproduzieren, und der VRAM-Bedarf ist auch nicht besonders hoch. Mit einer NVIDIA GeForce RTX 2060 SUPER konnte ich die meisten Resultate schon nach einer Stunde Training reproduzieren, daher würde ich allen mit Interesse an LLM-Pretraining empfehlen, etwas Ähnliches auszuprobieren
Den Code gibt es hier: https://github.com/epoyraz/modded-gpt-1
Oder man fragt einfach Claude 4.8 oder Codex 5.5
Ich habe gute Erinnerungen an cs224d, das richardsocher unterrichtet hat. Es stammt noch aus der Zeit vor den Transformern und wirkt heute etwas veraltet, war damals aber ein großartiger Einführungskurs in die Anwendung von Deep Learning auf die natürliche Sprachverarbeitung
https://cs224d.stanford.edu
Es heißt zwar „GPU-Rechenleistung zum Selbststudium“, aber die in den Empfehlungen genannte B200 beginnt bei 4,99 Dollar pro Stunde. Ich bin nicht sicher, ob man das wirklich braucht, um überhaupt anzufangen
Ich baue gerade selbst ein LLM komplett von Grund auf, und in der Anfangsphase brauchte ich nichts über einer 4090 von Vast.ai
Dieses Jahr hatten wir das Glück, für Stanford-Studierende Blackwell-GPUs zu bekommen, deshalb wurden die Aufgabenbeschreibungen hauptsächlich darauf zugeschnitten
Umgekehrt muss die Hardware, die man braucht, um zu lernen und zu experimentieren, wie man Compute-Kernel oder IP-Blöcke entwirft, deutlich leistungsfähiger sein oder mehr Kapazität haben. Solche Experimentierartefakte stehen absichtlich am entgegengesetzten Ende der Optimierungsskala: Sie sollen in jedem Schritt gut lesbar, leicht einsehbar und gut debugbar sein, weshalb das resultierende Modell oder der Bitstream stark aufgebläht und unoptimiert ist
Ein von anderen fertiggestelltes und für Hardware wie eine 4090 optimiertes Modell mit eigenen Prompts auszuführen, ist zwar auch eine Art Experiment, aber günstig machbar. Das ist ähnlich, als würde man einen von anderen entworfenen und synthetisierten Bitstream für ein 20-Dollar-FPGA auf dasselbe FPGA laden und eigene Eingangssignale anlegen. Aber die Art von Experimenten, die man in diesem Kurs beim Erlernen des eigenen Modelldesigns macht, ist nicht von dieser Sorte
Die Vorlesung wirkt spannend, aber mich interessieren auch die Voraussetzungen. Es heißt, man sollte mit den Grundlagen von Machine Learning und Deep Learning vertraut sein; ich würde gern wissen, ob es dafür gute Materialien zum Selbststudium mit Fokus auf Implementierung gibt oder Erfahrungen mit aufgezeichneten Stanford-Vorlesungen.
Allerdings behandelt CS336 deutlich mehr State-of-the-Art-Methoden, daher ist dafür die Version von 2026 wichtig.
Vorlesung: https://web.stanford.edu/class/archive/cs/cs224n/cs224n.1246...
Vorlesungsvideos: https://www.youtube.com/playlist?list=PLoROMvodv4rOaMFbaqxPD...
Lehrbuch: https://web.stanford.edu/~jurafsky/slp3/
Wirklich großartig. Ich habe im letzten Monat etwas Ähnliches gemacht und mir als Herausforderung gesetzt, außer der Python-Standardbibliothek überhaupt keine Libraries zu verwenden, nicht einmal numpy.
Ich habe mit Word2Vec angefangen, dann RNN und LSTM gebaut und bin jetzt ungefähr zur Hälfte mit der Implementierung der Transformer-Architektur fertig.
Ich habe eine Gruppe gegründet, um diesen Kurs gemeinsam anhand der öffentlich verfügbaren YouTube-Videos und Vorlesungsunterlagen zu verfolgen. Es ist schwierig, aber lohnend, und wir sind mit einem Vorlesungsvideo pro Woche vorangekommen.
Gestartet sind wir mit über 30 Leuten, aber in der letzten Sitzung waren nur noch 8 dabei.
Ich würde es gern versuchen, aber ich habe Sorge, dass mir die nötigen Fähigkeiten noch fehlen. Vielleicht ist es irgendwann möglich.
Ich frage mich, was die minimale GPU ist, um diesen Kurs zu Hause nachzuvollziehen. Ich habe eine 5080 mit 16GB — braucht man wirklich mehr als das?
Ich habe die ersten beiden Aufgaben über ein Jahr hinweg selbstständig bearbeitet und dabei wirklich viel gelernt. Mich würde interessieren, welche Vorlesungen danach noch sinnvoll sind.
Was bei CS336 etwas gefehlt hat, war die Vermittlung der Reinforcement-Learning-Bausteine; dafür waren die Vorlesungen 5 und 6 von CME 295 besser.
https://cme295.stanford.edu/syllabus/
Ich habe außerdem gehört, dass CME 296, ein Kurs zu Diffusionsmodellen, ebenfalls gut sein soll und als nächster Schritt passend wirkt.
https://cme296.stanford.edu/syllabus/