SmolGPT: Minimale PyTorch-Implementierung zum Trainieren eines kleinen LLM von Grund auf
(github.com/Om-Alve)- Ein einfaches, auf PyTorch basierendes LLM-Trainingsprojekt für Bildungszwecke, das auf effizientes Training und moderne Sampling-Verfahren setzt
Features
- Minimale Codebasis: In PyTorch implementiert, ohne komplexe Abstraktionen
- Moderne Architektur: GPT-Modell mit Flash Attention, RMSNorm, SwiGLU und effizienten Sampling-Verfahren
- Trainingsfunktionen:
- Gemischte Präzision (bfloat16/float16)
- Gradientenakkumulation
- Lernratenabfall mit Warmup
- Weight Decay und Gradient Clipping
- Datensatz-Unterstützung: Integrierte Verarbeitung des TinyStories-Datensatzes
- Benutzerdefinierter Tokenizer: Integration des Trainings eines SentencePiece-Tokenizers
Installation
- Python 3.8+
- PyTorch 2.0+ und CUDA
- Eine aktuelle GPU empfohlen
Schnellstart 🚀
Option 1: Vollständiger Trainingszyklus
- Datensatz vorbereiten
- Training starten
- Text generieren
Option 2: Vortrainiertes Modell verwenden
- Assets herunterladen
- Inferenz ausführen
Details zum vortrainierten Modell
- Mit dem TinyStories-Datensatz trainiert
- 4096-Token-Vokabular, 8 Heads, 8-Layer-Transformer, 512 Embedding-Dimension
- Mit etwa 400 Millionen Token über 18,5 Stunden trainiert
- Validierungsverlust: 1.0491
Spezifikationen der Trainingshardware
- GPU: NVIDIA L4 Tensor Core
- vCPUs: 16
- RAM: 64 GB
- VRAM: 24 GB
Hinweis: Diese Implementierung wurde zu Bildungszwecken erstellt und orientiert sich an modernen LLM-Trainingspraktiken. Für den produktiven Einsatz empfiehlt es sich, Modellgröße und Datensatz zu skalieren.
1 Kommentare
Hacker-News-Kommentare
Ein Nutzer erwähnte, dass er bei der Umsetzung von GPT in C gelernt habe, wie wichtig Speicherverwaltung und Datenmanagement sind. Das Projekt besteht aus etwa 1500 Zeilen Code, und er teilte einen GitHub-Link.
Ein anderer Nutzer erklärte, dass die nächste Stufe darin bestehe, es direkt mit
numpyzu implementieren. Er betonte, dass man mit starken Abstraktionen beginnen und diese dann schrittweise entfernen könne, um das System vollständig zu verstehen.Es wurde ein Projekt mit einem Google-Colab-Notebook geteilt, das auf einer A100-GPU etwa 2 Stunden benötigt. Es wurde erwähnt, dass es möglicherweise auch mit einem kostenlosen Konto funktioniert.
Es wurde erklärt, dass es auf GitHub mehrere Projekte wie Andrej Karpathys nanoGPT gibt und auch andere Projekte mit implementiertem MoE.
Ein Nutzer fragte, ob man ein bestimmtes Modell auf einem bestimmten Datensatz trainieren und die Ergebnisse testen könne. Er suche nach einem Open-Source-Projekt, das anzeigt, ob eine GPU verfügbar ist, und wünsche sich einen Docker-Container, der ersatzweise auch die CPU verwenden kann.
Ein weiterer Nutzer teilte seine Erfahrung mit einer Implementierung unter Verwendung eines eigenen Multi-Channel-Tokenizers. Er erwähnte, dass der Name des Protagonisten häufig wiederholt werde und er deshalb einen Bug vermute.
Om Alve bedankte sich und sagte, der Beitrag sei viral gegangen, sodass sich die Mühe gelohnt habe.
Es wurde angemerkt, dass es faszinierend sei, dass sich die Technologie in nur wenigen hundert Zeilen Code umsetzen lässt. Außerdem wurde vorgeschlagen zu raten, wie viele Codezeilen State-of-the-Art-Modelle haben.
Es wurde darauf hingewiesen, dass es nichts mit SmolLM zu tun habe, und ein Link zum Blog von HuggingFace wurde geteilt.
Es wurde gefragt, ob Beispiele für den Trainingsdatensatz und die Anwendungsfälle geteilt werden könnten.