Innerhalb von 4 Stunden erhält man einen eigenen ChatGPT. Karpathy bringt wieder etwas neues hervor und gibt selbst zu, dass sein Agent ihm im Weg war. Er hat 8.000 Zeilen Code von Hand geschrieben. Netizens sagen: Wenn er das Programm ausführt, wird er sofort ein Machine-Learning-Ingenieur.
„Dies ist eines der verrücktesten Werke, die ich je geschrieben habe.“ Gerade hat Andrej Karpathy, der ehemalige Leiter der KI bei Tesla und Gründungsmitglied von OpenAI, sein neues Open-Source-Projekt, ein Repository namens nanochat, veröffentlicht. Bis jetzt hat das Projekt auf GitHub über 7,9k Sterne erreicht!
GitHub-Repository: https://github.com/karpathy/nanochat
Laut der Beschreibung unterscheidet sich nanochat von Karpathys früherem Repository nanoGPT, das nur Prätrainingsfunktionen enthielt. nanochat ist eine minimale, von Grund auf neu aufgebaute Toolchain für Training und Inferenz, die zur Erstellung eines einfachen Nachbau-Modells von ChatGPT verwendet werden kann. Das gesamte Code-Repository besteht nur aus einer Datei und hat sehr wenige Abhängigkeiten.
Ein mit 100 Dollar in halbtags Arbeit trainiertes Modell schlägt GPT-2
„Das beste, was man sich für 100 Dollar an ChatGPT-Ähnlichem kaufen kann“, so beschreibt Karpathy nanochat in seiner Ankündigung. Mit nanochat musst du nur einen Cloud-GPU-Server starten und ein Skript ausführen. Nach nur vier Stunden kannst du im ChatGPT-ähnlichen Webinterface mit deinem selbst trainierten Large Language Model (LLM) chatten.
Konkret kann das Projekt die folgenden Funktionen erfüllen:
- Training eines Tokenizers basierend auf der neuen Programmiersprache Rust
- Prätraining eines Transformer-basierten LLMs auf dem FineWeb-Datensatz und Bewertung der CORE-Scores anhand mehrerer Metriken
- Zwischentraining (Midtrain) auf dem SmolTalk-Benutzer-Assistenten-Dialogdatensatz, Multiple-Choice-Datensatz und Tool-Usage-Datensatz
- Instruction-Fine-Tuning (SFT) des Chat-Modells und Bewertung der Modellleistung anhand von Weltwissen-Tests (ARC-E/C, MMLU), Mathematikaufgaben (GSM8K) und Codetasks (HumanEval)
- Optional kann das Modell auf dem GSM8K-Datensatz mit dem „GRPO“-Algorithmus durch Reinforcement Learning (RL) trainiert werden
- Effiziente Inferenz in einem Inferenz-Engine mit KV-Cache, unterstützt einfache Prefill/Decoding-Prozesse und Tool-Usage (Python-Interpreter in einem leichten Sandbox). Interaktion mit dem Modell über die Kommandozeile (CLI) oder das ChatGPT-ähnliche Webinterface (WebUI)
- Automatische Generierung einer Markdown-Reportkarte, die den gesamten Projektablauf zusammenfasst und alle Metriken in einer spielerischen Art und Weise darstellt
Laut Karpathy kann man mit nanochat auch mit einem Budget von nur etwa 100 Dollar (etwa vier Stunden Training auf einem 8-Karten-H100-Knoten) ein einfaches, chatfähiges Nachbau-Modell von ChatGPT trainieren. Das Modell kann Geschichten und Gedichte schreiben und einfache Fragen beantworten. Nach etwa zwölf Stunden Training übertrifft das Modell die CORE-Metriken von GPT-2.
Auf Github erklärt Karpathy den genauen Prozess, wie man mit 100 Dollar das beste ChatGPT-Modell „schnell trainieren“ kann.
Detaillierte technische Schritte: https://github.com/karpathy/nanochat/discussions/1
Wenn man das Budget auf etwa 1000 Dollar erhöht (etwa 41,6 Stunden Training), verbessert sich die Kohärenz des Modells deutlich. Es kann einfache Mathematikaufgaben, Codetasks lösen und Multiple-Choice-Tests bestehen. Beispielsweise kann ein Modell mit einer Tiefe von 30 nach 24 Stunden Training (die Berechnungsmenge FLOPs ist vergleichbar mit GPT-3 Small (1,25 Milliarden Parameter), nur 1/1000 von GPT-3) auf dem MMLU-Datensatz über 40 Punkte, auf dem ARC-Easy-Datensatz über 70 Punkte und auf dem GSM8K-Datensatz über 20 Punkte erzielen.
Karpathys Ziel ist es, diese komplette „starke Referenz“-Toolchain in ein logisch zusammenhängendes, minimales, leicht lesbares, gut modifizierbares und für Forking sehr geeignetes Code-Repository zu integrieren. „nanochat wird das Kernprojekt des LLM101n-Kurses (der derzeit noch in Entwicklung ist) sein. Ich denke, es hat auch das Potenzial, sich zu einem Forschungs- oder Benchmarking-Tool zu entwickeln, ähnlich wie nanoGPT zuvor.“
Er verrät, dass dieses Projekt noch lange nicht die Endversion ist. Es ist weder vollständig optimiert noch leistungsfähig, aber der Gesamtrahmen ist bereits gut genug, um auf GitHub veröffentlicht zu werden. Alle Module können später in der Community weiter verbessert werden. Karpathy sagt auch, dass es tatsächlich noch viele einfache Optimierungsmöglichkeiten für nanochat gibt.
8000 Zeilen Code, handgeschrieben, „Agenten helfen nicht“
Das gesamte Projekt besteht nur aus etwa 8000 Zeilen Code, aber Karpathy betont, dass „die Code-Struktur sehr klar ist“. Darüber hinaus ist dieses Code-Repository fast vollständig von Karpathy handgeschrieben, er hat nur die Tabulator-Taste für die automatische Vervollständigung verwendet.
„Ich habe schon mehrmals versucht, Claude oder Codex-Agenten zu nutzen, aber das hat nie gut funktioniert. Am Ende halfen sie mir überhaupt nicht. Vielleicht liegt es daran, dass der Code-Style und die Funktionen dieses Repositories zu sehr von den üblichen Codes in den Trainingsdaten dieser Tools abweichen.“ so Karpathy.
Bezüglich der Modellarchitektur von nanochat erklärt Karpathy, dass sie insgesamt ähnlich der des Llama-Modells ist, aber strukturell etwas einfacher ist. Dabei hat er auch einige Design-Ideen von modded-nanoGPT (verbesserte Version von nanoGPT) übernommen.
Er hat versucht, eine zuverlässige Referenzarchitektur für ein Modell dieser Größe zu finden. Die Architektur ist wie folgt:
- Dichter Transformer (ohne sparse Struktur)
- Rotary Embeddings für die Positionskodierung, keine anderen Positionskodierungen
- QK-Norm (Normalisierung der Query-Vektoren Q und Key-Vektoren K)
- Die Gewichte der Embedding- und Unembedding-Schichten werden nicht geteilt
- Normalisierung der Token-Embeddings
- ReLU²-Aktivierungsfunktion in der Multi-Layer-Perceptron (MLP)
- Root-Mean-Square-Normalisierung (RMSNorm) ohne lernbare Parameter
- Keine Bias-Terms in den linearen Schichten
- Multi-Query Attention (MQA)
- Logit-Softcap (Begrenzung des Logit-Werts, um das Training zu stabilisieren)
Der Optimierer von nanochat ist eine Kombination aus Muon und AdamW. Diese Entwurfsmethode basiert weitgehend auf modded-nanoGPT. Derzeit hat Karpathy noch eine Aufgabe im Backlog: Er möchte versuchen, die Abhängigkeit von Muon zu entfernen, indem er die Lernrate von Adam optimiert (z.B. indem er für verschiedene Module unterschiedliche Lernraten festlegt). Aber bisher hat er nicht genug Zeit dafür investiert.
Netzfreunde: Jetzt bin ich ein Machine Learning Engineer
Apart von GitHub hat die Veröffentlichung von nanochat auch auf sozialen Plattformen viel Aufmerksamkeit erregt.
„Ich liebe immer die Nano-Serie von Projekten! Diese minimale End-to-End-Toolchain für Training und Inferenz wird sicherlich viele Machine-Learning-Lernende und Forscher stark beeinflussen.“ so ein Netzfreund.
Ein anderer Netzfreund sagt: „Für mich persönlich ist dieses Code-Repository eine super Lernressource für die Zukunft. Es hilft mir, sowohl die Rust-basierte tiefgreifende Implementierung von Deep Learning als auch (einfacheres) Python-Deep-Learning-Development zu verstehen.“ Gleichzeitig weist er darauf hin: „Wenn jetzt jeder mit diesem Repository sein eigenes LLM mit minimalem Aufwand trainieren kann, wird die technologische Überlegenheit von Unternehmen wie Anthropic und OpenAI geschwächt. Es gibt viele ausgezeichnete Ingenieure auf dem Markt. Wenn sie genügend Ressourcen haben, können sie ganz möglicherweise noch stärkere LLMs trainieren.“
Ein weiterer Netzfreund sagt: „Ich denke, die Hauptzielgruppe dieses Code-Repositories sind Forscher. Viele Leute haben vielleicht Ideen, wie man LLMs verbessern kann, aber es braucht viel Zeit und Energie, um diese Ideen in eine vollständige Implementierung umzusetzen, und das Endergebnis ist auch sehr ungewiss. Jetzt haben wir aber eine fertige Toolchain, mit der man direkt Experimente machen kann. Was früher nur eine Phantasie war, ist jetzt eine konkrete Aktion: ‘Ich werde das nächste Wochenende versuchen, meine Idee umzusetzen.’“
Ein Netzfreund macht sogar einen Witz: „Nachdem ich dieses Projekt durchlaufen habe, werde ich auf jeden Fall ‘Machine Learning Engineer’ in mein Lebenslauf schreiben.“
Referenzlinks:
https://x.com/karpathy/status/1977755427569111362
https://github.com/karpathy/nanochat
Dieser Artikel stammt aus dem WeChat-Account „AI Frontline“, bearbeitet von Hua Wei, veröffentlicht von 36Kr mit Genehmigung.