🧠 Fondamenti13 minuti di lettura

Pre-training: Come un LLM Legge Internet e Impara a Parlare

Da 300B a 15T token. Da $900 a $191M. Il pre-training è la fase dove un LLM legge tutto internet e impara a prevedere la prossima parola. Ecco come funziona.

AS

Alessandro Saiani

Human in the Loop

Pre-training: Come un LLM Legge Internet e Impara a Parlare

Prendi il telefono. Apri un messaggio e scrivi "oggi sono andato al". Il telefono ti suggerisce una parola: "supermercato", "mare", "lavoro". Non sa dove sei stato davvero. Ha solo imparato, da milioni di messaggi, quali parole tendono a seguire quelle che hai scritto.

Ecco: un LLM fa esattamente questo. Solo che lo fa con un vocabolario di 128.000 token, avendo letto trilioni di parole, su hardware da decine di milioni di dollari.

Il pre-training è la fase in cui succede tutto. Un modello parte da zero -- pesi casuali, nessuna conoscenza -- e legge testo. Tanto testo. Tutto il testo. Alla fine di questo processo, "sa" qualcosa. Ma cosa ha imparato esattamente, e come? Questo è l'articolo che te lo spiega.

Se hai letto i pezzi precedenti su tokenizzazione, BPE, Word2Vec e embeddings, hai già i mattoni. Ora vediamo come si costruisce la casa.


Next-Token Prediction: Il Gioco più Semplice del Mondo

Il task fondamentale del pre-training è disarmante nella sua semplicità: data una sequenza di token, prevedi il prossimo.

Input:  "I do not like green eggs and"
Target: "ham"

Il modello riceve "I do not like green eggs and" e deve assegnare la probabilità più alta possibile a "ham" tra le 128.000 opzioni del suo vocabolario. Se ci riesce, la loss è bassa. Se punta su "table", la loss è alta.

La cosa elegante è che in un singolo forward pass il modello predice tutti i token successivi della sequenza contemporaneamente, grazie alla causal mask -- una maschera che impedisce a ogni posizione di "sbirciare" i token futuri. Ogni token può guardare solo indietro.

Da questo gioco apparentemente banale -- indovina la prossima parola -- emerge tutto il resto: grammatica, logica, conoscenza fattuale, capacità di ragionamento, persino qualcosa che somiglia alla creatività. È il fenomeno più controintuitivo dell'AI moderna: comprimere internet in un predittore di token produce qualcosa che sembra capire.


Cosa Legge un LLM

Il "libro di testo" di un LLM è internet. Ma non tutto internet -- la maggior parte del web è spam, pagine duplicate, testo incomprensibile. Il lavoro di curazione dei dati è forse la parte meno glamour ma più critica dell'intero processo.

Le fonti

  • Common Crawl: snapshot del web, centinaia di terabyte di testo grezzo. La base di quasi tutti i dataset
  • Wikipedia: testo di altissima qualità, fattuale, strutturato. Spesso visto 2+ volte durante il training
  • Libri: collezioni di testi lunghi e coerenti
  • Codice sorgente: GitHub, StackOverflow. Llama 3 ha 4x più codice di Llama 2
  • Paper accademici: ArXiv, PubMed
  • Forum e Q&A: StackExchange, Reddit

Quanti dati, esattamente?

ModelloToken di trainingAnno
GPT-3300B2020
Llama 11.4T2023
Llama 315T2024
Llama 430T+2025

In cinque anni: 100x più dati. Non è un'evoluzione lineare, è una corsa.

La pulizia è tutto

Pipeline come FineWeb (Hugging Face, 15 trilioni di token da 96 snapshot di Common Crawl) e RefinedWeb (Falcon) rimuovono circa il 90% del web grezzo. La pipeline tipica: identificazione lingua, deduplicazione fuzzy con MinHash, filtri euristici, classificatori neurali per la qualità.

Il dato sporco non è solo inutile -- è dannoso. Un modello che vede troppo spam impara a generare spam.


Il Training Loop: Come Impara un Modello

Il meccanismo si ripete miliardi di volte. Quattro passaggi, sempre gli stessi.

per ogni batch di testo:
    1. Forward:   passa i token nel modello → ottieni probabilità
    2. Loss:      calcola quanto le probabilità sbagliano
    3. Backward:  calcola la direzione per migliorare (gradienti)
    4. Aggiorna:  modifica i pesi di un passo in quella direzione

Forward pass: i token di input attraversano il transformer layer dopo layer. Ogni layer applica attention e feed-forward, producendo un vettore di output per ogni posizione. L'ultimo layer proietta quei vettori sulle 128.000 dimensioni del vocabolario e applica una softmax per ottenere probabilità.

Loss: si calcola la cross-entropy tra le probabilità predette e i token reali (ne parliamo nella prossima sezione).

Backward pass: i gradienti fluiscono all'indietro attraverso tutta la rete. Ogni peso riceve un segnale: "spostati in questa direzione per ridurre l'errore".

Weight update: i pesi vengono aggiornati. Il learning rate -- quanto è grande ogni passo -- segue tipicamente un warm-up lineare breve seguito da un decadimento a coseno.

Questo loop gira per settimane. Mesi. Su migliaia di GPU in parallelo. Ogni volta che il modello vede un batch di testo, i suoi pesi cambiano di una quantità infinitesimale. Miliardi di aggiustamenti infinitesimali, sommati, producono un modello che "parla".


La Loss Come "Sorpresa"

La cross-entropy loss ha una formula intimidatoria, ma l'intuizione è semplice: misura quanto il modello è sorpreso dal token corretto.

L = -log(p)    dove p = probabilità assegnata al token giusto
  • Il modello assegna probabilità 0.99 al token giusto → loss = 0.01 (nessuna sorpresa)
  • Il modello assegna probabilità 0.5 → loss = 0.69 (incerto)
  • Il modello assegna probabilità 0.001 → loss = 6.9 (sorpresissimo)

Pensa a un giallo. Se l'assassino è il maggiordomo, non sei sorpreso -- loss bassa. Se l'assassino è il narratore stesso, sei spiazzato -- loss altissima.

L'obiettivo del training è ridurre la sorpresa media su tutto il dataset. Il modello impara a non sorprendersi più davanti a nessun testo di internet. E per non sorprendersi, deve aver catturato i pattern del linguaggio: grammatica, fatti, logica, stile.

Una cosa sottile: la loss non raggiunge mai zero. Il linguaggio naturale è intrinsecamente ambiguo -- dopo "il gatto si sedette sul" puoi avere "divano", "tappeto", "davanzale". Il modello perfetto assegnerebbe la distribuzione di probabilità corretta, non punterà tutto su una parola sola.


I Numeri che Fanno Girare la Testa

Parlare di pre-training senza parlare di costi sarebbe come descrivere una Formula 1 senza menzionare il motore.

Costi di training

ModelloCosto stimatoAnno
Transformer originale~$9002017
GPT-3 (175B)$4.6M2020
GPT-4$78-100M2023
Llama 3.1 405B$60-170M2024
Gemini Ultra~$191M2024

Da $900 a $191 milioni in sette anni. I costi si raddoppiano ogni ~8 mesi per i modelli frontier. La proiezione: modelli da oltre un miliardo di dollari entro il 2027.

Dove vanno i soldi? Hardware 47-67%, staff R&D 29-49%, energia 2-6%.

Hardware e tempo

Llama 3 è stato addestrato su 16.000 GPU H100 in simultanea per circa 100 giorni. Due cluster custom da 24K GPU ciascuno, 30.8 milioni di GPU-hours totali. L'efficienza era impressionante: 95% effective training time -- il modello stava effettivamente imparando il 95% del tempo, contro crash, restart e sincronizzazione che rubavano solo il 5%.

Energia

Il training di GPT-4 ha consumato circa 50 GWh di elettricità. Abbastanza per alimentare San Francisco per 3 giorni. O il consumo di 1.000 case americane per 5-6 anni. Non è un dettaglio: la disponibilità di energia è diventata un fattore limitante quanto il silicio.


Perché Decoder-Only Ha Vinto

Il Transformer originale del 2017 aveva due parti: un encoder (che legge l'input) e un decoder (che genera l'output). Oggi quasi tutti i grandi LLM -- GPT, Llama, Claude, Gemini -- usano solo il decoder.

Due motivi principali. Primo: la next-token prediction è esattamente ciò che il decoder fa. L'encoder serve per comprendere un input e produrre una rappresentazione -- utile per classificazione o traduzione, meno per la generazione libera. Il decoder genera token uno alla volta, guardando solo il passato. È il match perfetto col task di pre-training.

Secondo: semplicità. Niente encoder significa meno complessità, meno parametri da sincronizzare, pipeline di training più diretta. Dal 2018 (GPT-1) i decoder-only hanno dominato la generazione di testo, e la superiorità empirica ha chiuso il dibattito. BERT (encoder-only) resta dominante per gli embeddings, ma per generare testo il decoder regna.


Cosa il Pre-training NON Insegna

Questo è il punto che confonde di più. Un modello pre-trained non risponde alle domande. Completa il testo.

Se scrivi "Qual è la capitale della Francia?" a un modello base, non otterrai "Parigi". Otterrai qualcosa come: "Qual è la capitale della Francia? È un fatto noto a molti studenti di geografia che la risposta..." -- il modello sta completando il testo più probabile che seguirebbe quella frase su internet. Magari un paragrafo da un quiz scolastico.

Il pre-training ottimizza per continuation probability, non per instruction compliance. Il modello ha tutta la conoscenza -- sa che Parigi è la capitale -- ma non sa che deve rispondere. Non sa che sei un utente che fa una domanda. Pensa (per modo di dire) che stia leggendo un testo e debba continuare a scriverlo.

Per trasformare un completatore di testo in un assistente servono due fasi aggiuntive:

  • Supervised Fine-Tuning (SFT): il modello viene addestrato su migliaia di coppie (istruzione, risposta desiderata). Impara il formato domanda-risposta.
  • RLHF/DPO: il modello impara cosa è utile, sicuro e corretto attraverso feedback umano. Questo sarà il prossimo articolo della serie.

La cosa affascinante: le capacità che emergono dall'instruction tuning sono già latenti nel modello base. L'SFT non crea nuove abilità -- le sblocca. È come dare gli occhiali a qualcuno che vede perfettamente ma tiene gli occhi chiusi.


Phi-4: Quando i Dati Contano Più dei Parametri

La narrazione dominante fino al 2023 era "più grande è meglio". Poi è arrivata la serie Phi di Microsoft a ribaltare tutto.

Phi-4 ha 14 miliardi di parametri -- un modello "piccolo" per gli standard attuali. Eppure batte GPT-4o su benchmark STEM come GPQA (56.1 vs 50.6). Come è possibile?

La risposta sta nei dati. Il 40% del dataset di training di Phi-4 è sintetico -- generato da modelli più grandi con tecniche come seed curation, self-revision e multi-agent prompting. Un altro 30% è testo web riscritto e raffinato. Solo il restante 30% è testo "naturale" (codice, paper, libri).

I dati sintetici hanno un vantaggio strutturale per il pre-training: ogni token è, per definizione, predetto dai token precedenti in modo coerente. Meno rumore, più segnale. È come la differenza tra studiare da appunti ben organizzati e leggere a caso su internet.

Phi dimostra un principio che le scaling laws da sole non catturano: la qualità dei dati può compensare la quantità di parametri. Un modello 10x più piccolo con dati 10x migliori può vincere.

E ha un'implicazione pratica enorme: un modello più piccolo è enormemente più economico da servire. Il costo di training si paga una volta. Il costo di inference si paga per sempre.


Il Training Come Compressione

Un dettaglio che aiuta a capire cosa succede davvero durante il pre-training: è un atto di compressione.

Llama 3 ha letto 15 trilioni di token -- circa 30 terabyte di testo. Il modello finale da 70B parametri pesa circa 140 GB in FP16. È una compressione di circa 200:1.

Quei 70 miliardi di pesi non sono una copia compressa di internet. Sono i pattern statistici estratti da miliardi di frasi. Il modello non memorizza "Parigi è la capitale della Francia" come una riga in un database. Ha catturato il pattern per cui, in contesti che parlano di capitali europee, "Parigi" e "Francia" co-occorrono con altissima probabilità.

Questo spiega anche le allucinazioni: quando il modello non ha un pattern chiaro, interpola tra pattern simili. A volte il risultato è plausibile ma falso -- come un compressore lossy che ricostruisce un dettaglio che non c'era nell'originale.


Il Data Wall e "Peak Data"

A NeurIPS 2024, Ilya Sutskever -- co-fondatore di OpenAI e tra le menti dietro GPT -- ha detto una cosa che ha fatto rumore:

"Data is the fossil fuel of AI -- we've achieved Peak Data."

Il ragionamento: il compute cresce esponenzialmente (più GPU, più cluster, più soldi). Ma i dati no. "We have but one internet" -- abbiamo un solo internet. Il testo di qualità disponibile è finito, e ci stiamo avvicinando al limite.

Le regole di Chinchilla dicevano che per raddoppiare la dimensione del modello, serviva raddoppiare i dati. Ma Llama 3 è già addestrato a 10x oltre il rapporto ottimale di Chinchilla. Il modello migliora ancora con più dati, ma i rendimenti decrescono.

Le risposte possibili a questo muro sono tre:

  1. Dati sintetici: la strada di Phi-4. Generare dati di training con modelli esistenti. Funziona, ma c'è il rischio di "model collapse" -- il modello che impara dai propri errori
  2. Inference-time compute: la strada di o1. Invece di allenare più a lungo, pensare più a lungo a inference. Il chain-of-thought come alternativa allo scaling
  3. Agenti e interazione: modelli che raccolgono dati nuovi interagendo col mondo

Il pre-training come lo conosciamo non finirà domani. Ma Sutskever ha ragione su una cosa: la prossima frontiera non è "più dati". È dati migliori, usati in modo più intelligente.


Timeline dell'evoluzione del pre-training: da 300B token a 30T+ in cinque anni

Rendere il Training Più Efficiente

Non tutto il progresso viene dal "mettere più GPU". Alcune innovazioni rendono il training più efficiente a parità di hardware.

FlashAttention riscrive l'implementazione dell'attention per ridurre gli accessi alla memoria GPU. La versione 3 sfrutta asincronia e bassa precisione, con miglioramenti significativi nel throughput.

Sequence packing: invece di riempire di padding le sequenze corte (sprecando compute su token fittizi), si impacchettano più sequenze in una sola. Con FlashAttention 2, il throughput raddoppia sul dataset FLAN.

Curriculum learning: organizzare i dati dal semplice al complesso durante il training. Le metriche più efficaci per definire la "difficoltà" sono il compression ratio e la leggibilità del testo. Risultato: 18-45% in meno di step per raggiungere la stessa performance.

Mixed precision: usare formati a 16 bit (BF16) per la maggior parte delle operazioni, mantenendo FP32 per le parti critiche. Dimezza la memoria, accelera il calcolo. BF16 ha lo stesso range dinamico di FP32 -- il formato preferito sulle GPU moderne.

Queste ottimizzazioni non fanno titoli di giornale come "GPT-5 costa un miliardo". Ma sono la ragione per cui un Llama 3 è 3x più efficiente di Llama 2 a parità di hardware.


Cosa Significa per Chi Sviluppa

Se lavori con gli LLM, capire il pre-training cambia il modo in cui li usi.

Il modello non "sa" le cose -- ha pattern statistici. Quando Claude risponde correttamente a una domanda, non sta consultando un database. Sta generando il testo più probabile dato il contesto. Questo spiega perché funziona benissimo su argomenti ben rappresentati nel training e vacilla su nicchie oscure.

La qualità del tuo prompt è un problema di distribuzione. Il modello genera meglio quando il tuo prompt somiglia a testo che ha visto durante il pre-training. Un prompt strutturato come documentazione tecnica attiva pattern diversi da uno scritto come un messaggio WhatsApp. La temperatura e il top-p controllano quanto il modello si allontana dalle risposte più probabili.

Il knowledge cutoff è reale. Il modello conosce solo ciò che era nel dataset di training. Non impara dall'uso. Se ti serve conoscenza aggiornata, il RAG è l'unica strada senza fine-tuning.

I modelli piccoli con dati buoni possono bastare. Non sempre serve il modello più grande. Phi-4 con 14B parametri batte GPT-4o su task specifici. Per molti casi d'uso, un modello open source ben addestrato è più che sufficiente -- e costa una frazione dell'inference.

Il pre-training è la fase geologica dell'AI: lenta, costosa, fondamentale, fatta una volta sola. Produce il substrato su cui tutto il resto si costruisce. Nel prossimo articolo vedremo cosa succede dopo: come RLHF e DPO trasformano un completatore di testo in un assistente che risponde, rifiuta richieste pericolose, e cerca di essere utile.


Fonti