nanochat poate antrena acum LLM de grad GPT-2 pentru <<100$ (~73$, 3 ore pe un singur nod 8XH100). GPT-2 este doar LLM-ul meu preferat pentru că este prima dată când stack-ul LLM-urilor se formează într-o formă recognoscibil modernă. Așa că a devenit o obsesie ciudată și de durată pentru mine să antrenez un model la capacitatea GPT-2, dar mult mai ieftin, cu beneficiul a ~7 ani de progres. În special, bănuiam că ar trebui să fie posibil astăzi să antrenezi unul pentru <<100$. Inițial, în 2019, GPT-2 a fost antrenat de OpenAI pe cipuri v3 de 32 TPU timp de 168 de ore (7 zile), cu 8 dolari/oră/TPUv3 la acea vreme, pentru un cost total de aproximativ 43.000 de dolari. Obține un scor CORE de 0,256525, care este un indicator de ansamblu introdus în articolul DCLM pe 22 de evaluări precum ARC/MMLU/etc. Din ultimele câteva îmbunătățiri integrate în nanochat (multe dintre ele provenind din repo-nanoGPT modded), pot acum să ating un scor CORE mai mare în 3,04 ore (~73$) pe un singur nod 8XH100. Aceasta reprezintă o reducere a costurilor de 600 de ori în 7 ani, adică costul antrenării GPT-2 scade de aproximativ 2,5 ori în fiecare an. Cred că este probabil o subestimare pentru că încă găsesc îmbunătățiri destul de regulat și am o mulțime de idei de încercat. O postare mai lungă, cu multe detalii despre optimizările implicate și sfaturi despre cum să reproduci, este aici: Inspirat de modded-nanogpt, am creat și un clasament pentru "time to GPT-2", unde acest prim model "Jan29" este intrarea #1 la 3,04 ore. Va fi distractiv să reaprofundez acest subiect și sunt binevenit să ajut! Speranța mea este ca nanochat să devină un ham experimental de LLM foarte frumos, curat și bine ajustat pentru prototipare a ideilor, pentru distracție și, bineînțeles, pentru învățare. Cele mai mari îmbunătățiri ale lucrurilor care au funcționat direct și au produs câștiguri imediat au fost: 1) Flash Attention 3 kernel-uri (mai rapide și permit window_size kwarg să obțină modele alternative de atenție), optimizer Muon (am încercat ~1 zi să-l șterg și am folosit doar AdamW și nu am reușit), căi reziduale și conexiuni skip blocate de scalari învățabili, și încorporarea valorilor. Au fost multe alte lucruri mai mici care se adună. Imagine: un obiect semi-legat pentru ochi despre derivarea legilor de scalare pentru miniseria actuală a modelului nanochat, frumos și satisfăcător!