- rasbt/LLMs-from-scratch ist ein Repository mit Code zum Entwickeln, Vortrainieren und Finetunen eines GPT-ähnlichen LLM und dient als offizielles Code-Repository zum Manning-Buch Build a Large Language Model (From Scratch)
- Der Lernansatz besteht darin, für Bildungszwecke ein kleines, aber funktionsfähiges Modell von Grund auf zu erstellen, und folgt damit einem ähnlichen Ablauf wie beim Aufbau der großen Foundation-Modelle hinter ChatGPT
- Der Hauptteil bietet kapitelweise Code und Notebooks für Textdatenverarbeitung, Attention-Mechanismen, GPT-Implementierung, Vortraining mit ungelabelten Daten, Finetuning für Textklassifikation und Finetuning zur Befolgung von Anweisungen
- Der Code der wichtigsten Kapitel ist so ausgelegt, dass er auf einem normalen Notebook in angemessener Zeit läuft, nutzt GPU automatisch, wenn verfügbar, und ist in PyTorch ohne externe LLM-Bibliotheken implementiert
- Anhänge und Bonusmaterial erweitern den Stoff um LoRA, KV Cache, MoE, Implementierungen der Llama-/Qwen-/Gemma-Familien, Evaluation, DPO und UI-Beispiele, sodass sich der LLM-Lernprozess praxisnah vertiefen lässt
Ziel des Repositorys und Beziehung zum Buch
- rasbt/LLMs-from-scratch ist ein Code-Repository zur Implementierung eines GPT-ähnlichen LLM von Grund auf
- Es wird als offizielles Code-Repository zum Manning-Buch Build a Large Language Model (From Scratch) bereitgestellt
- Das Buch ist so aufgebaut, dass man durch schrittweises Programmieren versteht, wie LLMs intern funktionieren
- Die Erklärungen enthalten Text, Diagramme und Beispiele
- Man entwickelt und trainiert selbst ein kleines, aber funktionsfähiges Modell für Lernzwecke
- Das Repository enthält auch Code zum Laden größerer vortrainierter Modellgewichte und zu deren Finetuning
- Buchinformationen:
Installation und Nutzung des Codes
- Das Repository kann per ZIP-Download oder mit
git clone bezogen werden
git clone --depth 1 https://github.com/rasbt/LLMs-from-scratch.git
- Wer das Code-Bundle von der Manning-Website erhalten hat, wird darauf hingewiesen, die neuesten Updates im offiziellen GitHub-Repository zu prüfen
- Installation von Python und Paketen sowie die Einrichtung der Code-Umgebung werden in setup/README.md behandelt
- Ein Dokument zur Fehlerbehebung wird als Troubleshooting Guide bereitgestellt
Lernablauf nach Kapiteln
- Buch und Repository unterteilen die LLM-Implementierung in ein schrittweises Curriculum
- Aufbau der Hauptkapitel:
- Ch 1: LLMs verstehen, kein Code
- Ch 2: Mit Textdaten arbeiten
- Ch 3: Attention-Mechanismen implementieren
- Ch 4: Das GPT-Modell von Grund auf implementieren
- Ch 5: Vortraining mit ungelabelten Daten
- Ch 6: Finetuning für Textklassifikation
- Ch 7: Finetuning zur Befolgung von Anweisungen
- Die Anhänge enthalten eine Einführung in PyTorch, Literaturverweise, Lösungen zu Übungsaufgaben, Verbesserungen der Trainingsschleife und parameter-effizientes Finetuning auf Basis von LoRA
Vorkenntnisse und Laufzeitumgebung
- Die wichtigste Voraussetzung sind Grundkenntnisse in Python-Programmierung
- Erfahrung mit Deep-Learning-Neuronalen Netzen kann einige Konzepte vertrauter machen
- Der Code wird ohne externe LLM-Bibliotheken vollständig in PyTorch von Grund auf implementiert
- Fortgeschrittene PyTorch-Kenntnisse sind nicht zwingend erforderlich
- Grundkenntnisse in PyTorch sind hilfreich
- Appendix A bietet eine kurze Einführung in PyTorch
- Der Code der Hauptkapitel ist so konzipiert, dass er auf einem normalen Notebook in angemessener Zeit läuft
- Spezielle Hardware ist nicht erforderlich; eine GPU wird automatisch verwendet, falls vorhanden
Videokurs und Folgebuch
- Bei Manning gibt es einen begleitenden Videokurs mit 17 Stunden und 15 Minuten Laufzeit, der der Buchstruktur folgt
- Er spiegelt die Kapitel- und Abschnittsstruktur des Buchs wider
- Er kann als eigenständige Alternative oder als ergänzendes Material zum Mitprogrammieren genutzt werden
- Vorgestellt wird auch das Buch Build A Reasoning Model (From Scratch)
- Es ist ein eigenständiges Buch, kann aber als Fortsetzung von Build A Large Language Model (From Scratch) gesehen werden
- Es implementiert Ansätze zur Verbesserung von Schlussfolgerungsfähigkeiten ausgehend von vortrainierten Modellen
- Enthaltene Ansätze: inference-time scaling, Reinforcement Learning, Distillation
- Zugehöriges Repository: rasbt/reasoning-from-scratch
Übungsaufgaben und Bonusmaterial
- Jedes Kapitel enthält mehrere Übungsaufgaben
- Die Lösungen sind in Appendix C zusammengefasst, und die zugehörigen Code-Notebooks befinden sich in den jeweiligen Kapitelordnern
- Auf der Manning-Website ist das kostenlose 170-seitige PDF Test Yourself On Build a Large Language Model (From Scratch) erhältlich
- Es enthält pro Kapitel etwa 30 Quizfragen und Lösungen
-
Wichtige Bonusthemen
- Setup:
- Tipps zur Python-Einrichtung
- Installation von Paketen und Bibliotheken
- Docker-Umgebung einrichten
- Ch 2:
- Einen BPE-Tokenizer von Grund auf implementieren
- Vergleich mehrerer BPE-Implementierungen
- Unterschied zwischen Embedding-Layer und linearem Layer
- Intuition für dataloader anhand einfacher Zahlen
- Ch 3:
- Vergleich effizienter Implementierungen von multi-head attention
- PyTorch buffers verstehen
- Ch 4:
- FLOPs-Analyse
- KV Cache
- Grouped-Query Attention, Multi-Head Latent Attention, Sliding Window Attention
- Gated DeltaNet, DeepSeek Sparse Attention, Cross-Layer KV Sharing
- Mixture-of-Experts
- Ch 5:
- Alternative Methoden zum Laden von Gewichten
- Vortraining auf dem Project-Gutenberg-Datensatz
- Verbesserung der Trainingsschleife
- Hyperparameter-Optimierung
- UI zur Interaktion mit einem vortrainierten LLM
- GPT in Llama umwandeln
- Speicher-effizientes Laden von Modellgewichten
- Tiktoken-BPE-Tokenizer erweitern
- PyTorch-Performance-Tipps für schnelles LLM-Training
- Implementierungen von Llama 3.2, Qwen3, Gemma 3, Olmo 3, Tiny Aya, Qwen3.5, Gemma 4
- Ch 6:
- Zusätzliche Experimente zum Finetuning anderer Layer und größerer Modelle
- Klassifikations-Finetuning auf dem 50k-IMDb-Filmrezensionen-Datensatz
- UI für einen GPT-basierten Spam-Klassifikator
- Ch 7:
- Datensatz-Utilities zur Erkennung naher Duplikate und zur Generierung von Einträgen im Passiv
- Bewertung von Instruktionsantworten mit der OpenAI API und Ollama
- Erstellung und Verbesserung von Datensätzen für Instruktions-Finetuning
- Erstellung eines preference dataset mit Llama 3.1 70B und Ollama
- LLM-Alignment mit DPO implementieren
- UI für ein instruktions-finetuntes GPT-Modell
Beiträge und Zitierung
- Feedback und Fragen werden im Manning Forum oder in GitHub Discussions entgegengenommen
- Da es sich um ein Code-Repository zum gedruckten Buch handelt, können derzeit keine Beiträge angenommen werden, die den Inhalt des main chapter code erweitern
- Diese Einschränkung soll Unterschiede zwischen dem gedruckten Buch und dem Code vermeiden
- Wenn Buch oder Code für die Forschung nützlich sind, wird eine Zitierung empfohlen
- Es werden eine Chicago-Style-Zitierung und ein BibTeX-Eintrag bereitgestellt
1 Kommentare
Kommentare auf Hacker News
Bislang scheint der Fine-Tuning-Guide die beste Ressource zu sein.
https://ravinkumar.com/GenAiGuidebook/language_models/finetu...
LLMs sind ein wichtiges Thema, aber es gibt viele Videos und Texte, die nur oberflächlich darüber hinweggehen. Wenn man ein LLM von Grund auf codet, werden viele Konzepte klarer, denke ich.
Nebenbei soll es auch Menschen helfen, die ihr eigenes LLM bauen wollen. Im Buch wird die gesamte Pipeline einschließlich Pretraining und Fine-Tuning codiert, aber da ich es finanziell für unrealistisch halte, ein LLM vorzutrainieren, werde ich auch zeigen, wie man vortrainierte Gewichte lädt.
Es wird ein GPT-2-ähnliches LLM verwendet, alles von Grund auf implementiert, und man kann Gewichte laden – vom 124M-Modell, das auf einem Notebook läuft, bis zum 1558M-Modell, das auf einer kleinen GPU läuft. In der Praxis würde man zwar Frameworks wie HF transformers oder axolotl verwenden, aber ich hoffe, dass dieser Ansatz des Selbst-Implementierens den Prozess weniger wie eine Blackbox wirken lässt.
import torchist, ist es wohl nicht ganz von Grund auf implementiert :-)Niemand, der in diesem Bereich arbeitet, berechnet die Ableitungen solcher Modelle von Hand. In Begriffen differenzierbarer Programmierung zu denken, ist eine Grundannahme, und in diesem Fall kann man das durchaus als „von Grund auf“ betrachten.
Jedes Mal, wenn ich solche Kommentare sehe, habe ich den Verdacht, dass die Person nicht wirklich versteht, was intern passiert oder wie modernes Machine Learning funktioniert.
[1] https://karpathy.ai/zero-to-hero.html
Für normale Entwickler ist das deutlich zugänglicher und setzt keinen mathematischen Hintergrund voraus. Es ist ein guter Ausgangspunkt, danach versteht man andere ähnliche Materialien allmählich besser.
Die Erstellung von Lernmaterial ist absurd viel Arbeit, und selbst wenn dieses Buch sehr erfolgreich wird, wird rasbt, wenn man die Einnahmen auf die investierte Zeit umlegt, keinen sinnvollen Stundenlohn herausbekommen.
Es gibt viele Menschen, die dieses Thema verstehen, aber was haben sie mit diesem Wissen gemacht? Sie haben es für sich behalten, sind zu OpenAI gegangen, halten ihr Wissen nicht öffentlich und verdienen damit viel mehr Geld.
Wenn man in einer Welt leben möchte, in der solches Wissen offen verfügbar ist, sollte man meiner Meinung nach zumindest davon absehen, sich öffentlich über ein Buch zu beschweren, das ungefähr so viel kostet wie ein ordentliches Abendessen.
Mein Ziel ist, dass etwas wie ein Mondlander das Landen lernt. Ganz einfach: bei 100 Fuß Höhe starten, Schub in eine Richtung geben und so lange weiterprobieren, bis weniger Krater entstehen.
Danach möchte ich Variablen wie horizontale Bewegung hinzufügen, horizontale Triebwerke einbauen und später die horizontalen Triebwerke entfernen und den Lander rotieren lassen.
Ich habe überhaupt keine Ahnung, wo ich anfangen soll, und frage mich, ob dieses Buch, das nach „Mainstream“-Machine-Learning aussieht, dabei hilfreich wäre.
In Pythons gymnasium[1]-Bibliothek gibt es eine Mondlander-Umgebung, die als Referenz nützlich sein könnte. Das war die Umgebung, auf die ich mich beim Lernen am stärksten konzentriert habe, und ich habe sie auf mehrere Arten gelöst.
Du kannst dir auch mein Notebook2 ansehen, das ich vor Kurzem beim Implementieren von Soft Actor Critic in PyTorch verwendet habe. Es ist kein gutes Lehrmaterial, aber vielleicht kannst du etwas daraus mitnehmen.
[0]: https://www.manning.com/books/grokking-deep-reinforcement-le...
[1]: https://gymnasium.farama.org/environments/box2d/
Selbst etwas wie AlphaGo kann man letztlich eher als Arbeit verstehen, bei der tiefe neuronale Netze als Eingabe für klassische Reinforcement-Learning-Verfahren verwendet werden
Sutton und Bartos Reinforcement Learning: An Introduction gilt weithin als das maßgebliche Einführungsbuch zu diesem Thema
Es gibt auch andere allgemeine Machine-Learning-/Deep-Learning-Bücher, die ein recht ausführliches Einführungskapitel zu Reinforcement Learning enthalten (https://github.com/rasbt/machine-learning-book/tree/main/ch1...). Trotzdem ist in diesem Fall, wie andere schon gesagt haben, ein spezielles Reinforcement-Learning-Buch passender
https://www.ida.liu.se/~TDDC17/info/labs/rl.en.shtml
[0] https://www.youtube.com/watch?v=kCc8FmEb1nY
Statt eines zeichenbasierten LLM wird ein echtes wortbasiertes LLM implementiert, nach dem Pretraining wird gezeigt, wie Pretraining-Gewichte geladen werden, und dieses LLM wird per Instruction Fine-Tuning weitertrainiert
Außerdem wird der Alignment-Prozess eines per Instruction Fine-Tuning trainierten LLM codiert, und Fine-Tuning für Klassifikationsaufgaben wird ebenfalls gezeigt. Im ganzen Buch gibt es viele Abbildungen; allein Kapitel 3 hat 26 Abbildungen :)
Das Video sieht ebenfalls hervorragend aus. Da es 2 Stunden lang ist, dürfte es als solide ergänzende Einführung gut geeignet sein. Das Buch zu lesen wird vermutlich etwa das Zehnfache an Zeit brauchen
Ich habe es mir auch mehrmals angesehen, um das meiste gut zu verstehen
Natürlich muss man auch PyTorch sehr gut kennen und Dinge wie Matrixmultiplikation, Backpropagation usw. verstehen. Außerdem spricht er sehr schnell
Zum Beispiel weiß ich, dass Attention in verschiedenen Modellen verwendet wird und Transformer auch außerhalb von Sprachmodellen eingesetzt werden
Ich frage mich, ob man mit diesem Buch Attention und Transformer gut genug verstehen kann, um sie auch außerhalb von Sprachmodellen zu verwenden
Der Unterschied besteht darin, dass bei LLMs Text in Tokens umgewandelt wird und diese Tokens in Vektor-Embeddings transformiert werden, die in das LLM eingehen. Bei Vision Transformern verwendet man statt eines Bildes als Token Bild-Patches als Tokens und wandelt diese in Vektor-Embeddings um
Ob Text oder Vision: Es ist derselbe Attention-Mechanismus, und in beiden Fällen nimmt er Vektor-Embeddings als Eingabe
(*Kapitel 3 habe ich bereits letzte Woche eingereicht, und es wird demnächst in MEAP erscheinen. Bis dahin kann man den Code zusammen mit den Notizen hier ansehen: https://github.com/rasbt/LLMs-from-scratch/blob/main/ch03/01...)