Pretraining di un LLM: dati, compute, scaling laws e costi
Venti modelli addestrati su una GPU da laptop per misurare una scaling law e verificare la stima 6ND con un contatore FLOP reale.
In questa pagina
Il capitolo 9 si chiudeva con un blocco transformer che si addestra. Impilane alcuni, punta la perdita next-token del Capitolo 8 sull’output, e non resta più nulla da inventare. Tutto ciò che rimane è un acquisto.
È un cambio più grande di quanto sembri. Finora ogni capitolo chiedeva impara? — una domanda sì-o-no che un laptop risolve in dieci minuti. Questo ne fa una con dentro il denaro: dato un importo fisso di aritmetica, qual è il modello migliore che posso comprare? La risposta è una formula, e nel 2018 non era ovvia per nessuno.
Ecco quella domanda risolta con misure, su una sola GPU da laptop. Venti modelli, da 98.624 a 15 milioni di parametri, sono stati addestrati da zero su 174 milioni di token di Wikipedia — un vocabolario BPE da 2.048 token addestrato come nel Capitolo 7, il transformer del Capitolo 9. Ogni run ha ricevuto esattamente uno di tre budget di compute e non un’operazione in più, quindi un modello più grande legge necessariamente meno testo. La migliore loss held-out raggiunta a ciascun budget:
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 computeDieci volte l’aritmetica riduce la loss del 19% e i tre punti stanno su una linea retta in log-log. Nulla nei primi nove capitoli lo prevede. Non c’è un teorema dietro: è una regolarità empirica, valida con un esponente diverso sui dieci ordini di grandezza tra questo laptop e un datacentre, ed è la singola osservazione che ha convinto un’industria a spendere il PIL di un piccolo paese in GPU.
Che cos’è il pretraining, e cosa c’è di nuovo
Link alla sezione: Che cos’è il pretraining, e cosa c’è di nuovoNell’obiettivo non cambia nulla. Il modello predice ancora il prossimo token, la loss è ancora la cross-entropy del Capitolo 4 applicata alla fattorizzazione del Capitolo 8, l’ottimizzatore è ancora AdamW del Capitolo 6. Il pretraining non è un nuovo algoritmo; è lo stesso algoritmo eseguito su un corpus abbastanza grande da dover essere messo a budget. Due cose lo rendono possibile: le etichette sono gratis, perché il target per la posizione è il token in ed è già nel testo; e l’ultima sezione del Capitolo 6 ha rimosso l’obiezione, perché un modello con molti più parametri di quanto consentano le regole classiche non collassa: migliora. Ciò che ne esce è un modello base — qualcosa che continua testo, invece di rispondere.
Contare il compute prima di spenderlo: 6ND
Link alla sezione: Contare il compute prima di spenderlo: 6NDPrima di poterlo mettere a budget bisogna contarlo, e il settore lo conta con una sola formula:
dove è il numero di parametri, i token di addestramento e le operazioni floating-point totali. Kaplan et al. la derivano in due passaggi.1 Forward: 2 FLOP per parametro per token, perché ogni parametro in una moltiplicazione di matrici viene usato una volta per token, in una moltiplicazione e un’addizione. Backward: due volte il forward, perché il backward pass del Capitolo 5 calcola due gradienti a ogni layer — rispetto agli input del layer, così il segnale continua a viaggiare, e rispetto ai suoi pesi — ciascuno una moltiplicazione di matrici della stessa dimensione di quella forward, quindi .
Questa è tutta la derivazione, e vale la pena verificarla invece di crederci. PyTorch include un contatore FLOP reale, torch.utils.flop_counter.FlopCounterMode, che intercetta ogni operazione dispatchata da un modello e somma il lavoro effettivo. Eseguilo su quattro ordini di grandezza, il più grande sul dispositivo meta, che alloca forme e non memoria:
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))| configurazione | senza embeddings | totale | misurato, fwd+bwd | ÷ (totale ) | ÷ (no emb.) | fwd+bwd ÷ fwd |
|---|---|---|---|---|---|---|
| 128, 4 layer, 256 | 788.736 | 7.254.400 | 4.60e10 | 1,031 | 9,485 | 3,000 |
| 512, 8 layer, 256 | 25.183.232 | 51.045.888 | 3.26e11 | 1,038 | 2,104 | 3,000 |
| 768, 12 layer, 1024 | 84.973.056 | 124.356.864 | 1.75e12 | 1,145 | 1,676 | 3,000 |
| 1600, 48 layer, 1024 | 1.474.870.400 | 1.556.920.000 | 2.10e13 | 1,100 | 1,161 | 3,000 |
| 4096, 32 layer, 2048 | 6.442.983.424 | 6.582.444.032 | 8.74e13 | 1,080 | 1,104 | 3,000 |
| 8192, 80 layer, 8192 | 64.427.147.264 | 65.544.929.280 | 3.75e15 | 1,163 | 1,183 | 3,000 |
Il rapporto forward+backward su forward è 3,000, esattamente, a ogni scala: non un’approssimazione che per caso funziona bene, ma l’identità aritmetica sopra restituita come numero tondo da un contatore che non sa nulla della derivazione.
Il totale misurato si colloca poi tra il 3% e il 17% sopra , una volta che conta le matrici di embedding — e quella clausola conta, perché i due paper fondativi contano in modo diverso. Kaplan esclude «tutti gli embeddings di vocabolario e posizionali» perché così «si producono scaling laws significativamente più pulite» (§1.3); l’Appendice F di Chinchilla dice «contiamo anche le matrici di embeddings nel conteggio totale dei parametri».2 Per un vocabolario ampio e una dimensione hidden stretta, le due scelte differiscono di un fattore nove, come mostra la prima riga.
Lo scarto residuo è ciò che omette deliberatamente: gli score di attention. L’Eq. (2.2) di Kaplan scrive il costo forward come e scarta il secondo termine perché — sicuro nel 2020, meno sicuro ora, e il motivo per cui il rapporto deriva verso l’alto al crescere di — ed è per questo che due righe qui condividono un di 1.024 e il rapporto scende, da 1,145 a 1,100, quando passa da 768 a 1.600. È il costo introdotto nel Capitolo 9 e trasformato in prezzo dal Capitolo 16.
Memoria: cosa deve davvero starci
Link alla sezione: Memoria: cosa deve davvero starciIl compute decide quanto dura una run; la memoria decide se può partire. Addestra con AdamW fp32 semplice e ogni parametro porta quattro numeri: il peso, il suo gradiente, e la media mobile e la varianza di Adam — le due medie costruite a mano nel Capitolo 6. Quattro numeri a quattro byte ciascuno fanno 16 byte per parametro, prima di una singola activation. Misurato su una GPU da laptop da 8 GB, prendendo l’allocazione residente nel punto dello step in cui nessun grafo è vivo:
| modello | vocabolario | batch | prevista | residente misurata | picco in uno step | differenza | |
|---|---|---|---|---|---|---|---|
| 512, 8 layer | 50.257 | 8 | 51.045.888 | 779 MB | 801 MB | 2.500 MB | 1.699 MB |
| 512, 8 layer | 4.096 | 8 | 27.411.456 | 418 MB | 426 MB | 1.043 MB | 617 MB |
| 256, 6 layer | 4.096 | 8 | 5.839.360 | 89 MB | 89 MB | 382 MB | 293 MB |
| 256, 6 layer | 4.096 | 32 | 5.839.360 | 89 MB | 89 MB | 1.259 MB | 1.170 MB |
| 256, 6 layer | 4.096 | 128 | 5.839.360 | 89 MB | 89 MB | 4.771 MB | 4.681 MB |
Previsione e misura concordano entro il 3%. La sorpresa è l’ultima colonna: le activations fanno impallidire il modello. Lo stesso modello da 5,8 milioni di parametri che richiede 89 MB di stato persistente richiede 4.681 MB di activations con un batch di 128 — cinquantadue volte il modello — e gran parte di questo non è affatto il transformer. Sono i logits, un vettore della dimensione del vocabolario per token a quattro byte per elemento: 512 MB nell’ultima riga, 393 MB nella prima. La dimensione del vocabolario è stata scelta nel Capitolo 7, e sta ancora decidendo cosa entra nella scheda.
Quale termine domina dipende dalla forma della run, motivo per cui Micikevicius et al. dicono che la memoria «è dominata dalle activations»3 mentre ZeRO dice che un modello da 1,5 miliardi di parametri richiede «almeno 24 GB» solo di stati del modello.4 ZeRO arriva agli stessi 16 byte per un’altra via — per i pesi fp16, per i gradienti fp16, ciascuno per i pesi master fp32 e i due momenti di Adam — che per 70 miliardi di parametri sono 1,12 terabyte, l’equivalente di quattordici GPU da 80 GB prima di una singola activation.
Parallelismo, in un paragrafo e una delega
Link alla sezione: Parallelismo, in un paragrafo e una delegaNiente di tutto questo entra su un solo dispositivo alla scala frontier, quindi la run viene divisa in quattro modi contemporaneamente. Data parallelism mette una copia del modello su ogni GPU e media i gradienti — l’impostazione predefinita, e quella che ZeRO migliora rifiutandosi di mantenere copie ridondanti dello stato dell’ottimizzatore. Tensor parallelism divide singole matrici tra dispositivi. Pipeline parallelism assegna a ogni dispositivo un gruppo contiguo di layer. Context parallelism divide la sequenza stessa, necessario solo quando è abbastanza lungo da far dominare il termine di attention. La Tabella 4 di Llama 3 elenca tutti e quattro insieme: tensor 8, context fino a 16, pipeline 16, data fino a 128, su 16.384 GPU H100.5 Questo è tutto ciò che questo corso dirà in merito; l’ingegneria del distributed training è un semestre a sé, e Stanford CS336 è quel semestre, lezioni 5–8, con il codice.6 Dalla delega sopravvive un solo numero, model FLOPs utilisation — la frazione dell’aritmetica di picco di una GPU che una run reale raggiunge — che trasforma il pulito in tempo di calendario e quindi in denaro.
Kaplan, e la scommessa fatta dall’industria
Link alla sezione: Kaplan, e la scommessa fatta dall’industriaNel gennaio 2020, Kaplan et al. addestrarono una griglia di transformers e scoprirono che la test loss segue una power law in ciascuna delle tre risorse su più di sei ordini di grandezza.1 La loro §1.2 dà tre leggi fittate:
con compagne per i dati e per il compute allocato in modo ottimale. Le costanti non sono universali, e il paper lo dice: «i valori numerici precisi di , e dipendono dalla dimensione del vocabolario e dalla tokenization e quindi non hanno un significato fondamentale».
Gli esponenti sono minuscoli: dieci volte i parametri comprano un fattore sulla loss residua. Sembra nulla, ed è il fatto più importante qui — i ritorni sono terribili e non finiscono mai. Una power law con un esponente piccolo promette che il prossimo ordine di grandezza aiuterà, meno del precedente, per sempre. Comprare compute smette di essere una scommessa e diventa un acquisto con un tasso di cambio pubblicato, esattamente l’argomento che ha sbloccato il capitale.
Poi arrivò la prescrizione, ed è qui che il paper sbagliò in un modo che costò all’industria moltissimo denaro. La Tabella 6 di Kaplan dà e : dieci volte il compute significa un modello 5,4 volte più grande alimentato con solo 1,9 volte più testo. L’abstract è esplicito: «l’addestramento ottimale in termini di compute efficiency implica addestrare modelli molto grandi su una quantità di dati relativamente modesta e fermarsi significativamente prima della convergenza». Il settore fece esattamente così: GPT-3 è 175 miliardi di parametri su 300 miliardi di token,7 Gopher 280 miliardi su 300 miliardi, Megatron-Turing NLG 530 miliardi su 270 miliardi.2 Da mezzo token a due token per parametro, ovunque.
Chinchilla, e cosa misurava lo sweep sopra
Link alla sezione: Chinchilla, e cosa misurava lo sweep sopraNel marzo 2022, Hoffmann et al. addestrarono oltre 400 modelli da 70 milioni a 16 miliardi di parametri e raggiunsero la conclusione opposta attraverso tre strade indipendenti.2 La loro Tabella 2 riporta l’esponente in come 0,50, 0,49 e 0,46, contro lo 0,73 di Kaplan. In parole semplici: dimensione del modello e dati di addestramento devono crescere nella stessa proporzione.
Il loro secondo approccio è quello riprodotto dallo sweep in cima a questo capitolo, a un milionesimo della scala: fissa un budget, addestra molte dimensioni esattamente a quel budget, traccia la loss finale contro la dimensione del modello.
| parametri | |||
|---|---|---|---|
| 98.624 | 5,3531 (171) | 4,8638 (542) | — |
| 150.320 | 5,4636 (74) | — | — |
| 194.208 | 5,5041 (44) | 4,8730 (140) | 4,4040 (442) |
| 295.808 | 5,5550 (19) | 4,9029 (60) | 4,3383 (190) |
| 665.280 | 5,7849 (3,8) | 5,1254 (12) | 4,4192 (38) |
| 1.280.768 | 5,8174 (1,0) | 5,1751 (3,2) | 4,5003 (10) |
| 3.101.568 | — | 5,4686 (0,5) | 4,7768 (1,7) |
| 5.315.072 | — | 5,5894 (0,2) | 4,8514 (0,6) |
| 15.053.568 | — | — | 5,3534 (0,1) |
Loss held-out in nats per token, token per parametro tra parentesi, grassetto per il modello migliore a ciascun budget; un trattino è un punto non eseguito, perché il budget richiedeva più testo di quanto il corpus contenesse o la dimensione cadeva fuori da quelle esplorate lì.
Leggi una colonna verso il basso: la loss scende, tocca il fondo e risale. Un modello può essere troppo grande per il suo budget esattamente con la stessa facilità con cui può essere troppo piccolo — a la penalità per scegliere 665.280 parametri invece di 295.808 è 0,08 nats, che sull’inviluppo fittato sopra è la loss che un modello dimensionato correttamente raggiunge con il 18% di compute in meno. Scegliere la forma sbagliata butta via un quinto del budget. È la Figura 3 di Chinchilla in un pomeriggio su una GPU invece che con quattrocento modelli.
Ora leggi in orizzontale. A il modello migliore è il più piccolo dello sweep; a è quello da 295.808 parametri, incorniciato da entrambi i lati. L’ottimo si sposta a destra al crescere del budget, che è tutto il contenuto della correzione. Fitta il terzo approccio del paper — la superficie su ogni run — e minimizza soggetto a :
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.730,46, da un laptop, contro lo 0,73 di Kaplan. L’accordo alla terza cifra da un fit su tre budget è fortuna; l’accordo alla prima no. L’esponente viaggia — la costante no, perché il rapporto token-parametro in questi ottimi è tra 170 e 540, non 20. Tre ragioni, tutte istruttive. fitta a zero perché con una loss sopra 4 nats la run non è nemmeno vicina al floor di entropia che domina il fit di Chinchilla. Batch size e learning rate sono stati fissati invece che ottimizzati per punto, cosa che penalizza le run che ricevono meno step — e quelle sono i modelli grandi: a FLOP un modello da 1,28 milioni di parametri riceve 159 step di ottimizzatore in totale, molto sotto le poche migliaia che il termine di Kaplan dice siano necessarie a qualunque modello. Una scaling law viene fittata dentro un regime, e questa sta sei ordini di grandezza sotto Chinchilla.
Da qui l’abstract del paper: «gli attuali large language models sono significativamente undertrained». Chinchilla è la dimostrazione — 70 miliardi di parametri su 1,4 trilioni di token, lo stesso compute totale di Gopher da 280 miliardi su 300 miliardi, battendolo in 51 task MMLU su 57, 67,5% contro 60%.2 Quattro volte più piccolo, quattro volte e mezzo più testo, stesso denaro, modello migliore.
Due avvertenze su quel famoso rapporto. «Venti token per parametro» non è una frase del paper, che dice solo che «per ogni raddoppio della dimensione del modello anche il numero di token di addestramento dovrebbe raddoppiare»; il 20 è un’inferenza dalla Tabella 3 e dal Chinchilla stesso, 70 B su 1,4 T. E la sua precisione è peggiore di quella pubblicata: Besiroglu et al. hanno rifittato da una digitalizzazione della Figura 4, hanno trovato che i parametri originali «fittano male i dati ricostruiti» con intervalli «implausibilmente stretti dato il numero di punti dati», e hanno posto l’intervallo onesto tra «4 e 40» token per parametro.8
Un dettaglio del metodo di Chinchilla salda una promessa fatta dal Capitolo 1 sui learning-rate schedules. La schedule coseno deve essere abbinata al budget di token. Un modello che vedrà 10 milioni di token deve far decadere il suo learning rate a zero a 10 milioni di token; dagli una schedule dimensionata per 100 milioni, fermalo presto, e stai leggendo una loss a metà discesa con un rate troppo alto. Chinchilla addestra ogni modello a quattro lunghezze di ciclo per controllare esattamente questo; lo sweep sopra imposta la sua schedule dal budget per la stessa ragione.
Cosa non promettono le scaling laws
Link alla sezione: Cosa non promettono le scaling lawsSono il risultato empirico più utile del campo e vengono regolarmente sopravendute. Quattro limiti.
Predicono la loss, non la capacità. Il lato sinistro è la cross-entropy su testo held-out. Nulla in questi paper autorizza un’affermazione sul fatto che un modello scriverà SQL corretto, rifiuterà una richiesta dannosa o userà un tool. È di nuovo la lezione del Capitolo 5: una predizione della loss non è una predizione del comportamento per cui stai pagando.
Sono fittate, non derivate. Nessuna teoria produce . Le costanti si spostano con il tokenizer — ed è per questo che un confronto di perplexity tra due tokenizer non ha senso, come spiegava il Capitolo 8 — e con il mix di dati, l’architettura e l’ottimizzatore. Ogni legge pubblicata è una legge del setup che l’ha prodotta, motivo per cui Meta ha rifittato la propria prima di Llama 3.5
Assumono un token fresco per ogni step, il che assume silenziosamente un corpus infinito. Muennighoff et al. hanno misurato cosa succede quando finisce: fino a quattro epoch di dati ripetuti costano quasi nulla — un modello da 8,7 miliardi di parametri su 44 miliardi di token unici visti quattro volte ha finito con una «validation loss solo dello 0,5% più alta» dello stesso modello su 178 miliardi di token unici — mentre oltre circa sedici epoch il compute aggiuntivo non compra più nulla.9
E nessuno addestra più in modo compute-optimal. Chinchilla minimizza il costo di addestramento; un modello distribuito poi paga circa FLOP per token generato, per sempre. LLaMA 1 lo disse chiaramente: «dato un livello target di performance, il modello preferito non è quello più veloce da addestrare ma quello più veloce in inference».10 Sardana et al. lo formalizzarono minimizzando invece , e scoprirono che chiunque si aspetti un miliardo di richieste dovrebbe addestrare «più piccolo e più a lungo del Chinchilla-optimal».11 La §9.1 di Llama 3 concorda: i suoi modelli piccoli vengono addestrati «ben oltre il punto di training compute optimal, scambiando di fatto training compute per efficienza in inference».5 Il rapporto non è obsoleto; risponde a una domanda che non è più quella che si sta ponendo.
Abilità emergenti, e la discussione sul fatto che siano reali
Link alla sezione: Abilità emergenti, e la discussione sul fatto che siano realiLa loss scende in modo liscio. Gli score dei benchmark a volte no. Wei et al. hanno raccolto casi in cui un task resta al livello del caso su ordini di grandezza di training compute e poi salta — l’aritmetica a tre cifre che compare in GPT-3 a circa FLOP, MMLU che sale sopra l’indovinare tra 3 e — e hanno dato un nome al pattern: «un’abilità è emergente se non è presente nei modelli più piccoli ma è presente nei modelli più grandi».12 Se è una proprietà reale, estrapolare da esperimenti economici non è sicuro, perché la capacità che stai comprando potrebbe non esistere a nessuna scala che puoi permetterti di testare.
Schaeffer, Miranda e Koyejo hanno sostenuto che per lo più è un artefatto della misura, e il meccanismo è aritmetico.13 La loss per-token scende in modo liscio, quindi la probabilità che un token sia giusto, , migliora gradualmente. Valuta il modello con exact string match su una risposta di token e porti quella probabilità alla potenza — una curva liscia elevata a una grande potenza sembra una scogliera. Sostituisci una metrica che conta i token invece di pretendere che siano tutti corretti, sugli stessi output, e «la performance della famiglia migliora in modo liscio, continuo e prevedibile con l’aumentare della scala».
Il loro audit è il numero da ricordare — «delle 39 metriche preferite in BIG-Bench, al massimo 5 mostrano emergence», con due metriche discontinue responsabili di oltre il 92% dei casi dichiarati — e lo è anche la loro cautela: «nulla in questo paper dovrebbe essere interpretato come un’affermazione che i large language models non possano mostrare abilità emergenti». Un salto in un grafico è evidenza sulla metrica finché non si dimostra il contrario. Il Capitolo 29 è dove questo diventa un tuo problema, perché scegliere una metrica a cutoff rigido è una decisione che prenderai senza accorgertene.
Da dove vengono i dati
Link alla sezione: Da dove vengono i datiIl corpus è la parte di una run di pretraining a cui non è attaccata nessuna equazione, e dove vivono la maggior parte delle decisioni consequenziali. La materia prima è un web crawl: l’archivio di agosto 2026 di Common Crawl contiene «2,14 miliardi di pagine web o 360 TiB di contenuto non compresso», un mese, scaricabile gratis.14 Quasi nulla è utilizzabile così com’è. Il paper T5 dice che il crawl «comprende in gran parte testo senza senso o boiler-plate come menu, messaggi di errore o testo duplicato», e la pipeline C4 che introdusse è una lista di euristiche grossolane — tieni solo le righe che finiscono con punteggiatura terminale, elimina le pagine con meno di tre frasi, elimina qualunque pagina contenente una parentesi graffa o una parola da una lista pubblica di oscenità — trasformando venti terabyte di testo mensile in circa 750 GB.15
Grossolane è la parola. Dodge et al. hanno auditato ciò che quei filtri rimuovono e hanno scoperto che la blocklist di oscenità elimina il 42% dei documenti in African-American English e il 32% in English allineato all’ispanico, contro il 6,2% dell’English allineato ai bianchi, lasciando un corpus al 97,8% dell’ultima categoria.16 Una regola senza opinioni sul dialetto ne aveva una.
Poi deduplication, che non è pulizia: Lee et al. hanno trovato una frase di 61 parole ripetuta 61.036 volte in C4, e hanno mostrato che deduplicare riduce di dieci volte il tasso con cui i modelli «emettono testo memorizzato», dall’1,9% dei token generati allo 0,19%.17 Di più non è meglio, però: il team di FineWeb ha deduplicato globalmente su 96 crawl, ottenuto 4 trilioni di token e nessun guadagno misurabile, poi deduplicato ogni crawl separatamente, ottenuto 20 trilioni, e pareggiato il miglior corpus esistente.18
Poi contamination. Llama 3 ha misurato la propria e l’ha pubblicata: il 98% di AGIEval, il 95% di BIG-Bench Hard e l’85% di HellaSwag sovrapposti al training set per 8-grammi, e per MMLU una sovrapposizione così alta che «è impossibile ottenere una buona stima del guadagno di performance».5 La §4 di GPT-3 riporta un bug di filtraggio che lasciò benchmark nei dati senza possibilità di tornare indietro: «per considerazioni di costo era irrealizzabile riaddestrare il modello».7
La provenance è la parte irrisolta. The Pile includeva un componente da 100,96 GiB chiamato Books3 — 12% del corpus e, secondo la tabella dei consensi del paper stesso, libri da un tracker torrent privato;19 è stato portato offline nell’agosto 2023 dopo un reclamo di copyright. La posizione legale a settembre 2026 è instabile, e le tre sentenze USA citate come tendenza sono in disaccordo tra loro. Alsup ha ritenuto il training su libri acquisiti legalmente «estremamente trasformativo» pur sostenendo che una biblioteca costruita da copie piratate non lo fosse, e Anthropic ha transato quella metà per $1,5 miliardi coprendo 482.460 opere, circa $3.000 ciascuna, approvato il 20 luglio 2026.20 Chhabria ha concesso a Meta il summary judgment scrivendo però che la sua decisione «non sostiene la proposizione che l’uso da parte di Meta di materiali protetti da copyright per addestrare i suoi language models sia lecito», solo che «questi querelanti hanno avanzato gli argomenti sbagliati».21 Bibas, decidendo contro Ross Intelligence, ha notato che «oggi davanti a me c’è solo AI non-generative».22 Nessuna corte d’appello USA si è pronunciata sulla questione.
Le persone fanno le parti che la loss non può fare. TIME ha riportato nel gennaio 2023 che lavoratori che etichettavano testo tossico per OpenAI tramite la società Sama portavano a casa «tra circa $1,32 e $2 all’ora» leggendo passaggi che descrivevano abuso sessuale di minori, tortura e autolesionismo, mentre OpenAI pagava Sama $12,50 all’ora per il lavoro; Sama contesta sia l’intervallo di paga sia la quota.23 È il filtraggio intorno al pretraining, non il pretraining stesso — ma sta sulla stessa fattura, ed è lì che siede una persona.
L’elettricità è reale e di solito citata male. Il dato pubblicato più attento è quello di BLOOM: 1.082.990 GPU-ore, 433 MWh e 24,7 tonnellate di CO₂ equivalente per la run, 50,5 contando produzione e nodi idle;24 Patterson et al. stimano GPT-3 a 1.287 MWh e 552 tonnellate.25 Due cautele. Il vantaggio di BLOOM è la rete nucleare francese a 57 g CO₂ per kWh, non l’efficienza — ha usato più energia di OPT-175B. E la cifra di emissioni più citata del settore, le 626.155 lb di Strubell et al. per una neural architecture search, è stata poi mostrata come 88 volte troppo alta, avendo assunto che la search fosse eseguita alla dimensione piena del modello quando invece girava su un proxy.26 Il framing di LBNL è quello difendibile: i data centre statunitensi hanno usato 192 TWh nel 2024, il 4,7% dell’elettricità nazionale — un numero attaccato a un’industria, non a una singola run.27
Il filo conduttore è ciò che Bender et al. hanno chiamato documentation debt: «metterci in una situazione in cui i dataset sono sia non documentati sia troppo grandi per essere documentati post hoc».28 Ogni fatto sopra esiste perché qualcuno ha guardato. Per i corpora dietro i modelli che la maggior parte delle persone usa, nessuno può farlo.
Quanto costa davvero
Link alla sezione: Quanto costa davveroOra l’aritmetica che tutti vogliono, da quattro input citati, così quando invecchieranno sarà ovvio cosa sostituire.
Throughput di picco
Link alla sezione: Throughput di piccoLa pagina H100 di NVIDIA elenca 1.979 teraFLOPS di throughput BF16 tensor-core sotto una nota che dice «with sparsity».29 Nessuna run di pretraining usa sparsity strutturata, quindi il valore dense è la metà: 989,5 TFLOP/s.
Utilisation
Link alla sezione: UtilisationLa Tabella 4 di Llama 3 riporta una model FLOPs utilisation BF16 del 38–43%. Prendi 40%: 395,8 TFLOP/s di aritmetica utile per GPU.5
Il prezzo on-demand di Lambda per un nodo 8×H100 SXM, consultato il 2026-09-06: $3,99 per GPU-ora, quindi $31,92 all’ora per il nodo.30
Il rapporto di Chinchilla, , dà e quindi .
| budget | H100-ore | FLOP | parametri compute-optimal | token | su un nodo 8×H100 | GPU per finire in 90 giorni |
|---|---|---|---|---|---|---|
| $100 | 25 | 3.6e19 | 546 M | 10,9 B | 3,1 h | 1 |
| $1.000 | 251 | 3.6e20 | 1,73 B | 34,5 B | 31,3 h | 1 |
| $10.000 | 2.506 | 3.6e21 | 5,46 B | 109 B | 13 giorni | 2 |
| $100.000 | 25.063 | 3.6e22 | 17,3 B | 345 B | 131 giorni | 12 |
| $1.000.000 | 250.627 | 3.6e23 | 54,6 B | 1,09 T | 4 anni | 116 |
| $10.000.000 | 2.506.266 | 3.6e24 | 173 B | 3,45 T | 36 anni | 1.160 |
| $100.000.000 | 25.062.657 | 3.6e25 | 546 B | 10,9 T | 358 anni | 11.603 |
Leggi insieme le ultime due colonne. Con $10.000 ottieni un modello da 5 miliardi di parametri su un nodo affittato in due settimane. A $100.000.000 l’aritmetica dice 546 miliardi di parametri — e dodicimila H100 cablate insieme per tre mesi, cosa che non affitti con una carta di credito. Oltre circa $100.000 il vincolo stringente smette di essere il denaro e diventa il cluster.
Prima di fidarti di una tabella così, testala contro run il cui costo reale è pubblicato — llm.c riproduce GPT-2 124M in «~90 minuti» su un nodo 8×A100 «per circa $20», e GPT-2 1.6B in 24 ore su un nodo 8×H100 per $672.31
$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.86Entrambi entro circa il 15%, che è più o meno l’accuratezza che questo tipo di stima merita e considerevolmente migliore dell’accuratezza con cui viene di solito citata.
Il confronto da titolo, con entrambe le definizioni sul tavolo
Link alla sezione: Il confronto da titolo, con entrambe le definizioni sul tavoloLa cifra più ripetuta in questo argomento è che un modello di classe GPT-2 costato circa $43.000 nel 2019 può essere riprodotto oggi per poche decine di dollari. La metà moderna è ben documentata; quella storica no.
Oggi. Il README di nanochat di Karpathy: «puoi addestrare il tuo LLM con capacità GPT-2 ... per soli $48 (~2 ore di nodo GPU 8XH100) ... Su un’istanza spot, il costo totale può avvicinarsi a ~$15».32 «Capacità GPT-2» qui è preciso e pubblicato — battere il CORE score di GPT-2 pari a 0,256525 — su una leaderboard il cui miglior risultato al 14 marzo 2026 è 1,65 ore. I $48 assumono $3 per GPU-ora, sotto il listino Lambda di $3,99; a listino sono più vicini a $64.
Nel 2019. Non c’è una fonte primaria: OpenAI non ha mai pubblicato una durata o un costo. La catena passa da The Register, febbraio 2019, che riporta «256 Google TPU3 cores» senza prezzo e senza durata; poi Synced, giugno 2019, che nota che l’hardware costava $256 l’ora su Google Cloud e afferma esplicitamente che «OpenAI non ha specificato la durata dell’addestramento». $43.008 è $256 l’ora moltiplicato per 168 ore assunte che nessuno ha mai documentato.
Quindi il titolo onesto è: un modello che eguaglia lo score benchmark pubblicato di GPT-2 può essere addestrato oggi per ben meno di $100 su hardware affittato, contro un costo 2019 che non è mai stato pubblicato e la cui famosa stima poggia su un’ipotesi senza fonte sulla durata. Il crollo è reale e la metà moderna è riproducibile da chiunque abbia una carta di credito; il rapporto è aritmetica su un numero che non esiste. Questo è lo stato dei costi di training pubblicati in generale. Il paper GPT-3 non contiene alcun importo in dollari, solo FLOP nella Tabella D.1;7 nemmeno il paper Llama 3 ne contiene.5 Ogni costo di training che hai letto è una stima da un conteggio FLOP, un’ipotesi hardware e un’ipotesi di prezzo — vale sempre la pena chiedere di chi.
Cosa sa un modello base, e quando ha smesso di saperlo
Link alla sezione: Cosa sa un modello base, e quando ha smesso di saperloCiò che esce ha visto un corpus fisso assemblato in un momento fisso, e ne seguono due proprietà.
La prima è il knowledge cutoff. Dopo la data di raccolta il modello non sa nulla — non «è incerto», nulla — e confabulerà fluentemente invece di dirlo, perché dirlo non è mai stato un comportamento su cui è stato addestrato. La model card di Llama 3.1 indica dicembre 2023;33 ogni modello ne ha uno, ed è una proprietà dei dati di training, non del deployment. Aggirarlo è un problema di retrieval, che è il Capitolo 19.
La seconda è che un modello base completa invece di rispondere. Dagli «Qual è la capitale della Francia?» e una continuazione plausibile è un’altra domanda, perché nel corpus quella stringa compare più spesso in una lista di esercizi.
Dove si va dopo
Link alla sezione: Dove si va dopoUn completatore di testo non è un assistente. Non segue istruzioni, perché nulla nel corpus gli ha detto che una richiesta debba essere obbedita invece che continuata. Non ha nozione di una conversazione con due partecipanti. Produrrà volentieri la continuazione più probabile di un prompt dannoso, perché probabile è l’unica cosa per cui sia mai stato ottimizzato.
Trasformarlo in qualcosa che risponde richiede una seconda fase che costa una frazione di punto percentuale della prima, e consiste quasi interamente nel mostrargli esempi del comportamento desiderato e poi confrontare coppie dei suoi stessi output. Quella fase è da dove arrivano instruction following, chat templates, rifiuti e — cosa che sorprende molti — la capacità di chiamare un tool. Il Capitolo 11 è quella fase: supervised fine-tuning, RLHF, DPO e GRPO, e la domanda su cosa significhi «aligned» e chi lo decida.
Fonti e metodo
Link alla sezione: Fonti e metodoVale anche la pena leggere insieme a questo capitolo build-nanogpt di Karpathy e il video che lo accompagna, che percorrono una riproduzione completa di GPT-2 end to end a un ritmo che questo capitolo non può sostenere; e Stanford CS324, Large Language Models, le cui lezioni sui dati e sull’impatto ambientale vanno più a fondo della sezione sopra in materiale che questo corso tratta una volta e poi delega.
Riferimenti
Link alla sezione: Riferimenti-
Kaplan, J., McCandlish, S., Henighan, T., Brown, T. B., Chess, B., Child, R., Gray, S., Radford, A., Wu, J. and Amodei, D. Scaling Laws for Neural Language Models. arXiv:2001.08361 (2020). Le tre power laws sono le Eq. (1.1)–(1.3) in §1.2 e le costanti complete sono nell’Appendice A, Tabella 5; la derivazione è in §2.1; gli esponenti di allocazione del compute sono nella Tabella 6. Nota che ci sono due leggi del compute, a batch size fisso e a batch size ottimale; il paper dice che quest’ultima «dovrebbe essere usata per fare predizioni». ↩ ↩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). Esponenti nella Tabella 2, budget proiettati nella Tabella 3, confronto con Gopher in §4, convenzione di conteggio dei parametri nell’Appendice F. La prosa sotto la Tabella 3 contraddice la Tabella 3 stessa per le righe 175 B e 280 B; la tabella è la versione da citare. ↩ ↩2 ↩3 ↩4
-
Micikevicius, P., Narang, S., Alben, J., Diamos, G., Elsen, E., Garcia, D. et al. Mixed Precision Training. arXiv:1710.03740 (2017), ICLR 2018. Pesi master FP32 in §3.1, loss scaling in §3.2. ↩ ↩2
-
Rajbhandari, S., Rajbhandari, S., Ruwase, O. and He, Y. ZeRO: Memory Optimizations Toward Training Trillion Parameter Models. arXiv:1910.02054 (2019), SC20. La contabilità è in §3.1; le cifre di stato residuo per le activations sono in §3.2. ↩
-
Grattafiori, A. et al. (Llama Team, AI @ Meta). The Llama 3 Herd of Models. arXiv:2407.21783 (2024). Budget di compute e conteggio token in §1, scaling law rifittata in §3.2.1, configurazione di parallelismo e MFU nella Tabella 4, analisi di contamination in §5.1.4, dichiarazione di over-training in §9.1. Il paper non contiene cifre in dollari né una tabella delle emissioni. ↩ ↩2 ↩3 ↩4 ↩5 ↩6
-
Stanford CS336, Language Modeling from Scratch. La lezione 2 copre la contabilità delle risorse, le lezioni 5–8 GPU, kernels e parallelismo, le lezioni 9 e 11 scaling, le lezioni 13–14 dati. È il corso a cui questo capitolo delega la propria ingegneria, ed è pubblico. ↩
-
Brown, T. B. et al. Language Models are Few-Shot Learners. arXiv:2005.14165 (2020). Compute nell’Appendice D, Tabella D.1 — che ha una colonna intitolata letteralmente «flops per param per token», il cui valore per ogni riga GPT-3 è 6. Analisi di contamination in §4. ↩ ↩2 ↩3
-
Besiroglu, T., Erdil, E., Barnett, M. and You, J. Chinchilla Scaling: A replication attempt. arXiv:2404.10102 (2024). Ricostruisce i dati di Chinchilla digitalizzando la sua Figura 4, rifitta e riporta gli esponenti corretti e intervalli molto più ampi. ↩
-
Muennighoff, N., Rush, A. M., Barak, B., Le Scao, T., Piktus, A., Tazi, N., Pyysalo, S., Wolf, T. and Raffel, C. Scaling Data-Constrained Language Models. arXiv:2305.16264 (2023), NeurIPS 2023. Il risultato sui quattro epoch è in §6; la half-life a sedici epoch è il fittato. ↩
-
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). La §1 espone l’argomento del costo di inference contro il training Chinchilla-optimal. ↩
-
Sardana, N., Portes, J., Doubov, S. and Frankle, J. Beyond Chinchilla-Optimal: Accounting for Inference in Language Model Scaling Laws. arXiv:2401.00448 (2023), ICML 2024. La loro §5 contiene anche il contrappeso: i modelli addestrati a rapporti token estremi continuano a migliorare, ma «più lentamente di quanto predicano le scaling laws». ↩
-
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. Definizione in §2, esempi e soglie di compute in §3–4 e Tabella 1. ↩
-
Schaeffer, R., Miranda, B. and Koyejo, S. Are Emergent Abilities of Large Language Models a Mirage? arXiv:2304.15004 (2023), NeurIPS 2023 outstanding paper. L’argomento sulle metriche è in §2, la meta-analisi BIG-Bench in §4, l’esempio vision costruito in §5. ↩
-
Common Crawl, August 2026 Crawl Archive Now Available (CC-MAIN-2026-34), pubblicato il 24 agosto 2026, consultato il 2026-09-06. La sua home page dichiara «over 300 billion pages spanning 15 years», «totalling more than 10 petabytes» — una cifra per l’intero archivio, non per il crawl mensile prezzato qui. ↩
-
Raffel, C., Shazeer, N., Roberts, A., Lee, K., Narang, S., Matena, M., Zhou, Y., Li, W. and Liu, P. J. Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer. arXiv:1910.10683 (2019), JMLR 21(140). I filtri C4 sono in §2.2. Il paper dà dimensioni in byte, non in token; la cifra di 156 miliardi di token ampiamente attribuita a esso viene da Dodge et al. sotto. ↩
-
Dodge, J., Sap, M., Marasović, A., Agnew, W., Ilharco, G., Groeneveld, D., Mitchell, M. and Gardner, M. Documenting Large Webtext Corpora: A Case Study on the Colossal Clean Crawled Corpus. arXiv:2104.08758 (2021), EMNLP 2021. I tassi di rimozione per dialetto sono in §5.3; la contamination dei benchmark in C4 è in §4.2. ↩
-
Lee, K., Ippolito, D., Nystrom, A., Zhang, C., Eck, D., Callison-Burch, C. and Carlini, N. Deduplicating Training Data Makes Language Models Better. arXiv:2107.06499 (2021), ACL 2022. Le 61.036 ripetizioni sono nella nota 1; le cifre di memorizzazione sono in §6.2, Tabella 4, e sono percentuali di token generati sotto un criterio exact-match di 50 token. ↩
-
Penedo, G., Kydlíček, H., Ben Allal, L., Lozhkov, A., Mitchell, M., Raffel, C., Von Werra, L. and Wolf, T. The FineWeb Datasets: Decanting the Web for the Finest Text Data at Scale. arXiv:2406.17557 (2024), NeurIPS 2024 Datasets and Benchmarks. Il risultato di deduplication è in §3.4. Il dataset rilasciato da allora è cresciuto oltre i 15 trilioni di token del paper. ↩
-
Gao, L., Biderman, S., Black, S. et al. The Pile: An 800GB Dataset of Diverse Text for Language Modeling. arXiv:2101.00027 (2020). Books3 è in §2.3 e Tabella 1; la tabella dei consensi è la Tabella 5. Il corpus è 825,18 GiB, quindi perfino il titolo arrotonda per difetto. ↩
-
Bartz v. Anthropic, No. 4:24-cv-05417 (N.D. Cal.). Ordinanza sul fair use 23 giugno 2025 (Dkt. 231); certificazione della class 17 luglio 2025; approvazione finale e sentenza 20 luglio 2026 (Dkt. 680). La transazione libera solo input passati, non output e non condotte future. ↩
-
Kadrey v. Meta, No. 3:23-cv-03417-VC (N.D. Cal.), summary judgment 25 giugno 2025 (Dkt. 598). Nota che la rivendicazione di distribuzione via torrenting non è stata decisa e resta pendente. ↩
-
Thomson Reuters v. ROSS Intelligence, No. 1:20-cv-00613-SB (D. Del.), opinione rivista 11 febbraio 2025 (Dkt. 770), Bibas J. In interlocutory appeal al Third Circuit (No. 25-2153), discusso l’11 giugno 2026, non deciso al momento della scrittura. ↩
-
Perrigo, B. Exclusive: OpenAI Used Kenyan Workers on Less Than $2 Per Hour to Make ChatGPT Less Toxic. TIME, 18 gennaio 2023. I $2 sono un tetto per senior reviewers che raggiungevano ogni target; i junior labellers, la maggioranza, portavano a casa $1,32. La replica di Sama, citata nello stesso articolo, dà $1,46–$3,74 e una quota più bassa. ↩
-
Luccioni, A. S., Viguier, S. and Ligozat, A.-L. Estimating the Carbon Footprint of BLOOM, a 176B Parameter Language Model. arXiv:2211.02001 (2022), JMLR 24(253). Tabelle 1 e 3. ↩
-
Patterson, D., Gonzalez, J., Le, Q., Liang, C., Munguia, L.-M., Rothchild, D., So, D., Texier, M. and Dean, J. Carbon Emissions and Large Neural Network Training. arXiv:2104.10350 (2021). Le cifre di GPT-3 sono nella Tabella 4; la correzione della stima NAS è in §4.1. ↩
-
Strubell, E., Ganesh, A. and McCallum, A. Energy and Policy Considerations for Deep Learning in NLP. arXiv:1906.02243 (2019), ACL 2019. Vale la pena leggerlo proprio per ciò che è successo al suo numero più citato: il paper è attento, dichiara la propria estrapolazione, ed era comunque sbagliato di due ordini di grandezza sull’unica riga che tutti hanno ripetuto. ↩
-
Smith, S. J., Hubbard, A., Newkirk, A., Ganeshalingam, M., Holecek, B., Sartor, D., Mills, M. and Shehabi, A. United States Data Center Energy Usage Report: 2025 Update. LBNL-2001758 (18 giugno 2026). Questo rivede al ribasso il rapporto 2024 ampiamente citato per la serie storica; se stai citando la cifra 176 TWh per il 2023, stai citando l’edizione superata. ↩
-
Bender, E. M., Gebru, T., McMillan-Major, A. and Shmitchell, S. On the Dangers of Stochastic Parrots: Can Language Models Be Too Big? FAccT '21, pp. 610–623. DOI 10.1145/3442188.3445922. «Documentation debt» è in §4.4. Nota che le cifre carboniche del paper stesso sono citate da Strubell et al. ed ereditano la correzione sopra — il che è un’illustrazione del suo argomento più che una confutazione. ↩
-
NVIDIA. Pagina prodotto NVIDIA H100 Tensor Core GPU,
nvidia.com/en-us/data-center/h100/(consultata il 2026-09-06). Ogni riga tensor-core di quella pagina tranne FP64 porta la nota «with sparsity»; il valore dense BF16 usato qui è metà dei 1.979 TFLOPS pubblicati. ↩ -
Lambda. GPU Cloud pricing,
lambda.ai/pricing(consultato il 2026-09-06). On-demand, per GPU all’ora, tasse escluse. I prezzi in questa sezione invecchieranno più in fretta di qualunque altra cosa in questo corso; l’aritmetica intorno a loro no. ↩ -
Karpathy, A.
karpathy/llm.c, discussione #481, Reproducing GPT-2 (124M) in llm.c in 90 minutes for $20 (28 maggio 2024), e discussione #677, Let's reproduce GPT-2 (1.6B): one 8XH100 node, 24 hours, $672, in llm.c (11 luglio 2024). ↩ -
Karpathy, A.
karpathy/nanochat, README e leaderboard «time to GPT-2» (consultati il 2026-09-06). La cifra $48 e la definizione tramite CORE-score di «GPT-2 capability» sono entrambe nel README; ilspeedrun.shdel repository stesso dice «approximately 1.5 hours», quindi tratta la cifra di due ore come arrotondata. ↩ -
Meta. Llama 3.1 model card,
models/llama3_1/MODEL_CARD.mdinmeta-llama/llama-models(consultato il 2026-09-06). Fonte delle 30,84 M H100-ore per il modello 405 B, del totale 39,3 M, della cifra location-based 11.390 tCO2eq e del data cutoff dicembre 2023. ↩