Aufgeregt, das neue Repository: nanochat! (es ist eines der unkonventionellsten, die ich geschrieben habe). Im Gegensatz zu meinem früheren ähnlichen Repository nanoGPT, das nur das Pretraining abdeckte, ist nanochat eine minimale, von Grund auf neu entwickelte, vollständige Trainings-/Inference-Pipeline eines einfachen ChatGPT-Klons in einem einzigen, abhängigkeit-minimalen Code. Du startest eine Cloud-GPU-Box, führst ein einzelnes Skript aus und kannst in nur 4 Stunden mit deinem eigenen LLM über eine ChatGPT-ähnliche Weboberfläche sprechen. Es umfasst ~8.000 Zeilen meines Erachtens ziemlich sauberen Codes, um: - Den Tokenizer mit einer neuen Rust-Implementierung zu trainieren - Ein Transformer-LLM auf FineWeb vorzutrainieren und den CORE-Score über eine Reihe von Metriken zu bewerten - Midtrain auf Benutzer-Assistent-Gesprächen von SmolTalk, Multiple-Choice-Fragen, Werkzeugnutzung. - SFT, das Chat-Modell auf weltlichem Wissen Multiple-Choice (ARC-E/C, MMLU), Mathematik (GSM8K), Code (HumanEval) zu bewerten - Das Modell optional auf GSM8K mit "GRPO" zu verstärken - Effiziente Inferenz des Modells in einer Engine mit KV-Cache, einfache Vorbefüllung/Dekodierung, Werkzeugnutzung (Python-Interpreter in einer leichten Sandbox), über CLI oder ChatGPT-ähnliche WebUI mit ihm zu sprechen. - Einen einzigen Markdown-Bericht zu schreiben, der das Ganze zusammenfasst und gamifiziert. Selbst für nur ~$100 Kosten (~4 Stunden auf einem 8XH100-Knoten) kannst du einen kleinen ChatGPT-Klon trainieren, mit dem du ein bisschen sprechen kannst und der Geschichten/Poesie schreiben und einfache Fragen beantworten kann. Etwa ~12 Stunden übertrifft den GPT-2 CORE-Metrik. Wenn du weiter auf ~$1000 (~41,6 Stunden Training) skalierst, wird es schnell viel kohärenter und kann einfache Mathematik-/Code-Probleme lösen und Multiple-Choice-Tests ablegen. Zum Beispiel erreicht ein Modell der Tiefe 30, das 24 Stunden trainiert wurde (das entspricht etwa den FLOPs von GPT-3 Small 125M und 1/1000 von GPT-3), 40er Werte auf MMLU und 70er auf ARC-Easy, 20er auf GSM8K usw. Mein Ziel ist es, den vollständigen "starken Baseline"-Stack in ein kohärentes, minimales, lesbares, hackbares, maximal forkbares Repository zu integrieren. nanochat wird das Abschlussprojekt von LLM101n (das noch entwickelt wird) sein. Ich denke, es hat auch das Potenzial, sich zu einem Forschungsharnisch oder einem Benchmark zu entwickeln, ähnlich wie nanoGPT zuvor. Es ist bei weitem nicht fertig, abgestimmt oder optimiert (tatsächlich denke ich, dass es wahrscheinlich noch einiges an niedrig hängenden Früchten gibt), aber ich denke, es ist an einem Punkt, an dem das gesamte Gerüst gut genug ist, dass es auf GitHub hochgeladen werden kann, wo alle Teile davon verbessert werden können. Der Link zum Repository und eine detaillierte Anleitung zum nanochat-Speedrun sind in der Antwort.
GitHub-Repo: Eine viel detailliertere und technische Anleitung: Beispielgespräch mit dem $100, 4-Stunden-Nanochat in der WebUI. Es ist... unterhaltsam :) Größere Modelle (z.B. ein 12-Stunden-Tiefe 26 oder eine 24-Stunden-Tiefe 30) werden schnell kohärenter.
Und ein Beispiel für einige der zusammenfassenden Kennzahlen, die durch den $100 Speedrun im Bericht erstellt wurden, um zu beginnen. Der aktuelle Code-Basis umfasst etwas über 8000 Zeilen, aber ich habe versucht, sie sauber und gut kommentiert zu halten. Jetzt kommt der spaßige Teil - das Tuning und das Hillclimbing.
2,4M