Hoppa till innehållet
10/30Kapitel 10 av 30

Pretraining av en LLM: data, compute, scaling laws och kostnad

Tjugo modeller tränade på en laptop-GPU för att mäta en scaling law och kontrollera 6ND-estimatet mot en verklig FLOP-räknare.

På den här sidan

Kapitel 9 slutade med ett transformer-block som tränar. Stapla några av dem, rikta next-token-förlusten från kapitel 8 mot utdata, och det finns inget kvar att uppfinna. Allt som återstår är ett inköp.

Det är ett större skifte än det låter. Varje kapitel hittills frågade lär den sig? — en ja-eller-nej-fråga som en laptop avgör på tio minuter. Det här ställer en fråga med pengar i: givet en fast mängd aritmetik, vilken är den bästa modell jag kan köpa? Svaret är en formel, och den var inte uppenbar för någon 2018.

Här är den frågan besvarad genom mätning, på en enda laptop-GPU. Tjugo modeller, från 98 624 till 15 miljoner parametrar, tränades från grunden på 174 miljoner tokens från Wikipedia — ett BPE-vokabulär på 2 048 token tränat på samma sätt som kapitel 7 tränar ett, med transformer från kapitel 9. Varje körning fick exakt en av tre compute-budgetar och inte en enda operation mer, så en större modell läser nödvändigtvis mindre text. Den bästa held-out-förlusten som nåddes vid varje budget:

TEXT
budget C (FLOPs)   best loss   reached by a model of
       1.00e13       5.3531           98,624 params
       3.16e13       4.8638           98,624 params
       1.00e14       4.3383          295,808 params

fitted:  L = (Cc / C)^0.0913     over one decade of compute

Tio gånger mer aritmetik sänker förlusten med 19 %, och de tre punkterna ligger på en rak linje i log-log. Ingenting i de första nio kapitlen förutsäger det. Det finns inget teorem bakom — det är en empirisk regelbundenhet, som håller med en annan exponent över de tio storleksordningarna mellan den här laptopen och ett datacenter, och det är den enskilda observation som övertalade en hel industri att lägga ett litet lands BNP på GPU:er.

Vad pretraining är, och vad som är nytt med det

Länk till avsnittet: Vad pretraining är, och vad som är nytt med det

Ingenting i målet förändras. Modellen förutsäger fortfarande nästa token, förlusten är fortfarande cross-entropy från kapitel 4 applicerad på faktoriseringen i kapitel 8, optimeraren är fortfarande AdamW från kapitel 6. Pretraining är inte en ny algoritm; det är samma algoritm körd på en corpus som är stor nog för att körningen måste budgeteras. Två saker gör det möjligt: etiketterna är gratis, eftersom målet för position tt är token vid t+1t+1 och redan finns i texten; och det sista avsnittet i kapitel 6 tog bort invändningen, eftersom en modell med långt fler parametrar än de klassiska reglerna tillåter inte faller isär, utan blir bättre. Det som kommer ut är en basmodell — något som fortsätter text snarare än svarar.

Innan något av detta kan budgeteras måste det räknas, och fältet räknar det med en formel:

C6NDC \approx 6ND

där NN är antalet parametrar, DD antalet träningstokens och CC det totala antalet flyttalsoperationer. Kaplan et al. härleder den i två steg.1 Forward: 2 FLOPs per parameter per token, eftersom varje parameter i en matrismultiplikation används en gång per token, i en multiplikation och en addition. Backward: dubbelt så mycket som forward, eftersom backward-passet från kapitel 5 beräknar två gradienter i varje lager — med avseende på lagrets indata, så att signalen fortsätter färdas, och med avseende på dess vikter — var och en en matrismultiplikation i samma storlek som forward, så 4N4N.

Det är hela härledningen, och den är värd att kontrollera snarare än att bara tro på. PyTorch levererar en verklig FLOP-räknare, torch.utils.flop_counter.FlopCounterMode, som fångar upp varje operation en modell skickar iväg och summerar det faktiska arbetet. Kör den över fyra storleksordningar, den största på meta-enheten, som allokerar former och inget minne:

flops.pyPYTHON
from torch.utils.flop_counter import FlopCounterMode

counter = FlopCounterMode(display=False)
with counter:                       
    loss = model(x, targets)[1]     
    loss.backward()                 
measured = counter.get_total_flops()
print(measured / (6 * n_params * n_tokens))
konfigurationNN utan embeddingsNN totaltuppmätt, fwd+bwd÷ 6ND6ND (totalt NN)÷ 6ND6ND (utan emb.)fwd+bwd ÷ fwd
dd 128, 4 lager, TT 256788 7367 254 4004.60e101.0319.4853.000
dd 512, 8 lager, TT 25625 183 23251 045 8883.26e111.0382.1043.000
dd 768, 12 lager, TT 102484 973 056124 356 8641.75e121.1451.6763.000
dd 1600, 48 lager, TT 10241 474 870 4001 556 920 0002.10e131.1001.1613.000
dd 4096, 32 lager, TT 20486 442 983 4246 582 444 0328.74e131.0801.1043.000
dd 8192, 80 lager, TT 819264 427 147 26465 544 929 2803.75e151.1631.1833.000

Forward+backward över forward-kvoten är 3.000, exakt, i varje skala: inte en approximation som råkar vara bra, utan den aritmetiska identiteten ovan returnerad som ett runt tal av en räknare som inte vet något om härledningen.

Den uppmätta totalen ligger sedan mellan 3 % och 17 % över 6ND6ND, när NN räknar embedding-matriserna — och den klausulen spelar roll, eftersom de två grundläggande artiklarna räknar NN olika. Kaplan utesluter ”all vocabulary and positional embeddings” eftersom det ”produces significantly cleaner scaling laws” (§1.3); Chinchillas Appendix F säger ”we also count embeddings matrices in the total parameter count”.2 För ett brett vokabulär och en smal hidden dimension skiljer de två sig med en faktor nio, som första raden visar.

Restgapet är vad 6ND6ND avsiktligt utelämnar: attention-poängen. Kaplans ekv. (2.2) skriver forward-kostnaden som 2N+2nlayernctxdmodel2N + 2\,n_{\text{layer}} n_{\text{ctx}} d_{\text{model}} och släpper den andra termen eftersom dmodelnctx/12d_{\text{model}} \gg n_{\text{ctx}}/12 — säkert 2020, mindre säkert nu, och skälet till att kvoten driver uppåt när T/dT/d växer — vilket är varför två rader här delar ett TT på 1 024 och kvoten faller, från 1.145 till 1.100, när dd går från 768 till 1 600. Det är O(T2)O(T^2)-kostnaden som kapitel 9 introducerade och kapitel 16 gör om till ett pris.

Compute avgör hur lång tid en körning tar; minnet avgör om den kan starta. Träna med vanlig fp32 AdamW och varje parameter bär fyra tal: vikten, dess gradient, och Adams löpande medelvärde mm och varians vv — de två medelvärdena som byggdes för hand i kapitel 6. Fyra tal på fyra byte vardera är 16 byte per parameter, före en enda aktivering. Uppmätt på en laptop-GPU med 8 GB, med resident allokering vid punkten i steget där ingen graf är vid liv:

modellvokabulärbatchNN16N16N förutspåttresident uppmätttopp i ett stegskillnaden
dd 512, 8 lager50 257851 045 888779 MB801 MB2 500 MB1 699 MB
dd 512, 8 lager4 096827 411 456418 MB426 MB1 043 MB617 MB
dd 256, 6 lager4 09685 839 36089 MB89 MB382 MB293 MB
dd 256, 6 lager4 096325 839 36089 MB89 MB1 259 MB1 170 MB
dd 256, 6 lager4 0961285 839 36089 MB89 MB4 771 MB4 681 MB

Förutsägelse och mätning stämmer inom 3 %. Överraskningen är den sista kolumnen: aktiveringarna får modellen att se liten ut. Samma modell med 5,8 miljoner parametrar som behöver 89 MB persistent state behöver 4 681 MB aktiveringar vid en batch på 128 — femtiotvå gånger modellen — och mycket av det är inte transformer alls. Det är logits, en vektor av vokabulärstorlek per token med fyra byte per post: 512 MB i sista raden, 393 MB i den första. Vokabulärstorleken valdes i kapitel 7, och den avgör fortfarande vad som får plats på kortet.

Vilken term som dominerar beror på körningens form, vilket är varför Micikevicius et al. säger att minne ”is dominated by activations”3 medan ZeRO säger att en modell med 1,5 miljarder parametrar behöver ”at least 24 GB” enbart för model states.4 ZeRO når samma 16 byte via en annan väg — 2Ψ2\Psi för fp16-vikter, 2Ψ2\Psi för fp16-gradienter, 4Ψ4\Psi vardera för fp32-mastervikterna och Adams två moment — vilket för 70 miljarder parametrar är 1,12 terabyte, fjorton 80 GB-GPU:er värt innan en enda aktivering.

Inget av detta får plats på en enda enhet i frontier-skala, så körningen delas på fyra sätt samtidigt. Data parallelism lägger en kopia av modellen på varje GPU och medelvärdesbildar gradienterna — standardläget, och det som ZeRO förbättrar genom att vägra behålla redundanta kopior av optimerarens state. Tensor parallelism delar upp enskilda matriser mellan enheter. Pipeline parallelism ger varje enhet en sammanhängande grupp lager. Context parallelism delar själva sekvensen, nödvändigt först när TT är tillräckligt lång för att attention-termen ska dominera. Llama 3:s tabell 4 listar alla fyra samtidigt: tensor 8, context upp till 16, pipeline 16, data upp till 128, över 16 384 H100-GPU:er.5 Det är allt den här kursen kommer att säga om det; ingenjörsarbetet bakom distribuerad träning är en egen termin, och Stanfords CS336 är den terminen, föreläsning 5 till 8, med koden.6 Det som överlever delegeringen är ett enda tal, model FLOPs utilisation — andelen av en GPU:s topparitmetik som en verklig körning uppnår — vilket är det som förvandlar det prydliga 6ND6ND till väggklocketid och därmed till pengar.

I januari 2020 tränade Kaplan et al. ett rutnät av transformers och fann att testförlusten följer en potenslag i var och en av de tre resurserna över mer än sex storleksordningar.1 Deras §1.2 ger tre anpassade lagar:

L(N)=(NcN)αN,αN0.076,Nc8.8×1013L(N) = \left(\frac{N_c}{N}\right)^{\alpha_N}, \qquad \alpha_N \approx 0.076, \qquad N_c \approx 8.8 \times 10^{13}

med följeslagare αD0.095\alpha_D \approx 0.095 för data och αCmin0.050\alpha_C^{\min} \approx 0.050 för optimalt allokerad compute. Konstanterna är inte universella, och artikeln säger det: ”the precise numerical values of NcN_c, CcminC_c^{\min} and DcD_c depend on the vocabulary size and tokenization and hence do not have a fundamental meaning.”

Exponenterna är pyttesmå: tio gånger parametrarna köper en faktor 100.0761.1910^{0.076} \approx 1.19 från den återstående förlusten. Det låter som ingenting, och det är det viktigaste faktumet här — avkastningen är usel och den tar aldrig slut. En potenslag med en liten exponent lovar att nästa storleksordning kommer att hjälpa, mindre än den förra gjorde, för alltid. Att köpa compute slutar vara en chansning och blir ett inköp med en publicerad växelkurs, vilket är exakt argumentet som låste upp kapitalet.

Sedan kom ordinationen, och det är här artikeln hade fel på ett sätt som kostade industrin väldigt mycket pengar. Kaplans tabell 6 ger NoptC0.73N_{\text{opt}} \propto C^{0.73} och DoptC0.27D_{\text{opt}} \propto C^{0.27}: tio gånger compute betyder en modell som är 5,4 gånger större men bara matas med 1,9 gånger så mycket text. Sammanfattningen är explicit — ”optimally compute-efficient training involves training very large models on a relatively modest amount of data and stopping significantly before convergence.” Fältet gjorde exakt det: GPT-3 är 175 miljarder parametrar på 300 miljarder tokens,7 Gopher 280 miljarder på 300 miljarder, Megatron-Turing NLG 530 miljarder på 270 miljarder.2 En halv token till två tokens per parameter, rakt igenom.

I mars 2022 tränade Hoffmann et al. över 400 modeller från 70 miljoner till 16 miljarder parametrar och nådde motsatt slutsats via tre oberoende vägar.2 Deras tabell 2 rapporterar exponenten aa i NoptCaN_{\text{opt}} \propto C^{a} som 0.50, 0.49 och 0.46, mot Kaplans 0.73. I klartext: modellstorlek och träningsdata bör växa i samma proportion.

Deras andra angreppssätt är det som reproduceras av svepet högst upp i det här kapitlet, i en miljondel av skalan: fixa en budget, träna många storlekar vid exakt den budgeten, plotta slutförlust mot modellstorlek.

parametrarC=1013C = 10^{13}C=3.16×1013C = 3.16 \times 10^{13}C=1014C = 10^{14}
98 6245.3531 (171)4.8638 (542)
150 3205.4636 (74)
194 2085.5041 (44)4.8730 (140)4.4040 (442)
295 8085.5550 (19)4.9029 (60)4.3383 (190)
665 2805.7849 (3.8)5.1254 (12)4.4192 (38)
1 280 7685.8174 (1.0)5.1751 (3.2)4.5003 (10)
3 101 5685.4686 (0.5)4.7768 (1.7)
5 315 0725.5894 (0.2)4.8514 (0.6)
15 053 5685.3534 (0.1)

Held-out-förlust i nats per token, tokens per parameter inom parentes, fetstil för bästa modellen vid varje budget; ett streck är en punkt som inte kördes, eftersom budgeten krävde mer text än corpuset innehåller eller storleken låg utanför dem som sveptes där.

Läs nedåt i en kolumn: förlusten faller, bottnar och klättrar igen. En modell kan vara för stor för sin budget precis lika lätt som för liten — vid 101410^{14} är straffet för att välja 665 280 parametrar framför 295 808 0,08 nats, vilket på kuvertet som anpassats ovan är den förlust en korrekt dimensionerad modell når med 18 % mindre compute. Att välja fel form kastar bort en femtedel av budgeten. Det är Chinchillas figur 3 på en eftermiddag på en GPU i stället för med fyrahundra modeller.

Läs nu tvärs över. Vid 101310^{13} är den bästa modellen den minsta som sveptes; vid 101410^{14} är den 295 808 parametrar, inramad på båda sidor. Optimum flyttar åt höger när budgeten växer, vilket är hela innehållet i korrigeringen. Anpassa artikelns tredje angreppssätt — ytan L(N,D)=E+A/Nα+B/DβL(N,D) = E + A/N^{\alpha} + B/D^{\beta} över varje körning — och minimera under villkoret C=6NDC = 6ND:

TEXT
L(N, D) = 24.7 / N^0.195 + 46.8 / D^0.169       (E fits to ~0; see below)
implied   N_opt ∝ C^0.464
  compare   Chinchilla 0.46-0.50 · Besiroglu 0.513 · Kaplan 0.73

0.46, från en laptop, mot Kaplans 0.73. Överensstämmelse på tre siffror från en trebuddgetsanpassning är tur; överensstämmelse på den första är det inte. Exponenten reser — konstanten gör det inte, eftersom token-till-parameter-kvoten vid dessa optima är 170 till 540, inte 20. Tre skäl, alla lärorika. EE anpassas till noll eftersom körningen vid en förlust över 4 nats inte är i närheten av entropigolvet som dominerar Chinchillas anpassning. Batchstorlek och learning rate hölls fasta i stället för att trimmas per punkt, vilket missgynnar de körningar som får minst antal steg — och det är de stora modellerna: vid 101310^{13} FLOPs får en modell med 1,28 miljoner parametrar totalt 159 optimerarsteg, långt under de några tusen som Kaplans SminS_{\min}-term säger att varje modell behöver. En scaling law anpassas inom en regim, och den här ligger sex storleksordningar under Chinchillas.

Därav artikelns sammanfattning: ”current large language models are significantly undertrained”. Chinchilla är demonstrationen — 70 miljarder parametrar på 1,4 biljoner tokens, samma totala compute som Gophers 280 miljarder på 300 miljarder, och slår den på 51 av 57 MMLU-uppgifter, 67,5 % mot 60 %.2 Fyra gånger mindre, fyra och en halv gånger mer text, samma pengar, bättre modell.

Två förbehåll om den berömda kvoten. ”Tjugo tokens per parameter” är inte en mening i artikeln, som bara säger att ”for every doubling of model size the number of training tokens should also be doubled”; 20 är en slutsats från tabell 3 och från Chinchillas egna 70 B på 1,4 T. Och dess precision är sämre än publicerat: Besiroglu et al. anpassade om från en digitalisering av figur 4, fann att de ursprungliga parametrarna ”fit the reconstructed data poorly” med intervall ”implausibly tight given the number of data points”, och satte det ärliga intervallet till ”between 4 and 40” tokens per parameter.8

En detalj i Chinchillas metod infriar ett löfte som kapitel 1 gav om learning-rate schedules. Cosine-schemat måste matchas mot token-budgeten. En modell som ska se 10 miljoner tokens måste låta sin learning rate falla till noll vid 10 miljoner tokens; ge den ett schema dimensionerat för 100 miljoner, stoppa den tidigt, och du läser en förlust mitt i nedstigningen vid en alldeles för hög nivå. Chinchilla tränar varje modell med fyra cykellängder för att kontrollera exakt detta; svepet ovan sätter sitt schema från budgeten av samma skäl.

De är det mest användbara empiriska resultatet i fältet och de översäljs rutinmässigt. Fyra begränsningar.

De förutsäger förlust, inte förmåga. Vänsterledet är cross-entropy på held-out-text. Ingenting i dessa artiklar ger stöd för ett påstående om huruvida en modell kommer att skriva korrekt SQL, vägra en skadlig begäran eller använda ett tool. Det här är lärdomen från kapitel 5 igen: en förutsägelse av förlusten är inte en förutsägelse av beteendet du betalar för.

De är anpassade, inte härledda. Ingen teori producerar αN=0.076\alpha_N = 0.076. Konstanterna flyttar sig med tokenizer — vilket är varför en perplexity-jämförelse mellan två tokenizers är meningslös, som kapitel 8 förklarade — och med datamixen, arkitekturen och optimeraren. Varje publicerad lag är en lag för den uppställning som producerade den, vilket är varför Meta anpassade sin egen före Llama 3.5

De antar en färsk token för varje steg, vilket tyst antar ett oändligt corpus. Muennighoff et al. mätte vad som händer när det tar slut: upp till fyra epoker av upprepade data kostar nästan ingenting — en modell med 8,7 miljarder parametrar på 44 miljarder unika tokens sedda fyra gånger slutade med ”only 0.5 % higher validation loss” än samma modell på 178 miljarder unika — medan ytterligare compute efter omkring sexton epoker inte köper något.9

Och ingen tränar compute-optimal längre. Chinchilla minimerar kostnaden för träning; en distribuerad modell betalar sedan ungefär 2N2N FLOPs per genererad token, för alltid. LLaMA 1 sade det rakt ut: ”given a target level of performance, the preferred model is not the fastest to train but the fastest at inference”.10 Sardana et al. formaliserade det genom att minimera 6NDtrain+2NDinference6ND_{\text{train}} + 2ND_{\text{inference}} i stället, och fann att den som väntar sig en miljard förfrågningar bör träna ”smaller and longer than Chinchilla-optimal”.11 Llama 3:s §9.1 håller med: dess små modeller tränas ”far beyond the point of compute optimal training, effectively trading training compute for inference efficiency”.5 Kvoten är inte föråldrad; den svarar på en fråga som inte längre är den som ställs.

Emergent abilities, och argumentet om huruvida de är verkliga

Länk till avsnittet: Emergent abilities, och argumentet om huruvida de är verkliga

Förlusten faller jämnt. Benchmark-poäng gör det ibland inte. Wei et al. samlade fall där en uppgift ligger på slumpnivå över storleksordningar av training compute och sedan hoppar — tresiffrig aritmetik som dyker upp i GPT-3 vid ungefär 2×10222 \times 10^{22} FLOPs, MMLU som stiger över gissning mellan 33 och 5×10235 \times 10^{23} — och gav mönstret ett namn: ”an ability is emergent if it is not present in smaller models but is present in larger models”.12 Om det är en verklig egenskap är extrapolering från billiga experiment osäker, eftersom förmågan du köper kanske inte finns i någon skala du har råd att testa.

Schaeffer, Miranda och Koyejo hävdade att det mesta är en mätartefakt, och mekanismen är aritmetisk.13 Per-token-förlusten faller jämnt, så sannolikheten att en token är rätt, exp(L)\exp(-\mathcal{L}), förbättras gradvis. Poängsätt modellen med exakt strängmatchning över ett LL-token-svar och du höjer den sannolikheten till potensen LL — en jämn kurva upphöjd till en stor potens ser ut som en klippa. Byt till ett mått som räknar tokens i stället för att kräva alla, på samma utdata, och ”the family's performance smoothly, continuously and predictably improves with increasing scale”.

Deras granskning är talet att minnas — ”of the 39 preferred metrics in BIG-Bench, at most 5 display emergence”, med två diskontinuerliga mått som står för över 92 % av de påstådda fallen — och det är också deras varning: ”nothing in this paper should be interpreted as claiming that large language models cannot display emergent abilities”. Ett hopp i ett diagram är bevis om måttet tills motsatsen visats. Kapitel 29 är där det blir ditt problem, eftersom valet av ett hard-cutoff-mått är ett beslut du kommer att fatta utan att märka det.

Corpuset är den del av en pretraining-körning som inte har någon ekvation kopplad till sig, och där de flesta av de följdrika besluten finns. Råmaterialet är en webbcrawl: Common Crawls arkiv från augusti 2026 innehåller ”2.14 billion web pages or 360 TiB of uncompressed content”, en månad av det, gratis att ladda ned.14 Nästan inget är användbart som det står. T5-artikeln säger att crawlen ”largely comprises gibberish or boiler-plate text like menus, error messages, or duplicate text”, och C4-pipelinen den introducerade är en lista med trubbiga heuristiker — behåll bara rader som slutar med avslutande skiljetecken, släpp sidor med färre än tre meningar, släpp varje sida som innehåller en klammerparentes eller ett ord från en offentlig lista över obsceniteter — vilket förvandlar tjugo terabyte månadstext till omkring 750 GB.15

Trubbig är ordet. Dodge et al. granskade vad dessa filter tar bort och fann att obscenitetsblocklistan raderar 42 % av dokument på afroamerikansk engelska och 32 % på hispanic-aligned engelska, mot 6,2 % av white-aligned engelska, vilket lämnar ett corpus där 97,8 % tillhör den sista kategorin.16 En regel utan åsikt om dialekt hade en.

Sedan deduplication, vilket inte är städning: Lee et al. fann en mening på 61 ord som upprepades 61 036 gånger i C4, och visade att deduplicering minskar takten med vilken modeller ”emit memorized text” tiofaldigt, från 1,9 % av genererade tokens till 0,19 %.17 Mer är dock inte bättre — FineWebs team deduplicerade globalt över 96 crawls, fick 4 biljoner tokens och ingen mätbar förbättring, deduplicerade sedan varje crawl separat, fick 20 biljoner, och matchade det bästa befintliga corpuset.18

Sedan contamination. Llama 3 mätte sin egen och publicerade den: 98 % av AGIEval, 95 % av BIG-Bench Hard och 85 % av HellaSwag överlappade träningsmängden med 8-grams, och för MMLU en överlappning så hög att ”it is impossible to get a good performance gain estimate”.5 GPT-3:s §4 rapporterar en filtreringsbugg som lämnade benchmarks i datan utan väg tillbaka: ”because of cost considerations it was infeasible to retrain the model”.7

Proveniens är den olösta delen. The Pile levererade en komponent på 100,96 GiB kallad Books3 — 12 % av corpuset och, enligt artikelns egen samtyckestabell, böcker från en privat torrenttracker;19 den togs offline i augusti 2023 efter ett upphovsrättsklagomål. Den rättsliga positionen i september 2026 är olöst, och de tre amerikanska domar som nämns som en trend är oense med varandra. Alsup fann att träning på lagligt förvärvade böcker var ”exceedingly transformative” samtidigt som han höll fast vid att ett bibliotek byggt från piratkopior inte var det, och Anthropic förlikade den halvan för $1,5 miljarder som täckte 482 460 verk, ungefär $3 000 vardera, godkänt 20 juli 2026.20 Chhabria beviljade Meta summary judgment samtidigt som han skrev att hans avgörande ”does not stand for the proposition that Meta's use of copyrighted materials to train its language models is lawful”, bara att ”these plaintiffs made the wrong arguments”.21 Bibas, i ett avgörande mot Ross Intelligence, noterade att ”only non-generative AI is before me today”.22 Ingen amerikansk appellationsdomstol har avgjort frågan.

Människor gör de delar som förlusten inte kan. TIME rapporterade i januari 2023 att arbetare som märkte toxisk text åt OpenAI via företaget Sama fick hem ”between around $1.32 and $2 per hour” för att läsa passager som beskrev sexuella övergrepp mot barn, tortyr och självskada, medan OpenAI betalade Sama $12,50 i timmen för arbetet; Sama bestrider både löneintervallet och kvoten.23 Det är filtreringen runt pretraining snarare än pretraining i sig — men det står på samma faktura, och det är där en människa sitter.

Elektriciteten är verklig och oftast felciterad. Den noggrannaste publicerade siffran är BLOOM:s: 1 082 990 GPU-timmar, 433 MWh och 24,7 ton CO₂-ekvivalenter för körningen, 50,5 när tillverkning och idle-noder räknas;24 Patterson et al. sätter GPT-3 till 1 287 MWh och 552 ton.25 Två varningar. BLOOM:s fördel är det franska kärnkraftsnätet på 57 g CO₂ per kWh snarare än effektivitet — den använde mer energi än OPT-175B. Och fältets mest citerade utsläppssiffra, Strubell et al.:s 626 155 lb för en neural architecture search, visades senare vara 88 gånger för hög, eftersom den antog att sökningen kördes i full modellstorlek när den kördes på en proxy.26 LBNL:s inramning är den försvarbara: amerikanska datacenter använde 192 TWh 2024, 4,7 % av landets el — en siffra kopplad till en industri, inte till någon enskild körning.27

Den röda tråden är vad Bender et al. kallade documentation debt: ”putting ourselves in a situation where the datasets are both undocumented and too large to document post hoc”.28 Varje faktum ovan finns för att någon tittade. För corpora bakom de modeller de flesta använder kan ingen göra det.

Nu aritmetiken alla vill ha, från fyra citerade indata, så att det är uppenbart vad som ska bytas ut när de blir inaktuella.

NVIDIA:s H100-sida listar 1 979 teraFLOPS BF16 tensor-core-genomströmning under en fotnot som lyder ”with sparsity”.29 Ingen pretraining-körning använder strukturerad sparsity, så den täta siffran är hälften: 989,5 TFLOP/s.

Llama 3:s tabell 4 rapporterar 38–43 % BF16 model FLOPs utilisation. Ta 40 %: 395,8 TFLOP/s nyttig aritmetik per GPU.5

Lambdas on-demand-pris för en 8×H100 SXM-nod, hämtat 2026-09-06: $3,99 per GPU-timme, alltså $31,92 i timmen för noden.30

Chinchillas kvot, D=20ND = 20N, ger C=6ND=120N2C = 6ND = 120N^2 och därmed N=C/120N = \sqrt{C/120}.

budgetH100-timmarFLOPscompute-optimal parametrartokenspå en 8×H100-nodGPU:er för att bli klar på 90 dagar
$100253.6e19546 M10.9 B3,1 h1
$1 0002513.6e201,73 B34,5 B31,3 h1
$10 0002 5063.6e215,46 B109 B13 dagar2
$100 00025 0633.6e2217,3 B345 B131 dagar12
$1 000 000250 6273.6e2354,6 B1,09 T4 år116
$10 000 0002 506 2663.6e24173 B3,45 T36 år1 160
$100 000 00025 062 6573.6e25546 B10,9 T358 år11 603

Läs de två sista kolumnerna tillsammans. För $10 000 får du en modell med 5 miljarder parametrar på en hyrd nod på två veckor. Vid $100 000 000 säger aritmetiken 546 miljarder parametrar — och tolv tusen H100:or ihopkopplade i tre månader, vilket inte är något du hyr med kreditkort. Efter ungefär $100 000 slutar den bindande begränsningen vara pengar och blir klustret.

Innan du litar på en sådan tabell, testa den mot körningar vars verkliga kostnad är publicerad — llm.c reproducerar GPT-2 124M på ”~90 minutes” på en 8×A100-nod ”for about $20”, och GPT-2 1.6B på 24 timmar på en 8×H100-nod för $672.31

TEXT
$672, against what $672 actually bought (llm.c GPT-2 1.6B, one 8xH100 node, 24 h)
  this table predicts:      168 H100-hours   N = 1.41 B params   D = 28.3 B tokens
  what was actually run:    192 H100-hours   N = 1.558 B params  D = 33.6 B tokens

Llama 3 405B, against Meta's own published GPU-hours
  from the paper's 3.8e25 FLOPs at 40 % MFU:   26.67 M H100-hours
  published in Meta's Llama 3.1 model card:    30.84 M H100-hours    ratio 0.86

Båda inom ungefär 15 %, vilket är ungefär den noggrannhet den här typen av estimat förtjänar och betydligt bättre än den noggrannhet den brukar citeras med.

Rubrikjämförelsen, med båda definitionerna på bordet

Länk till avsnittet: Rubrikjämförelsen, med båda definitionerna på bordet

Den mest upprepade siffran i det här ämnet är att en GPT-2-klassmodell som kostade omkring $43 000 år 2019 kan reproduceras i dag för några tiotal dollar. Den moderna halvan är väldokumenterad; den historiska halvan är det inte.

I dag. Karpathys nanochat README: ”you can train your own GPT-2 capability LLM ... for only $48 (~2 hours of 8XH100 GPU node) ... On a spot instance, the total cost can be closer to ~$15.”32 ”GPT-2 capability” här är precist och publicerat — att slå GPT-2:s CORE-poäng på 0,256525 — på en leaderboard vars bästa bidrag den 14 mars 2026 är 1,65 timmar. $48 antar $3 per GPU-timme, under Lambdas listpris $3,99; vid listpris är det närmare $64.

År 2019. Det finns ingen primärkälla: OpenAI publicerade aldrig en varaktighet eller kostnad. Kedjan går via The Register, februari 2019, som rapporterar ”256 Google TPU3 cores” utan pris och utan varaktighet; sedan Synced, juni 2019, som noterar att hårdvaran kostade $256 i timmen på Google Cloud och uttryckligen säger att ”OpenAI didn't specify the training duration”. $43 008 är $256 i timmen gånger antagna 168 timmar som ingen någonsin har källbelagt.

Så den ärliga rubriken är: en modell som matchar GPT-2:s publicerade benchmark-poäng kan tränas i dag för långt under $100 på hyrd hårdvara, mot en kostnad 2019 som aldrig publicerades och vars berömda estimat vilar på en okällad gissning om varaktigheten. Kollapsen är verklig och den moderna halvan kan reproduceras av vem som helst med ett kreditkort; kvoten är aritmetik på ett tal som inte finns. Det är läget för publicerade träningskostnader i allmänhet. GPT-3-artikeln innehåller inget dollarbelopp alls, bara 3.14×10233.14 \times 10^{23} FLOPs i tabell D.1;7 Llama 3-artikeln innehåller inget heller.5 Varje träningskostnad du har läst är ett estimat från ett FLOP-tal, ett hårdvaruantagande och ett prisantagande — alltid värt att fråga vems.

Vad en basmodell vet, och när den slutade veta det

Länk till avsnittet: Vad en basmodell vet, och när den slutade veta det

Det som kommer ut har sett ett fast corpus sammanställt vid ett fast ögonblick, och två egenskaper följer.

Den första är knowledge cutoff. Efter insamlingsdatumet vet modellen ingenting — inte ”är osäker”, ingenting — och den kommer att fabulera flytande i stället för att säga det, eftersom att säga det aldrig var ett beteende den tränades på. Llama 3.1:s model card anger december 2023;33 varje modell har en, och det är en egenskap hos träningsdatan, inte deployment. Att arbeta runt det är ett retrieval-problem, vilket är kapitel 19.

Den andra är att en basmodell kompletterar snarare än svarar. Ge den ”Vad är Frankrikes huvudstad?” och en plausibel fortsättning är en annan fråga, eftersom den strängen i corpuset oftast förekommer i en lista med övningar.

En textkompletterare är inte en assistant. Den följer inte instruktioner, eftersom ingenting i corpuset sade att en begäran borde lydas i stället för fortsättas. Den har ingen föreställning om ett samtal med två deltagare. Den producerar gärna den mest sannolika fortsättningen på en skadlig prompt, eftersom sannolik var det enda den någonsin optimerades för.

Att göra den till något som svarar kräver ett andra steg som kostar en bråkdel av en procent av det första, och som nästan helt består av att visa den exempel på beteendet du vill ha och sedan jämföra par av dess egna utdata. Det steget är där instruktionföljning, chat templates, vägran och — vilket överraskar folk — förmågan att anropa ett tool alla kommer ifrån. Kapitel 11 är det steget: supervised fine-tuning, RLHF, DPO och GRPO, och frågan om vad ”aligned” betyder och vem som bestämmer.


Också värt att läsa vid sidan av det här kapitlet: Karpathys build-nanogpt och den tillhörande videon, som går igenom en full GPT-2-reproduktion från början till slut i ett tempo det här kapitlet inte kan hålla; och Stanford CS324, Large Language Models, vars föreläsningar om data och miljöpåverkan går djupare än avsnittet ovan i material som den här kursen behandlar en gång och delegerar.

  1. Kaplan, J., McCandlish, S., Henighan, T., Brown, T. B., Chess, B., Child, R., Gray, S., Radford, A., Wu, J. och Amodei, D. Scaling Laws for Neural Language Models. arXiv:2001.08361 (2020). De tre potenslagarna är ekv. (1.1)–(1.3) i §1.2 och de fullständiga konstanterna finns i Appendix A, tabell 5; 6N6N-härledningen är §2.1; compute-allokeringens exponenter är tabell 6. Observera att det finns två compute-lagar, αC=0.057\alpha_C = 0.057 vid fast batchstorlek och αCmin=0.050\alpha_C^{\min} = 0.050 vid optimal batchstorlek; artikeln säger att den senare ”should be used to make predictions”. 2

  2. Hoffmann, J., Borgeaud, S., Mensch, A., Buchatskaya, E., Cai, T., Rutherford, E. et al. Training Compute-Optimal Large Language Models. arXiv:2203.15556 (2022). Exponenter i tabell 2, projicerade budgetar i tabell 3, Gopher-jämförelsen i §4, parameterräkningskonventionen i Appendix F. Prosatexten under tabell 3 motsäger själva tabell 3 för raderna 175 B och 280 B; tabellen är versionen att citera. 2 3 4

  3. Micikevicius, P., Narang, S., Alben, J., Diamos, G., Elsen, E., Garcia, D. et al. Mixed Precision Training. arXiv:1710.03740 (2017), ICLR 2018. FP32-mastervikter i §3.1, loss scaling i §3.2. 2

  4. Rajbhandari, S., Rajbhandari, S., Ruwase, O. och He, Y. ZeRO: Memory Optimizations Toward Training Trillion Parameter Models. arXiv:1910.02054 (2019), SC20. 16Ψ16\Psi-bokföringen är §3.1; residual-state-siffrorna för aktiveringar är §3.2.

  5. Grattafiori, A. et al. (Llama Team, AI @ Meta). The Llama 3 Herd of Models. arXiv:2407.21783 (2024). Compute-budget och token-antal i §1, den om-anpassade scaling law i §3.2.1, parallelism-konfiguration och MFU i tabell 4, contamination-analysen i §5.1.4, over-training-uttalandet i §9.1. Artikeln innehåller inga dollarsiffror och ingen utsläppstabell. 2 3 4 5 6

  6. Stanford CS336, Language Modeling from Scratch. Föreläsning 2 täcker resursbokföring, föreläsning 5–8 GPU:er, kernels och parallelism, föreläsning 9 och 11 scaling, föreläsning 13–14 data. Det är kursen som det här kapitlet delegerar sin ingenjörskonst till, och den är offentlig.

  7. Brown, T. B. et al. Language Models are Few-Shot Learners. arXiv:2005.14165 (2020). Compute i Appendix D, tabell D.1 — som har en kolumn bokstavligen rubricerad ”flops per param per token”, vars värde för varje GPT-3-rad är 6. Contamination-analys i §4. 2 3

  8. Besiroglu, T., Erdil, E., Barnett, M. och You, J. Chinchilla Scaling: A replication attempt. arXiv:2404.10102 (2024). Rekonstruerar Chinchillas data genom att digitalisera figur 4, anpassar om och rapporterar de korrigerade exponenterna och mycket bredare intervallen.

  9. Muennighoff, N., Rush, A. M., Barak, B., Le Scao, T., Piktus, A., Tazi, N., Pyysalo, S., Wolf, T. och Raffel, C. Scaling Data-Constrained Language Models. arXiv:2305.16264 (2023), NeurIPS 2023. Fyr-epoksresultatet är §6; sexton-epokers halveringstid är den anpassade RD15R_D^* \approx 15.

  10. Touvron, H., Lavril, T., Izacard, G., Martinet, X., Lachaux, M.-A., Lacroix, T. et al. LLaMA: Open and Efficient Foundation Language Models. arXiv:2302.13971 (2023). §1 anger argumentet om inference-kostnad mot Chinchilla-optimal träning.

  11. Sardana, N., Portes, J., Doubov, S. och Frankle, J. Beyond Chinchilla-Optimal: Accounting for Inference in Language Model Scaling Laws. arXiv:2401.00448 (2023), ICML 2024. Deras §5 innehåller också motvikten: modeller tränade vid extrema token-kvoter fortsätter förbättras, men ”more slowly than scaling laws predict”.

  12. Wei, J., Tay, Y., Bommasani, R., Raffel, C., Zoph, B., Borgeaud, S. et al. Emergent Abilities of Large Language Models. arXiv:2206.07682 (2022), TMLR. Definition i §2, exempel och compute-trösklar i §3–4 och tabell 1.

  13. Schaeffer, R., Miranda, B. och Koyejo, S. Are Emergent Abilities of Large Language Models a Mirage? arXiv:2304.15004 (2023), NeurIPS 2023 outstanding paper. Måttargumentet är §2, BIG-Bench-metaanalysen §4, det konstruerade vision-exemplet §5.

  14. Common Crawl, August 2026 Crawl Archive Now Available (CC-MAIN-2026-34), publicerad 24 augusti 2026, hämtad 2026-09-06. Dess egen förstasida påstår ”over 300 billion pages spanning 15 years”, ”totalling more than 10 petabytes” — en siffra för hela arkivet, inte för den månadscrawl som prissätts här.

  15. Raffel, C., Shazeer, N., Roberts, A., Lee, K., Narang, S., Matena, M., Zhou, Y., Li, W. och Liu, P. J. Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer. arXiv:1910.10683 (2019), JMLR 21(140). C4-filtren är §2.2. Artikeln anger storlekar i byte, inte tokens; siffran 156 miljarder tokens som ofta tillskrivs den kommer från Dodge et al. nedan.

  16. Dodge, J., Sap, M., Marasović, A., Agnew, W., Ilharco, G., Groeneveld, D., Mitchell, M. och Gardner, M. Documenting Large Webtext Corpora: A Case Study on the Colossal Clean Crawled Corpus. arXiv:2104.08758 (2021), EMNLP 2021. Borttagningsnivåer för dialekter är §5.3; benchmark-contamination i C4 är §4.2.

  17. Lee, K., Ippolito, D., Nystrom, A., Zhang, C., Eck, D., Callison-Burch, C. och Carlini, N. Deduplicating Training Data Makes Language Models Better. arXiv:2107.06499 (2021), ACL 2022. De 61 036 upprepningarna är fotnot 1; memoriseringssiffrorna är §6.2, tabell 4, och är procent av genererade tokens under ett 50-token-kriterium för exakt matchning.

  18. Penedo, G., Kydlíček, H., Ben Allal, L., Lozhkov, A., Mitchell, M., Raffel, C., Von Werra, L. och Wolf, T. The FineWeb Datasets: Decanting the Web for the Finest Text Data at Scale. arXiv:2406.17557 (2024), NeurIPS 2024 Datasets and Benchmarks. Dedupliceringsresultatet är §3.4. Den publicerade datasetet har sedan vuxit förbi artikelns 15 biljoner tokens.

  19. Gao, L., Biderman, S., Black, S. et al. The Pile: An 800GB Dataset of Diverse Text for Language Modeling. arXiv:2101.00027 (2020). Books3 är §2.3 och tabell 1; samtyckestabellen är tabell 5. Corpuset är 825,18 GiB, så även titeln är en avrundning nedåt.

  20. Bartz v. Anthropic, nr 4:24-cv-05417 (N.D. Cal.). Fair-use-beslut 23 juni 2025 (Dkt. 231); class certification 17 juli 2025; slutligt godkännande och dom 20 juli 2026 (Dkt. 680). Förlikningen friger endast tidigare inputs, inte outputs och inte framtida agerande.

  21. Kadrey v. Meta, nr 3:23-cv-03417-VC (N.D. Cal.), summary judgment 25 juni 2025 (Dkt. 598). Observera att distributionsyrkandet kring torrenting inte avgjordes och fortfarande är aktivt.

  22. Thomson Reuters v. ROSS Intelligence, nr 1:20-cv-00613-SB (D. Del.), reviderat yttrande 11 februari 2025 (Dkt. 770), Bibas J. På interlocutory appeal till Third Circuit (nr 25-2153), argumenterat 11 juni 2026, oavgjort vid skrivande stund.

  23. Perrigo, B. Exclusive: OpenAI Used Kenyan Workers on Less Than $2 Per Hour to Make ChatGPT Less Toxic. TIME, 18 januari 2023. $2 är ett tak för seniora granskare som nådde varje mål; juniora märkare, majoriteten, fick hem $1,32. Samas gensvar, citerat i samma artikel, anger $1,46–$3,74 och en lägre kvot.

  24. Luccioni, A. S., Viguier, S. och Ligozat, A.-L. Estimating the Carbon Footprint of BLOOM, a 176B Parameter Language Model. arXiv:2211.02001 (2022), JMLR 24(253). Tabell 1 och 3.

  25. Patterson, D., Gonzalez, J., Le, Q., Liang, C., Munguia, L.-M., Rothchild, D., So, D., Texier, M. och Dean, J. Carbon Emissions and Large Neural Network Training. arXiv:2104.10350 (2021). GPT-3:s siffror är tabell 4; korrigeringen av NAS-estimatet är §4.1.

  26. Strubell, E., Ganesh, A. och McCallum, A. Energy and Policy Considerations for Deep Learning in NLP. arXiv:1906.02243 (2019), ACL 2019. Värd att läsa just på grund av vad som hände med dess mest citerade siffra: artikeln är noggrann, anger sin extrapolering och hade ändå fel med två storleksordningar på den enda rad alla upprepade.

  27. Smith, S. J., Hubbard, A., Newkirk, A., Ganeshalingam, M., Holecek, B., Sartor, D., Mills, M. och Shehabi, A. United States Data Center Energy Usage Report: 2025 Update. LBNL-2001758 (18 juni 2026). Detta reviderar den ofta citerade rapporten från 2024 nedåt för den historiska serien; om du citerar siffran 176 TWh för 2023 citerar du den ersatta utgåvan.

  28. Bender, E. M., Gebru, T., McMillan-Major, A. och Shmitchell, S. On the Dangers of Stochastic Parrots: Can Language Models Be Too Big? FAccT '21, s. 610–623. DOI 10.1145/3442188.3445922. ”Documentation debt” är §4.4. Observera att artikelns egna koldioxidsiffror citeras från Strubell et al. och ärver korrigeringen ovan — vilket är en illustration av dess argument snarare än en vederläggning av det.

  29. NVIDIA. NVIDIA H100 Tensor Core GPU produktsida, nvidia.com/en-us/data-center/h100/ (hämtad 2026-09-06). Varje tensor-core-rad på den sidan utom FP64 har fotnoten ”with sparsity”; den täta BF16-siffran som används här är hälften av publicerade 1 979 TFLOPS.

  30. Lambda. GPU Cloud pricing, lambda.ai/pricing (hämtad 2026-09-06). On-demand, per GPU per timme, före skatt. Priserna i det här avsnittet blir inaktuella snabbare än något annat i den här kursen; aritmetiken runt dem blir det inte.

  31. Karpathy, A. karpathy/llm.c, diskussion #481, Reproducing GPT-2 (124M) in llm.c in 90 minutes for $20 (28 maj 2024), och diskussion #677, Let's reproduce GPT-2 (1.6B): one 8XH100 node, 24 hours, $672, in llm.c (11 juli 2024).

  32. Karpathy, A. karpathy/nanochat, README och ”time to GPT-2”-leaderboard (hämtad 2026-09-06). Siffran $48 och CORE-score-definitionen av ”GPT-2 capability” finns båda i README; repositoryts egen speedrun.sh säger ”approximately 1.5 hours”, så behandla tvåtimmarssiffran som avrundad.

  33. Meta. Llama 3.1 model card, models/llama3_1/MODEL_CARD.md i meta-llama/llama-models (hämtad 2026-09-06). Källa för 30,84 M H100-timmar för 405 B-modellen, de 39,3 M totalt, den platsbaserade siffran 11 390 tCO2eq och data-cutoff i december 2023.


Skapad av

David Vicente Campos

Grundare av NeuraLIA Labs och medgrundare av MyRealFood

Jag är dataingenjör från Universitetet i León. Jag var med och grundade MyRealFood, där jag som CTO byggde appen som miljontals människor har använt för att äta bättre, och jag grundade NeuraLIA Labs, där jag bygger AI-produkter. Här skriver jag om det jag har behövt förstå längs vägen, så som jag önskar att någon hade förklarat det för mig.

Mer om författaren

Publicerad av NeuraLIA Labs.

Få nya inlägg i din inkorg

AI-nyheter, guider och produktuppdateringar — ett kort mejl när vi publicerar något som är värt din tid.

Kursindex

Abstract software decision engine with branching paths, probability nodes, and glowing gates.
jevLästid 11 min

Jevs AI-modell är byggd för beslut, inte prosa

TypeSafe AI:s Jev väcker uppmärksamhet eftersom den behandlar mjukvaruintelligens som ett sannolikhetsproblem: välj rätt gren, lägg till konfidens och undvik att betala en LLM för att skriva text när koden behöver ett beslut.

Abstract agent runtime sorting documents, memory blocks and pointer nodes inside a bounded context frame.
context-engineeringLästid 11 min

Kontextteknik för AI-agenter med lång horisont

Långkörande agenter misslyckas inte bara för att fönstret är litet. De misslyckas när filer, verktygsutdata och gammal historik tränger undan uppgiften agenten skulle slutföra.

Redo att låta LIA välja åt dig?

Bygg med alla AI-modeller på ett ställe – kom igång gratis i dag.