Mina anteckningar om nanochat, inklusive länkar till de träningsdata som används
Andrej Karpathy
Andrej Karpathy13 okt. 23:16
Glada över att släppa ett nytt repo: nanochat! (det är bland det mest rubbade jag har skrivit). Till skillnad från mitt tidigare liknande repo nanoGPT som endast täckte förträning, är nanochat en minimal, från grunden, fullstack tränings-/inferenspipeline av en enkel ChatGPT-klon i en enda, beroende-minimal kodbas. Du startar upp en moln GPU-box, kör ett enda skript och på så lite som 4 timmar senare kan du prata med din egen LLM i ett ChatGPT-liknande webbgränssnitt. Den väger ~ 8 000 rader av imo ganska ren kod till: - Träna tokeniseraren med hjälp av en ny Rust-implementering - Förträna en Transformer LLM på FineWeb, utvärdera CORE-poäng över ett antal mätvärden - Midtrain om användar-assistent-konversationer från SmolTalk, flervalsfrågor, verktygsanvändning. - SFT, utvärdera chattmodellen på flervalsfrågor i världskunskap (ARC-E/C, MMLU), matematik (GSM8K), kod (HumanEval) - RL modellen valfritt på GSM8K med "GRPO" - Effektiv inferens av modellen i en motor med KV-cache, enkel förifyllning/avkodning, verktygsanvändning (Python-tolk i en lättviktig sandlåda), prata med den över CLI eller ChatGPT-liknande WebUI. - Skriv ett enda rapportkort för prisnedsättning, sammanfatta och spelifiera det hela. Även för så lågt som ~$100 i kostnad (~4 timmar på en 8XH100-nod) kan du träna en liten ChatGPT-klon som du kan prata med, och som kan skriva berättelser/dikter, svara på enkla frågor. Cirka ~12 timmar överträffar GPT-2 CORE-måttet. När du skalar upp ytterligare mot ~$1000 (~41,6 timmars utbildning) blir den snabbt mycket mer sammanhängande och kan lösa enkla matematiska / kodproblem och göra flervalstester. T.ex. en djup 30-modell som tränats i 24 timmar (detta är ungefär lika med FLOPs av GPT-3 Small 125M och 1/1000-del av GPT-3) kommer in i 40-tal på MMLU och 70-tal på ARC-Easy, 20-tal på GSM8K, etc. Mitt mål är att få hela stacken "stark baslinje" till en sammanhängande, minimal, läsbar, hackbar, maximalt förgrenbar lagringsplats. nanochat kommer att vara slutstensprojektet för LLM101n (som fortfarande är under utveckling). Jag tror att det också har potential att växa till en forskningssele, eller ett riktmärke, liknande nanoGPT före det. Det är inte på något sätt färdigt, finjusterat eller optimerat (jag tror faktiskt att det finns en hel del lågt hängande frukt), men jag tror att det är på en plats där det övergripande skelettet är tillräckligt ok för att det kan gå upp på GitHub där alla delar av det kan förbättras. Länk till repo och en detaljerad genomgång av nanochat speedrun finns i svaret.
Sam Dobson drev en version av modellen till Hugging Face - den behöver CUDA för att köras men jag hade Claude Code hacka runt med den ett tag och det byggde mig ett skript för att köra den på macOS CPU, detaljer här:
131,54K