Preise

Projektüberblick

Quelldateien

Diese Seite wurde aus den folgenden Quelldateien erstellt:

nanochat ist ein minimalistisches Experimentier-Framework für das Training von Large Language Models (LLMs), das von Andrej Karpathy entwickelt wurde. Das Projekt zeichnet sich durch seine Einfachheit und Hackbarkeit aus und deckt alle wesentlichen Phasen der LLM-Entwicklung ab: Tokenisierung, Pretraining, Finetuning, Evaluation, Inferenz sowie eine Chat-Web-UI. Die bemerkenswerteste Eigenschaft ist die Fähigkeit, ein GPT-2-äquivalentes Modell (1,6 Milliarden Parameter) für etwa 48 US-Dollar zu trainieren – verglichen mit den ursprünglichen Kosten von 43.000 US-Dollar im Jahr 2019. Dies entspricht einer Kostensenkung auf weniger als 0,2% des Originalaufwands (README.md:1-6, README.md:24-25).

Projektziel und Motivation

Kernphilosophie

nanochat verfolgt das Ziel, die Komplexität von LLM-Training auf ein Minimum zu reduzieren, ohne dabei Funktionalität einzubüßen. Das Framework ist explizit für einzelne GPU-Knoten konzipiert und vermeidet die verteilte Systemkomplexität größerer Trainingsframeworks. Der Code ist so strukturiert, dass er leicht verständlich und modifizierbar bleibt – ideal für Forschung, Experimente und pädagogische Zwecke.

Die vollständige Abdeckung aller LLM-Entwicklungsphasen unterscheidet nanochat von reinen Trainingsbibliotheken. Vom ersten Tokenisierungsschritt bis zur fertigen Chat-Anwendung bietet das Framework eine integrierte Pipeline, die ohne externe Abhängigkeiten für UI oder Evaluation auskommt (README.md:1-6).

Ökonomische Revolution

Der wirtschaftliche Aspekt von nanochat ist bemerkenswert. Während das ursprüngliche GPT-2-Training von OpenAI im Jahr 2019 etwa 43.000 US-Dollar kostete, ermöglicht nanochat die Reproduktion vergleichbarer Fähigkeiten für weniger als 100 US-Dollar. Bei Verwendung von Spot-Instanzen können die Gesamtkosten sogar auf etwa 15 US-Dollar sinken. Diese drastische Kostenreduktion resultiert aus sieben Jahren Fortschritt in Hardware, Algorithmen und Software-Optimierung (README.md:24-25).

Compute-Optimale Modellkonfiguration

Ein zentrales Designprinzip ist die automatische Berechnung aller Hyperparameter basierend auf einem einzigen Komplexitätsregler: dem --depth-Parameter. Dieser Parameter definiert die Anzahl der Schichten im GPT-Transformer-Modell. Alle anderen Hyperparameter – Transformer-Breite, Anzahl der Attention-Heads, Lernratenanpassungen, Training-Horizonte, Weight-Decay-Werte – werden automatisch optimal berechnet. GPT-2-Fähigkeit entspricht dabei ungefähr einer Tiefe von 26 Schichten (README.md:6-7).

Technische Architektur

Systemübersicht

Die Architektur von nanochat folgt einem modularen Ansatz, bei dem jede Komponente eine klar definierte Verantwortung übernimmt. Das System ist für die Ausführung auf einem einzelnen GPU-Knoten optimiert, unterstützt aber transparent die Skalierung auf mehrere GPUs durch torchrun.

正在加载图表渲染器...

Architektur-Erklärung:

  1. Eingabe & Datenebene: Die Trainingsdaten durchlaufen zunächst die Tokenisierung. Das Framework verwendet standardmäßig NVIDIA ClimbMix als Dataset, das sich als überlegen gegenüber früheren Datensätzen erwiesen hat (README.md:20-21).

  2. Trainingskern: Der --depth-Parameter steuert die Modellkomplexität. Alle Hyperparameter werden automatisch basierend auf Scaling-Laws berechnet, was manuelles Tuning überflüssig macht (README.md:6-7).

  3. Optimierung: FP8-Precision, große Batch-Sizes (bis zu 1M Tokens) und automatische Gradient-Accumulation für Single-GPU-Szenarien (README.md:18-19, README.md:55-56).

  4. Evaluation: Die DCLM CORE-Metrik dient als primärer Benchmark für GPT-2-Äquivalenz. Der Validierungs-Loss (val_bpb) wird parallel überwacht (README.md:14-23).

  5. Ausgabe & Inferenz: Das trainierte Modell wird direkt in der Chat-Web-UI verwendet, ohne zusätzliche Konvertierungsschritte (README.md:40-44).

Hardware-Flexibilität

Das Framework zeigt bemerkenswerte Hardware-Kompatibilität. Es läuft auf Ampere 8XA100-GPU-Knoten (etwas langsamer als H100), einzelnen GPUs (mit 8x längerer Laufzeit durch Gradient-Accumulation) und GPUs mit weniger als 80GB VRAM (durch Anpassung des --device_batch_size-Parameters). Die Codebasis verwendet weitgehend Vanilla PyTorch und sollte daher auf xpu-, mps- und anderen Plattformen funktionieren (README.md:54-58).

Technologie-Stack

KomponenteTechnologieVersion/Hinweis
Deep Learning FrameworkPyTorchVanilla-Implementierung
GPU-UnterstützungNVIDIA H100/A1008x GPU-Knoten empfohlen
PrecisionFP8Optional, für Geschwindigkeit
DatensatzNVIDIA ClimbMixStandard für Speedrun
BenchmarkDCLM COREPrimäre Evaluationsmetrik
UI-FrameworkChat Web UIPython-basiert
Package ManageruvVirtual Environment
Distributed TrainingtorchrunOptional für Multi-GPU

GPT-2 Speedrun Leaderboard

Benchmark-Definition

Das Leaderboard misst die "Time-to-GPT-2" – die Wall-Clock-Zeit, die benötigt wird, um ein nanochat-Modell zu trainieren, das die GPT-2 (1,6B) CORE-Metrik auf einem 8xH100-GPU-Knoten übertrifft. Der GPT-2 CORE-Score beträgt 0,256525. Diese Metrik dient als objektiver Maßstab für die Trainings effizienz und ermöglicht direkte Vergleiche zwischen verschiedenen Optimierungsansätzen (README.md:10-23, README.md:24-27).

Historische Entwicklung

正在加载图表渲染器...

Optimierungs-Meilensteine:

  1. Baseline (d24): Die erste Referenzimplementierung erreichte GPT-2-Äquivalenz in 3,04 Stunden mit leichtem Overtraining (README.md:17).

  2. FP8-Precision: Die Einführung von FP8-Training reduzierte die Zeit auf 2,91 Stunden bei leichtem Undertraining (README.md:18).

  3. Batch-Size-Erhöhung: Die Erhöhung der totalen Batch-Size auf 1M Tokens brachte weitere Verbesserungen auf 2,76 Stunden (README.md:19).

  4. Dataset-Wechsel: Der Wechsel zu NVIDIA ClimbMix als Trainingsdatensatz war ein bedeutender Sprung auf 2,02 Stunden (README.md:20-21).

  5. Autoresearch-Optimierungen: Zwei aufeinanderfolgende Autoresearch-Runden push ten die Grenze auf 1,80 und schließlich 1,65 Stunden (README.md:21-22).

Detaillierte Leaderboard-Tabelle

RangZeitval_bpbCOREBeschreibungDatumCommit
0168h-0.2565Original OpenAI GPT-22019-
13.04h0.748330.2585d24 Baseline, leicht overtrainedJan 29 2026348fbb3
22.91h0.745040.2578d26 leicht undertrained + FP8Feb 2 2026a67eba3
32.76h0.746450.2602Batch Size auf 1M TokensFeb 5 20262c062aa
42.02h0.718540.2571Wechsel zu NVIDIA ClimbMixMar 4 2026324e69c
51.80h0.718080.2690Autoresearch Runde 1Mar 9 20266ed7d1d
51.65h0.718000.2626Autoresearch Runde 2Mar 14 2026a825e63

(README.md:14-23)

Erste Schritte und Anwendung

Speedrun-Reproduktion

Der einfachste Weg, nanochat zu verwenden, ist das Ausführen des Speedrun-Skripts auf einem 8xH100-GPU-Knoten. Das gesamte Training-to-Chat-Pipeline ist in einer einzigen Datei runs/speedrun.sh enthalten:

bash
1# In einer screen-Sitzung empfohlen (~3 Stunden Laufzeit)
2bash runs/speedrun.sh

Nach Abschluss des Trainings kann das Modell über die Chat-Web-UI interaktiv getestet werden:

bash
1# Virtual Environment aktivieren
2source .venv/bin/activate
3
4# Chat-Server starten
5python -m scripts.chat_web

(README.md:32-44)

Hardware-Anpassungen

Für Systeme mit begrenztem GPU-Speicher bietet nanochat flexible Anpassungsmöglichkeiten. Der Parameter --device_batch_size kann von 32 (Standard) auf 16, 8, 4, 2 oder 1 reduziert werden, um OOM-Fehler zu vermeiden. Bei Single-GPU-Betrieb aktiviert das Framework automatisch Gradient-Accumulation, was zu identischen Ergebnissen bei 8x längerer Trainingszeit führt (README.md:55-56).

Praktische Anwendungsszenarien

Das trainierte Modell verhält sich wie ein "Kindergarten-Kind" mit 4e19 FLOPs Capability. Es kann für kreative Aufgaben wie das Schreiben von Geschichten oder Gedichten verwendet werden, zeigt aber auch typische LLM-Schwächen wie Halluzinationen bei Wissensfragen. Die Chat-UI ist bewusst einfach gehalten und ähnelt der vertrauten ChatGPT-Oberfläche (README.md:44-45).

Kernmodule und Datenfluss

Trainingspipeline-Datenfluss

正在加载图表渲染器...

Datenfluss-Erklärung:

  1. Initialisierung: Der Benutzer startet das Speedrun-Skript, das torchrun für verteiltes Training konfiguriert. Die Modelltiefe wird über --depth festgelegt (README.md:32-36).

  2. Training Loop: Der DataLoader liefert tokenisierte Batches an das GPT-Modell. Der Forward Pass berechnet den Loss, der Optimizer führt Backpropagation durch (README.md:6-7).

  3. Evaluation: Periodisch werden val_bpb und DCLM CORE-Metriken berechnet, um den Trainingsfortschritt zu überwachen (README.md:14-23).

  4. Inferenz: Nach dem Training wird das Modell in der Chat-Web-UI geladen und ist für interaktive Konversationen verfügbar (README.md:40-44).

Modulverantwortlichkeiten

ModulVerantwortungEingabeAusgabe
TokenisierungText-zu-Token-KonvertierungRohtextToken-IDs
DataLoaderBatch-Erstellung mit ShufflingToken-IDsBatches
GPT ModelTransformer-Forward-PassToken-BatchLogits, Loss
OptimizerGradient-UpdateGradientsAktualisierte Gewichte
EvaluatorBenchmark-BerechnungModell, Validierungsdatenval_bpb, CORE
Chat UIInteraktive InferenzBenutzereingabeModellantwort

Verzeichnisstruktur

nanochat/
├── runs/
│   └── speedrun.sh          # Haupttrainingsskript
├── scripts/
│   └── chat_web.py          # Chat-Web-UI-Server
├── dev/
│   ├── nanochat.png         # Projektlogo
│   ├── scaling_laws_jan26.png
│   └── LEADERBOARD.md       # Detaillierte Leaderboard-Doku
└── README.md                # Projektdokumentation

(README.md:3-4, README.md:26)

Kernmerkmale

Technische Eigenschaften

  • Minimalistische Codebasis: Optimiert für Lesbarkeit und Modifizierbarkeit
  • Vollständige LLM-Pipeline: Tokenisierung → Pretraining → Finetuning → Evaluation → Inferenz → Chat UI
  • Automatische Hyperparameter-Optimierung: Ein einziger --depth-Parameter steuert alle anderen Werte
  • Compute-Optimale Konfiguration: Basierend auf modernen Scaling-Laws
  • FP8-Precision-Support: Für maximale Trainingseffizienz
  • Distributed Training: Transparente Multi-GPU-Unterstützung via torchrun
  • Single-GPU-Kompatibilität: Automatische Gradient-Accumulation

Ökonomische Vorteile

  • Kostenreduktion: Von $43.000 auf unter $100 (Spot-Instanzen: ~$15)
  • Zeitersparnis: Von 168 Stunden auf unter 2 Stunden
  • Hardware-Effizienz: Läuft auf einzelnen GPUs mit reduziertem VRAM

Forschungsorientierung

  • Leaderboard-System: Incentiviert Community-Optimierungen
  • Reproduzierbarkeit: Alle Runs sind durch Commits dokumentiert
  • Transparente Metriken: DCLM CORE als objektiver Standard

Anwendungsszenarien

Bildung und Forschung

nanochat eignet sich ideal für Lehrveranstaltungen und Forschungsprojekte im Bereich NLP und Deep Learning. Die minimale Codebasis ermöglicht es Studierenden, die Interna von LLM-Training zu verstehen, ohne von Framework-Komplexität überwältigt zu werden.

Rapid Prototyping

Für Experimente mit neuen Architekturen oder Trainingstechniken bietet nanochat eine solide Basis. Die automatische Hyperparameter-Berechnung reduziert den manuellen Abstimmungsaufwand erheblich.

Kostengünstige Modellentwicklung

Startups und unabhängige Forscher können mit nanochat GPT-2-äquivalente Modelle zu Bruchteilen der ursprünglichen Kosten trainieren, was LLM-Entwicklung demokratisiert.

Berichtsstruktur und Leseführung

正在加载图表渲染器...

Empfohlene Lesereihenfolge:

  1. Projektüberblick (aktuell): Grundlegendes Verständnis von Zielen und Fähigkeiten
  2. Architektur: Detaillierte technische Struktur und Modulinteraktionen
  3. Features: Konkrete Funktionalitäten und Konfigurationsoptionen
  4. Datenfluss: Schritt-für-Schritt-Analyse der Trainingspipeline
  5. API-Design: Schnittstellen und Erweiterungspunkte
  6. Abhängigkeiten: Externe Bibliotheken und Hardware-Anforderungen
  7. Datenmodell: Interne Datenstrukturen und Formate

Quantifizierte Projektkennzahlen

MetrikWert
Minimale Trainingszeit1,65 Stunden (GPT-2-Äquivalenz)
Minimale Trainingskosten~$15 (Spot-Instanz)
Kostenreduktion vs. 2019>99,6%
Unterstützte GPU-KonfigurationenSingle-GPU bis 8xH100
Minimale VRAM-AnforderungVariabel (via Batch-Size-Tuning)
Abgedeckte LLM-Phasen6 (Tokenisierung, Pretraining, Finetuning, Evaluation, Inferenz, Chat UI)
Leaderboard-Einträge7 (inkl. Original GPT-2)
Manuell einzustellende Hyperparameter1 (--depth)

Community und Support

Für Fragen zum Repository stehen mehrere Kanäle zur Verfügung: DeepWiki von Devin/Cognition für repository-spezifische Anfragen, der GitHub Discussions-Tab für allgemeine Diskussionen sowie der #nanochat-Kanal auf Discord für direkten Community-Austausch (README.md:8).