Intelligenza artificiale

Come funziona un LLM come ChatGPT? Spiegato in 3D

Seguite una frase reale attraverso un vero modello linguistico: suddivisione in token, vettori, attenzione, rete neurale, 24 strati e scelta della parola successiva. Ogni casella colorata è un numero effettivamente calcolato dal modello.

494 M
parametri nel modello mostrato
24
strati attraversati da ogni parola
896
numeri per descrivere un token
96,4 %
di certezza per «Nak(amoto)»
Visualizzazione interattiva

Una frase attraversa il modello

Scegliete una frase, poi avanzate capitolo per capitolo. Passate il mouse su un blocco per leggerne i valori; trascinate per ruotare, usate la rotellina o il pizzico per lo zoom.

Caricamento del modello…

Frase:

Trascinare per ruotare · rotellina o pizzico per lo zoom · frecce ← → della tastiera per cambiare capitolo

Che cos'è un LLM? Una macchina che indovina la parola successiva

ChatGPT, Gemini, Mistral o Llama sono degli LLM, Large Language Models (grandi modelli linguistici). Dietro le loro risposte lunghe diverse pagine, il meccanismo è di una semplicità sconcertante: il modello legge un testo e calcola, per ogni parola possibile, la probabilità che venga subito dopo. Ne sceglie una, la aggiunge al testo e ricomincia. Tutto il resto, la grammatica, i fatti, il ragionamento, emerge da questo unico compito ripetuto miliardi di volte durante l'addestramento.

La visualizzazione in cima a questa pagina non mostra uno schema di principio ma un vero modello: Qwen2.5-0.5B, un modello aperto pubblicato da Alibaba, con 494 milioni di parametri, mentre legge la frase « Le bitcoin a été créé par Satoshi » (« Il bitcoin è stato creato da Satoshi »). Ogni casella colorata della scena 3D è un valore realmente calcolato dal modello: in verde i numeri positivi, in arancione quelli negativi, in ciano e viola i pesi appresi. Passi il mouse su un blocco per leggerne il valore esatto.

Fase 1: suddividere la frase in token

Un modello non legge né lettere né parole, ma token: frammenti di testo presi da un dizionario fisso di circa 150.000 voci. Le parole frequenti hanno un proprio token, quelle rare vengono spezzate in frammenti. La nostra frase produce 7 token, tra cui « ·bitcoin » e « ·Satoshi » (il punto rappresenta lo spazio che precede la parola). « Eiffel », invece, diventa « ·E », « iff » ed « el », e il modello scriverà « Nakamoto » in due passaggi: prima « ·Nak », poi « amoto ».

Ogni token viene sostituito dal suo numero nel dizionario: « ·bitcoin » è il token n. 17.873. Da quel momento in poi il modello manipola soltanto numeri.

Fase 2: gli embedding, parole diventate vettori

Il numero funge da indirizzo in una grande tabella di 151.936 righe per 896 colonne, la tabella degli embedding. Ogni token vi recupera la propria riga: una lista di 896 numeri che riassume ciò che il modello ha imparato su di esso. Token di significato simile hanno vettori vicini. Questi 136 milioni di numeri non sono scritti a mano: sono stati regolati durante l'addestramento, come tutti gli altri pesi.

h^{(0)}_i=E\big[\mathrm{id}_i\big]\in\mathbb{R}^{896},\qquad E\in\mathbb{R}^{151\,936\times 896}

La nostra frase diventa così un blocco di 7 righe per 896 colonne. È questo blocco che attraverserà l'intero modello, arricchendosi a ogni livello: lo si chiama flusso residuo, la colonna luminosa della scena 3D.

Fase 3: l'attenzione, ovvero come le parole si guardano tra loro

Per capire « créé par Satoshi », ogni token deve poter andare a cercare informazioni negli altri. È il ruolo dell'attenzione, il meccanismo al cuore del transformer, l'architettura di quasi tutti gli LLM dal 2017. Ogni vettore viene prima normalizzato, poi moltiplicato per tre matrici di pesi per produrre tre nuovi vettori:

  • una query (Q): ciò che il token cerca;
  • una chiave (K): ciò che offre agli altri;
  • un valore (V): l'informazione che trasmetterà se viene scelto.

Ogni token confronta la propria query con le chiavi di tutti i token precedenti. Più il prodotto è grande, più « guarda » quel token, e ne ricava una combinazione dei valori ponderata da questi punteggi. Non può mai guardare i token successivi, il che conferisce alle tabelle di attenzione la loro forma triangolare. La posizione di ogni parola viene introdotta facendo ruotare i vettori di un angolo che dipende dalla loro posizione nella frase (la tecnica RoPE).

\operatorname{Attention}(Q,K,V)=\operatorname{softmax}\!\Big(\frac{QK^{\top}}{\sqrt{64}}+M\Big)\,V,\qquad M_{ij}=\begin{cases}0&\text{se } j\le i\\-\infty&\text{se } j>i\end{cases}

Il modello esegue questo calcolo 14 volte in parallelo, con 14 teste che imparano ciascuna a individuare qualcosa di diverso. Nel nostro esempio, al 3o livello, la testa n. 1 concentra l'87 % dell'attenzione di « ·Satoshi » su « ·par ». Si osserva anche un fenomeno ben noto ai ricercatori: in media, il 59 % dell'attenzione dell'ultimo token va al primissimo, « Le », che funge da punto di riposo quando non c'è nulla di utile da leggere.

Fase 4: l'MLP, la memoria del modello

Dopo l'attenzione, ogni token passa da solo in una rete MLP: il suo vettore di 896 numeri viene proiettato verso 4.864 dimensioni, filtrato da una funzione di attivazione (SwiGLU), poi riportato a 896. Queste matrici contengono quasi due terzi dei parametri del modello. Gli studi di interpretabilità suggeriscono che è in buona parte qui che sono memorizzate le associazioni apprese, come « Satoshi » verso « Nakamoto ».

\operatorname{MLP}(x)=\Big(\operatorname{SiLU}\big(xW_{\text{gate}}\big)\odot xW_{\text{up}}\Big)\,W_{\text{down}},\qquad\operatorname{SiLU}(u)=\frac{u}{1+e^{-u}}

Il risultato dell'attenzione, così come quello dell'MLP, non sovrascrive mai il vettore: gli viene sommato. Ogni livello scrive il proprio contributo nel flusso residuo, che accumula l'informazione dal basso verso l'alto.

Fase 5: 24 livelli, e una risposta che arriva solo alla fine

Attenzione e MLP formano un blocco. Qwen2.5-0.5B impila 24 blocchi di forma identica, ciascuno con i propri pesi. I modelli molto grandi ne impilano 80 o più, con vettori di oltre 8.000 numeri.

Algoritmo 1 · Il passaggio in avanti di un LLM

\begin{array}{rll} \textbf{Input:}&\text{una frase } x&\\ 1:&\text{ids}\leftarrow\operatorname{tokenizza}(x)&\triangleright\ n\ \text{token}\\ 2:&h\leftarrow E[\text{ids}]&\triangleright\ n\times 896\\ 3:&\textbf{per }\ell=1\textbf{ a }24:&\\ 4:&\quad h\leftarrow h+\operatorname{Attn}_\ell\big(\operatorname{RMSNorm}(h)\big)&\triangleright\ \text{attenzione}\\ 5:&\quad h\leftarrow h+\operatorname{MLP}_\ell\big(\operatorname{RMSNorm}(h)\big)&\triangleright\ \text{rete neurale}\\ 6:&z\leftarrow\operatorname{RMSNorm}(h_n)\,E^{\top}&\triangleright\ 151\,936\ \text{punteggi}\\ 7:&p\leftarrow\operatorname{softmax}(z/T)&\triangleright\ \text{probabilità}\\ \textbf{Output:}&p&\triangleright\ p(\text{« Nak »})=96{,}4\,\% \end{array}

È possibile spiare il modello lungo il percorso: all'uscita di ogni livello si traduce il vettore dell'ultimo token in una parola, come se il modello dovesse rispondere subito. È la logit lens, mostrata a destra di ogni livello nella scena 3D. Il risultato è sorprendente: per 22 livelli le proposte non hanno alcun senso (frammenti di codice, caratteri cinesi), poi la risposta emerge all'improvviso. « ·Nak » compare solo al 24o e ultimo livello; per « La tour Eiffel se trouve à » (« La Torre Eiffel si trova a »), « ·Paris » compare al 23o.

Fase 6: scegliere la parola successiva, e la temperatura

Il vettore finale viene confrontato con ciascuna delle 151.936 righe della tabella degli embedding, la stessa dell'inizio: una per ogni token del dizionario. Ogni token ottiene un punteggio, trasformato in probabilità. Qui « ·Nak » vince con il 96,4 %, molto davanti a « ·nak » (0,43 %). Sulla Torre Eiffel il modello è più incerto: « ·Paris » al 34,4 %, davanti a « ·la » al 13,5 %.

p_v=\frac{e^{z_v/T}}{\displaystyle\sum_{u=1}^{151\,936}e^{z_u/T}}\qquad\text{(}T\text{: la temperatura)}

Un chatbot non prende sempre la prima scelta: estrae a sorte secondo queste probabilità. La temperatura regola questa casualità. Bassa, rende il modello prevedibile e ripetitivo; alta, appiattisce le probabilità e lo rende più creativo, fino all'incoerenza. Il cursore della scena 3D ricalcola le barre in tempo reale.

Fase 7: generare, un token dopo l'altro

Il token scelto viene aggiunto alla frase, e tutto ricomincia: suddivisione, embedding, 24 livelli, probabilità. Dopo « ·Nak », il modello è sicuro al 99,5 % che segua « amoto », poi scrive « en 2008 ». Una risposta di ChatGPT di 500 parole corrisponde a circa 700 passaggi completi nel modello. Per non ricalcolare tutto ogni volta, le chiavi e i valori già calcolati vengono conservati in memoria (la KV cache).

Algoritmo 2 · La generazione, token dopo token

\begin{array}{rll} \textbf{Input:}&\text{un inizio di testo } x_1,\dots,x_t&\\ 1:&\textbf{ripeti}&\\ 2:&\quad p\leftarrow\operatorname{LLM}(x_1,\dots,x_t)&\triangleright\ \text{algoritmo 1}\\ 3:&\quad x_{t+1}\sim p&\triangleright\ \text{campionamento, o }\arg\max p\\ 4:&\quad t\leftarrow t+1&\\ 5:&\textbf{fino a }x_t=\langle\text{fine}\rangle\ \text{o lunghezza massima}&\\ \textbf{Output:}&x_1,\dots,x_t& \end{array}

E l'addestramento?

Nessuno ha programmato i 494 milioni di pesi. All'inizio sono numeri casuali. Si mostrano al modello enormi quantità di testo (fino a 18.000 miliardi di token per la famiglia Qwen2.5), gli si chiede in ogni posizione di indovinare il token successivo e si corregge leggermente ogni peso nella direzione che avrebbe ridotto l'errore. Ripetuta migliaia di miliardi di volte, questa correzione basta a far emergere la lingua e buona parte delle conoscenze. Un assistente come ChatGPT aggiunge poi una seconda fase di addestramento su conversazioni, per imparare a seguire le istruzioni.

Perché l'IA ha bisogno di GPU

Ogni token generato richiede circa due operazioni per parametro: un miliardo di operazioni per il nostro piccolo modello, 140 miliardi per un modello da 70 miliardi di parametri. Soprattutto, tutti i pesi devono essere riletti dalla memoria a ogni token. È la larghezza di banda della memoria, più della potenza di calcolo, a limitare la velocità di un LLM.

\text{operazioni per token}\approx 2N,\qquad t_{\text{token}}\gtrsim\frac{\text{dimensione dei pesi}}{\text{larghezza di banda}}=\frac{70\ \text{GB}}{4{,}8\ \text{TB/s}}\approx 15\ \text{ms}

È esattamente per questo che le GPU per l'IA integrano memoria HBM: la NVIDIA H200 offre 141 GB a 4,8 TB/s, il che permette di ospitare un modello da 70 miliardi di parametri in FP8 su una sola scheda. GPT-3 (175 miliardi di parametri) occupa 350 GB in BF16 e richiede almeno tre H200 solo per i suoi pesi. Ed è anche per questo che un chip di mining non può far girare un'IA: un ASIC è cablato per un unico calcolo, mentre un LLM concatena moltiplicazioni di matrici i cui pesi cambiano a ogni livello. Lo spieghiamo nel dettaglio in ASIC o GPU: quale differenza?

Far girare un modello in casa, sui propri server, mantiene i dati all'interno dell'azienda. Progettiamo queste macchine, dalla workstation al server con 8 GPU: scopra i nostri server GPU per l'IA e il nostro assistente IA privato.

I modelli dietro ChatGPT sono molto più grandi e i loro dettagli non sono pubblici, ma appartengono alla stessa famiglia di quello presentato in questa pagina, il transformer decoder, descritta pubblicamente fino a GPT-3. Ha una domanda sull'IA o sull'hardware che la fa funzionare? Ci chiami al +33 6 32 49 26 41.

Domande frequenti

LLM, token e GPU: le vostre domande

Che cos'è un LLM?

Un LLM (Large Language Model, grande modello linguistico) è una rete neurale addestrata su enormi quantità di testo per un unico compito: prevedere il token successivo. ChatGPT, Gemini, Mistral, Llama o Qwen si basano su LLM. Rispondere, tradurre, riassumere o scrivere codice deriva da questa previsione, ripetuta token dopo token.

Che cos'è un token?

Un frammento di testo: una parola comune, una parte di una parola rara, un segno di punteggiatura. Il modello manipola solo questi frammenti, ciascuno identificato da un numero in un dizionario di oltre 100.000 voci. In francese, ad esempio, si conta spesso poco più di un token per parola, ed è in token che si misurano la lunghezza dei testi che un modello può leggere e il prezzo dei servizi di IA.

Come sceglie ChatGPT la parola successiva?

A ogni passo, il modello calcola una probabilità per ciascuno dei token del suo dizionario, a partire da tutto ciò che precede. Ne estrae uno, secondo una regola controllata dalla temperatura: se è bassa, prende quasi sempre il più probabile; se è più alta, si concede scelte meno prevedibili. Poi ricomincia con il testo allungato di un token.

Un LLM capisce ciò che scrive?

Costruisce, strato dopo strato, rappresentazioni che catturano la grammatica, i fatti e una parte del ragionamento presenti nei suoi dati di addestramento. Se ciò meriti la parola «capire» è oggetto di dibattito. Di certo c'è che calcola probabilità, senza verificare i fatti, e può quindi affermare con sicurezza qualcosa di falso (un'«allucinazione»).

Perché servono GPU per far girare un'IA?

Perché tutto il calcolo è fatto di moltiplicazioni di matrici, che le GPU eseguono in parallelo su migliaia di core, e perché ogni token obbliga a rileggere tutti i pesi del modello: serve molta memoria velocissima. Una NVIDIA H200 offre 141 GB a 4,8 TB/s, abbastanza per far stare un modello da 70 miliardi di parametri in FP8.

Si può far girare un LLM a casa o nella propria azienda?

Sì. I piccoli modelli aperti, come quello di questa pagina, girano su un normale computer. I modelli da 30 a 70 miliardi di parametri richiedono una o più schede GPU con molta memoria. Progettiamo e installiamo assistenti IA privati e server IA: i vostri dati restano da voi.

Quale modello è mostrato in questa pagina?

Qwen2.5-0.5B, un modello da 494 milioni di parametri pubblicato in accesso libero da Alibaba. I pesi di GPT e di ChatGPT non sono pubblici; abbiamo quindi scelto un modello della stessa famiglia (Transformer decoder), abbastanza piccolo da poter mostrare ciascuno dei suoi calcoli. Tutti i numeri visualizzati sono quelli di questo modello sulla frase scelta.

Qual è la differenza tra GPT e ChatGPT?

GPT indica la famiglia di modelli di OpenAI (Generative Pre-trained Transformer): LLM come quello di questa pagina, ma molto più grandi. ChatGPT è l'assistente costruito su di essi, addestrato in più a seguire istruzioni e a dialogare. Il cuore del calcolo, la previsione del token successivo, è lo stesso.

Far girare l'IA in casa vostra?

Progettiamo e installiamo server IA privati, dalla workstation al server a 8 GPU, perché i vostri dati restino tra le vostre mura.