nanochat kann jetzt ein GPT-2-Grad LLM für <<100 $ (~73 $, 3 Stunden auf einem einzelnen 8XH100-Knoten trainieren). GPT-2 ist einfach mein Lieblings-LLM, weil es das erste Mal ist, dass der LLM-Stack in einer erkennbar modernen Form zusammenkommt. Daher ist es zu einer seltsamen und anhaltenden Besessenheit von mir geworden, ein Modell mit GPT-2-Fähigkeiten zu trainieren, aber viel günstiger, mit dem Vorteil von ~7 Jahren Fortschritt. Insbesondere vermutete ich, dass es heute möglich sein sollte, eines für <<100 $ zu trainieren. Ursprünglich wurde 2019 GPT-2 von OpenAI auf 32 TPU v3-Chips für 168 Stunden (7 Tage) trainiert, mit 8 $/Stunde/TPUv3 damals, was zu Gesamtkosten von ca. 43.000 $ führte. Es erreicht einen CORE-Score von 0,256525, der eine Ensemble-Metrik ist, die im DCLM-Papier über 22 Bewertungen wie ARC/MMLU/etc. eingeführt wurde. Mit den letzten Verbesserungen, die in nanochat zusammengeführt wurden (viele davon stammen aus dem modded-nanogpt-Repo), kann ich jetzt in 3,04 Stunden (~73 $) auf einem einzelnen 8XH100-Knoten einen höheren CORE-Score erreichen. Dies ist eine Kostenreduktion von 600X über 7 Jahre, d.h. die Kosten für das Training von GPT-2 sinken ungefähr 2,5X jedes Jahr. Ich denke, das ist wahrscheinlich eine Unterschätzung, da ich weiterhin relativ regelmäßig weitere Verbesserungen finde und ich einen Rückstand an weiteren Ideen habe, die ich ausprobieren möchte. Ein längerer Beitrag mit vielen Details zu den beteiligten Optimierungen und Hinweisen, wie man reproduzieren kann, ist hier: Inspiriert von modded-nanogpt habe ich auch eine Rangliste für "Zeit bis GPT-2" erstellt, wo dieses erste "Jan29"-Modell der Eintrag #1 mit 3,04 Stunden ist. Es wird Spaß machen, dies weiter zu iterieren, und ich freue mich über Hilfe! Meine Hoffnung ist, dass nanochat zu einem sehr schönen/sauberen und abgestimmten experimentellen LLM-Harness für das Prototyping von Ideen, zum Spaß haben und natürlich zum Lernen wachsen kann. Die größten Verbesserungen von Dingen, die sofort aus dem Kasten funktionierten und sofortige Gewinne produzierten, waren 1) Flash Attention 3-Kerne (schneller und ermöglicht das window_size kwarg, um abwechselnde Aufmerksamkeitsmuster zu erhalten), Muon-Optimizer (ich habe etwa 1 Tag versucht, ihn zu löschen und nur AdamW zu verwenden, und ich konnte es nicht), Residualpfade und Skip-Verbindungen, die durch lernbare Skalare gesteuert werden, und Wert-Embeddings. Es gab viele andere kleinere Dinge, die sich summieren. Bild: halbwegs verwandte Augenweide zur Ableitung der Skalierungsgesetze für die aktuelle nanochat-Modell-Miniserie, hübsch und befriedigend!