Vad en Språkmodell Förutsäger
En Probabilistisk Fortsättningsmotor
En språkmodell tar en sekvens av tokens & tilldelar en sannolikhetsfördelning över vilken token som kommer nästa. Mata in the cat sat on the & den ger ut sannolikheter över hela vokabulären: hög massa på mat, floor, couch; låg massa på xylophone, Tuesday.
Sampling av den fördelningen, bifoga en token, & mata tillbaka den: den loopen genererar text en token i taget. Autoregressiv generering, namngiven eftersom varje steg regredierar på sin egen tidigare utdata.
Tre siffror definierar en språkmodell
Ordlista storlek (V). Hur många distinkta tokens en modell kan producera. ANDREA-12M använde 4 353 tokens; ANDREA-120M använder 8 449.
Kontextfönster (T). Hur många tokens som ryms i en forward pass. ANDREA-modeller använder T = 1 024.
Parameterräkning (P). Hur många inlärda vikter som finns inuti. 12M, 120M & 480M namnger en familj efter P.
En familj med tre
| Variant | d_model | Heads | Layers | Context | Params |
|---|---|---|---|---|---|
| ANDREA-12M | 384 | 12 | 6 | 1024 | 12.8M |
| ANDREA-120M | 768 | 12 | 12 | 1024 | ~120M |
| ANDREA-480M | 1536 | 24 | 16 | 1024 | ~480M |
Tre reglage som skalar: d_model (bredd på varje intern vektor), n_layer (djup på stapplade transformerblock), n_head (parallella uppmärksamhetsprojektioner). Vokabulär & kontext förblir fasta inom familjen.
Läsa Familjetabellen
Varför det lilla är viktigt
Begränsning som Befrielse
Stora språkmodeller med hundratals miljarder parametrar kräver tusentals GPU:er, proprietära dataset och företagsbudgetar. Få personer får träna en. Få personer får reparera en.
En liten språkmodell på en GPU vänder upp och ner på det. Vem som helst med en 4090 (eller en 3060) kan reproducera ANDREA från öppen data. Träningsreceptet fungerar också som modellkortet. Öppen kod, öppna vikter, öppen data; full härkomst i 72 timmars beräkning.
Kapacitet vs Kvalitet
Mindre modeller kan inte memorera sitt träningskorpus. ANDREA-12M, med 12,8M parametrar, saknar kapaciteten att lagra faktainnehåll; den lär sig turstruktur, vokabulärfördelning och svarsform. ANDREA-120M, med 10× kapacitet, lär sig faktaminne, flerstyckscoherens och domänbredd (verifierat genom extern bedömning på 9,5/10 på biologi- och signalbehandlingsexempel).
Slutsatsen: kapacitet sätter en takhöjd. Läroplanen avgör om takhöjden nås. Aktiviteter 14-23 täcker läroplanen. [TITLE decoder_only/]
Tre Transformer-varianter
Encoder, Decoder, Båda
Den ursprungliga Transformern (Vaswani et al., 2017) levererades med en encoder & en decoder, klistrade ihop för översättning. Tre arkitektoniska linjer härstammar från den artikeln:
Encoder-only (BERT-linjen). Bidirektionell uppmärksamhet, ingen kausal mask. Optimerad för klassificering, inte generering. En token ser både sin förflutna & sin framtid under träning.
Encoder-decoder (T5, BART). Kodaren läser inmatningen; dekodaren genererar utmatningen och uppmärksammar kodaren via korsuppmärksamhet. Används för översättning, sammanfattning.
Decoder-only (GPT, ANDREA). Kausal mask: varje token ser bara sitt förflutna. Tränas för att förutsäga nästa token. Generering kommer gratis; träning & inferens delar samma forward pass.
Varför Decoder-Only vinner på en GPU
Tre skäl:
1. Enkel målsättning. Nästa-token-förutsägelse fungerar på all text. Ingen parvis källa/mål behövs.
2. Symmetri mellan träning & inferens. Samma forward pass, ingen speciell genereringslogik.
3. Enkel minneshantering. Ingen cross-attention; en stapel lager; ett flöde av aktiveringar.
ANDREA ärver valet av enbart decoder från microGPT, som ärvde från nanoGPT, som ärvde från GPT-2. Linjen förblir standard; det som förändras finns i tokenisering, träningsinfrastruktur & läroplan.
Varför enbart Decoder för ANDREA
Vad får plats i 24 GB
Byte per parameter
En RTX 4090 levereras med 24 GB VRAM. ANDREA-12M-träning använde 1,4 GB. ANDREA-120M använde betydligt mer. Skillnaden beror på en enkel redovisningsövning: varje parameter dyker upp flera gånger i minnet under träning.
För varje parameter håller träning:
- Vikten själv (1× vikt)
- Adam första moment (m): samma form som vikt (1× vikt)
- Adam andra moment (v): samma form som vikt (1× vikt)
- Gradienter: samma form som vikt (1× vikt)
- Aktiveringar & temporärer: ~2-4× vikt (varierar med batch & kontext)
Totalt: ~6-8× viktantalet, i byte bestämt av precision.
Precision multiplicerar allt
| Precision | Bytes/param | Total för 120M vikter | Anmärkningar |
|---|---|---|---|
| FP32 | 4 | 480 MB | Baslinje; säkrast, långsammast |
| FP16 | 2 | 240 MB | cuBLAS, hälften minne |
| FP8 E4M3 | 1 | 120 MB | Tensor cores, NaN-risk |
Multiplicera med 6-8× för fullständigt träningsminnesavtryck. ANDREA-120M tränas bekvämt i FP16 (~2 GB för vikter + optimizer + grads); FP8 E4M3 halverar träningstiden på RTX 4090 tensor cores.
Aktivitet 13 (grow_a_language_model_precision) går igenom FP-precisionens avvägningar i detalj.
Dimensionering av ANDREA-120M:s optimizer-tillstånd
Tjugofem aktiviteter
Två halvor
Denna kurs delas rent upp. Första halvan täcker vad microGPT lärde ut fältet: en transformer som körs på en GPU. Andra halvan täcker ANDREA:s verkliga bidrag: en läroplan som lär.
Halva 1: En transformer på en GPU (aktiviteter 2-13)
| # | Aktivitet | Slag |
|---|---|---|
| 2 | Harris morfemtokenserare | distributionell segmentering, 256+N+1 vocab |
| 3 | Tokenserare-diet-justering | mättnadspunkt, varför 12M slösade 63,6% |
| 4 | Inbäddningar & position | inlärd token + positionsuppslag |
| 5 | Skalad prickprodukt-attention | Q·Kᵀ/√d, kausal mask, softmax |
| 6 | Multi-head attention | huvuduppdelningar, parallella projektioner |
| 7 | Transformerblock | MLP, residualer, lagernorm |
| 8 | Korsentropi & perplexitet | log-sannolikhet, SMMA-förlust |
| 9 | Backprop i anpassad CUDA | kedjeregel över microgpt_cuda.cu |
| 10 | AdamW | decouplad viktdegradation; varför vanliga Adam dog |
| 11 | LR-uppvärmning + cosinusnedgång | 2000-stegs ramp; varför omedelbar topp förstör 120M |
| 12 | Gradientklippning | global L2-norm; 3 CUDA-kärnor |
| 13 | FP32 / FP16 / FP8 E4M3 | precisionerbyt; tensor cores |
Halva 2: Ett läroplan som lär sig (aktiviteter 14-24)
| # | Aktivitet | Slå |
|---|---|---|
| 14 | Multi-armed bandits | UCB1, utforskning vs utnyttjande |
| 15 | Fasbaserad tärningskontroll | 7/14/21/28/42 faser, 1d3/1d4 tärningar |
| 16 | Belöningsattribution & EMA | per-källförlust EMA, 1000× skalning |
| 17 | Källgolven & epokstraff | 1/(1+epoker) förhindrar memorering |
| 18 | Täckningsbonus | dokumentnivåspårning, 1.3× aktualitet |
| 19 | Läroplansuppvärmning | 7 chatt/prosa källor första 20K stegen |
| 20 | Filtrering efter form, inte tecken | has_system_prompt_shape() |
| 21 | Kohärensbaserad tidig stoppning | bigram/trigram/word/char auto-halt |
| 22 | Kontrollpunkt, återuppta, signaler | format, SIGTERM/SIGUSR1, loss.json kontinuitet |
| 23 | Provgranskning & extern bedömning | läsa en körning, 9.5/10 territorium |
| 24 | Från microGPT till ANDREA-120M | v1 kollaps, v2 fixar, v2.5 patch, v3 polering |
Plus en följeslagare: geometry_of_andrea betraktar varje lager som geometri (embedding space, attention som projektion, loss surface, bandit som en promenad på en diskret simplex).
Föreslagen ordning
Aktiviteterna 2-13 bygger en fungerande transformer. Hoppa fram till del 2 om du har tränat transformatorer tidigare; kom tillbaka när nyfikenheten slår till.
Varje aktivitet står för sig så långt det är möjligt. Matematikreferenser hänvisar till tidigare aktiviteter vid namn (se aktivitet 5: scaled dot-product attention). Kodreferenser pekar på microgpt/microgpt_cuda.cu & microgpt/training_proxy.py i ~/git/uncloseai-cli/.