Salta al contingut
Entendre els LLMs
🧭 Camí intuïtiuBloc 340-50 min
IntuïtiuMatemàtic

La versió sense fórmules de 11 · L'arquitectura Transformer. Cada secció diu on és la seva part matemàtica.

11 · El Transformer, peça a peça

Escrius «El gat dorm al» i un model de llenguatge et respon que la paraula següent és, probablement, «sofà». Què ha passat a dins? Aquest és el capítol més important del curs, i té un objectiu molt concret: que en surtis sabent seguir el camí que fa un text des que entra al model fins que en surt una probabilitat per a cada paraula possible. Tot el que vindrà després (models més grans, més ràpids, entrenats per ajudar) són variacions sobre aquesta màquina.

Els capítols anteriors t'han donat les peces: els tokens del capítol 10, els mapes de significats del capítol 8 i l'atenció del capítol 9. Aquí s'acoblen.


1. La visió de conjunt: una cinta transportadora#

Comença per la imatge que ho ordena tot. Imagina una fàbrica amb una cinta transportadora per a cada token del text. Cada cinta porta un vector, la llista de números que representa aquell token, i travessa la fàbrica de punta a punta. Al llarg del recorregut hi ha estacions de treball, i totes fan el mateix: llegeixen el que porta la cinta, calculen alguna cosa i hi sumen el resultat. Ningú no treu res de la cinta ni hi escriu a sobre; tothom hi afegeix.

Hi ha només dos tipus d'estació. L'atenció és l'única on les cintes es comuniquen: un token pot recollir informació dels altres i afegir-la a la seva cinta. La xarxa d'alimentació directa (feed-forward network, FFN) treballa cinta per cinta, sense mirar les veïnes: processa el que ja hi ha. Una estació d'atenció i una d'FFN formen un bloc, i un model en té molts, un darrere l'altre.

El viatge d’un text per dins d’un Transformer

1/8Talla el text en tokens

Elgatdormalper aquí passaran les cintes…

El text «El gat dorm al» entra tallat en quatre tokens, com has vist al capítol 10. Cada token és un número del vocabulari.

Esquemàtic, però amb l’estructura de debò. La idea que ho ordena tot és la de la cinta transportadora (el flux residual): un vector per token que travessa el model, on l’atenció mou informació entre tokens i l’FFN la processa dins de cada token, i totes dues hi sumen el que calculen.

Aquesta cinta té nom tècnic, el flux residual (residual stream), i és la mateixa idea de «sumar en comptes de reescriure» que has vist a la cinta de l'LSTM, ara a escala de tot el model. És la manera més útil de pensar en un Transformer, i és la que fan servir els investigadors que intenten entendre què passa a dins: com que cada estació hi suma la seva aportació, es pot mirar què hi ha posat cadascuna, i fins i tot apagar-ne una i veure què canvia al final.

Un detall que tornaràs a trobar: cada estació no llegeix la cinta tal com és, sinó una còpia normalitzada, és a dir, ajustada perquè els seus números no siguin ni massa grans ni massa petits. La cinta no es toca. No canvia la idea; fa que tot plegat sigui estable.

2. El punt de partida: una fila de la taula#

El primer que fa el model amb cada token és anar a buscar el seu vector inicial. Ho fa d'una manera molt poc sofisticada: té una taula d'embeddings (els vectors de significat del capítol 8) amb una fila per a cada peça del vocabulari, i cada token agafa la seva fila. No es calcula res; es consulta, com qui busca una fitxa en un fitxer.

La taula: una fila per token

a
al
anar
→ banc
diners
seure
treure
vaig

Blau, números positius; taronja, negatius. Com més intens, més gran.

Frase
Valors il·lustratius. Cada token va a buscar la seva fila: no es calcula res, es llegeix. Fixa’t que «banc» rep la mateixa fila a les dues frases: a l’entrada, el model encara no sap quin banc és. Ho decidiran les capes que venen després, mirant el context. (La taula de debò té una fila per a cada peça del vocabulari, desenes de milers, i milers de números per fila.)

Les files comencen sent números a l'atzar, i l'entrenament les va movent fins que les peces que es fan servir en contextos semblants acaben a prop: és el mapa de significats del capítol 8, après aquí com a efecte secundari de predir la paraula següent. Però fixa't en la limitació que ja coneixes: «banc» té una sola fila, sigui la frase que sigui. A l'entrada, el model no sap de quin banc parles. La resta del capítol és la història de com aquell vector inicial s'omple de context fins que «banc» vol dir el que ha de voler dir en aquella frase.

3. L'atenció: preguntes, etiquetes i continguts#

L'atenció és la peça que fa que el Transformer entengui el context, i val la pena mirar-la a poc a poc.

Tres coses per paraula

Al capítol 9, l'atenció comparava el que necessitava el traductor amb unes notes. Aquí es fa el mateix, però totes les paraules alhora i entre elles: és autoatenció (self-attention). Per fer-ho, cada token calcula, a partir del seu vector, tres coses:

  • una pregunta (query): què busca en aquest moment;
  • una etiqueta (key): com el poden trobar els altres;
  • un contingut (value): què aporta si algú el tria.

Pensa en una sala de gent on cadascú porta penjada una etiqueta amb el que és, una pregunta sobre el que necessita saber i una carpeta amb el que pot explicar. Cada persona llegeix totes les etiquetes, les compara amb la seva pregunta, i escolta més els que hi encaixen més.

Preguntes, etiquetes i continguts

1/6Cada paraula prepara tres coses

preguntaetiquetacontingutcada paraula:Lagataqueviviaalpisdedaltdormia

Abans de mirar-se entre elles, cada paraula calcula, a partir del seu vector, tres llistes de números: una pregunta (query), una etiqueta (key) i un contingut (value).

Esquemàtic. En anglès, i al camí matemàtic, les tres coses es diuen query, key i value. Fixa’t que «dormia» no busca una paraula concreta: busca un tipus de paraula, i és la comparació amb les etiquetes la que la troba.

La comparació entre una pregunta i una etiqueta és una operació molt senzilla: es multipliquen les dues llistes de números terme a terme i se sumen els resultats. Si les dues llistes «apunten» cap al mateix lloc, el resultat és gran; si no, és petit. Recorda-ho del capítol 1: és el producte escalar, la manera de mesurar quant apunten dos vectors cap al mateix lloc. Després, les puntuacions es converteixen en un repartiment de cent fitxes, i el token s'emporta una barreja dels continguts on cadascú pesa tant com fitxes ha rebut. Abans de repartir, les puntuacions s'escalen per un factor fix perquè no surtin massa extremes: com més llargues són les llistes, més grans surten les sumes, i sense aquest ajust el repartiment tendiria a donar-ho tot a un de sol.

És important el que no és: no és una cerca exacta. Totes les etiquetes casen una mica, i el resultat sempre és una barreja. Això és el que permet aprendre-ho: un petit canvi en una pregunta fa un petit canvi en el repartiment, i l'entrenament pot anar ajustant les regles a poc a poc.

La màscara: no mirar el futur

Un model que ha d'endevinar la paraula següent no pot fer trampa mirant-la. Per això, a l'atenció hi ha una màscara causal: cada token només pot repartir fitxes entre ell mateix i els tokens anteriors. Els que venen després, per a ell, no existeixen. Això és el que fa que el model sigui autoregressiu: escriu d'esquerra a dreta, una peça cada vegada.

Diversos lectors alhora

Amb un sol repartiment de fitxes, cada token hauria de triar una sola cosa a què fer cas. Però sovint li cal fer-ne cas a diverses alhora: qui és el subjecte, quina paraula tenia just abans, si aquell nom ja havia sortit. Per això l'atenció es parteix en diversos caps (heads), com diversos lectors que llegeixen el mateix text buscant coses diferents, cadascun amb les seves preguntes i etiquetes. Al final, el que ha trobat cada lector se suma a la cinta.

On mira cada paraula

  • el12 fitxes
  • gat244 fitxes
  • negre32 fitxes
  • dorm42 fitxes
  • perquè52 fitxes
  • el62 fitxes
  • gat744 fitxes
  • menja8no la veu

Busca paraules que siguin la mateixa cosa: el segon «gat» troba el primer.

Lector
Màscara
Tria una paraula de la frase i mira com reparteix les seves cent fitxes. Cada lector segueix una regla diferent, posada a mà; el repartiment surt del càlcul de debò. Amb la màscara, cap paraula pot donar fitxes a les que venen després: és el que fa que un model pugui aprendre a predir el futur sense veure’l. Treu-la i mira «el» del principi.

Partir l'atenció en lectors no afegeix números al model: reparteix els mateixos en grups. El que hi guanya és que cada grup pot especialitzar-se. I això no és una metàfora: els investigadors han trobat caps amb funcions concretes i reproduïbles. Hi ha caps que miren la paraula anterior, com el lector 2 de la figura, i n'hi ha uns de molt importants, els caps d'inducció (induction heads), que completen patrons: si abans ha sortit «Joana Puig» i ara torna a sortir «Joana», proposen «Puig». Probablement són el mecanisme bàsic que permet a un model aprendre del que li dius dins de la mateixa conversa.

El preu: tothom amb tothom

L'atenció té un cost que creix de pressa. Cada token es compara amb tots els anteriors, i el nombre de comparacions creix amb el quadrat de la llargada del text.

Tothom es compara amb tothom

comparacions78per a 12 tokens
Cada casella és una comparació entre una pregunta (fila) i una etiqueta (columna). Amb la màscara, només la meitat de sota. Dobla el text i les comparacions es multipliquen gairebé per quatre: amb un context de 100.000 tokens, en són uns cinc mil milions per capa i per lector. Per això el context llarg és car, i per això hi ha tanta enginyeria per fer-lo més barat.

Per a textos curts, el gruix de la feina és a la resta del model; per a textos llargs, l'atenció ho domina tot. Per això el context llarg és car, i per això hi ha trucs, com FlashAttention, que fan exactament el mateix càlcul sense haver de guardar la graella sencera a la memòria. Ho veuràs al capítol 14.

4. L'FFN: on es guarda el que el model sap#

Després de l'atenció, cada cinta passa per la segona estació del bloc, l'FFN. Aquesta peça no mira cap altre token: treballa amb el vector d'un sol token i prou. I tot i així, conté uns dos terços dels números de cada bloc, que en un model gran vol dir gairebé dos terços de tot el model.

Què fa amb tants números? La millor lectura que en tenim és la d'una memòria de detectors i fets. L'FFN té milers de neurones, i cadascuna fa de detector d'un patró del vector («això parla d'un monument de París»). Quan un detector s'encén, suma a la cinta el que té associat («París», «França»).

Detectors que, quan s’encenen, escriuen un fet

La Torre Eiffel és a…detectorsel que escriuenmonument de París+ París · Françaobra de GaudíBarcelona · Gaudímonument de LondresLondres · rellotgeconstrucció alta+ alturaverb en passattemps passat
Text
Esquemàtic. L’FFN mira el vector d’un sol token, i cada una de les seves neurones fa de detector d’un patró. Quan un detector s’encén, suma a la cinta el que té associat. Els investigadors han trobat fets concrets guardats d’aquesta manera, i fins i tot els han pogut canviar tocant només els números de l’FFN d’unes capes concretes.

Aquesta lectura no és només una imatge bonica. Hi ha treballs que han localitzat on es guarda un fet concret, a l'FFN d'unes capes determinades, i l'han canviat quirúrgicament: després de l'edició, el model creu que la Torre Eiffel és a Roma, i la major part de la resta del que sap continua igual. Simplificant molt, i amb aquesta precaució: l'atenció mou informació entre tokens; l'FFN guarda coneixement i el processa dins de cada token. La primera meitat és segura per construcció (l'FFN no té cap manera de mirar un altre token); la segona és el que diuen les proves, no una propietat del disseny.

5. La posició: una agulla que gira#

Hi ha un problema que encara no hem dit. L'atenció fa mitjanes, i una mitjana no sap en quin ordre li han donat les coses. Sense cap informació de posició, el model no podria distingir dues frases amb les mateixes paraules en un altre ordre. (Amb un matís: la màscara ja trenca una mica la simetria, perquè cada paraula veu un tros diferent del text. Però l'última paraula, la que fa la predicció, les veu totes, i en un model d'una sola capa en treu exactament el mateix amb les dues frases.)

Qui mossega qui?

«El gos mossega l’home»elgosl'homemossega«L’home mossega el gos»elgosl'homemossega=
El model
Sense cap informació de posició, l’atenció només veu quines paraules hi ha, no en quin ordre: les dues frases són la mateixa bossa, i l’última paraula, que les veu totes, en treu exactament el mateix resultat.

Cal, doncs, dir a cada token on és. S'hi han provat diverses maneres: sumar a cada vector un patró d'ones que depèn de la posició (la del primer Transformer, del 2017), aprendre una fila de taula per a cada posició (la de GPT-2), o castigar l'atenció entre tokens llunyans. La que fan servir gairebé tots els models actuals es diu RoPE (rotary position embedding), i és la més elegant.

La idea de RoPE és girar. Imagina que la pregunta i l'etiqueta de cada token són agulles de rellotge, i que cada token les gira un angle que depèn de la seva posició: el primer, poc; el desè, deu vegades més. Quan una pregunta es compara amb una etiqueta, el que compta és l'angle que formen. I com que les dues han girat segons la seva posició, aquest angle només depèn de quantes posicions les separen, no d'on són.

La posició com una agulla que gira

agulla ràpidaentre elles: 80°agulla lentaentre elles: 12°
L’agulla prima és la pregunta de la paraula de la posició 12; la gruixuda, l’etiqueta de la de la posició 10. Totes dues giren segons la seva posició. Mou la primera posició amb la distància fixa: les agulles giren, però l’angle entre elles no canvia. El model veu la distància, no la posició absoluta. Aquest truc es diu RoPE.

Això vol dir que el model aprèn coses com «el verb sol mirar el nom que té dues paraules enrere», i les aplica igual al principi d'un text que al final. Fixa't també en per què calen agulles de diverses velocitats: l'agulla ràpida distingeix molt bé les distàncies curtes, però al cap d'unes quantes posicions fa la volta sencera i confon distàncies diferents; l'agulla lenta gira tan poc que serveix per a les distàncies llargues. Un vector de debò té moltes parelles de números, i cadascuna gira a una velocitat diferent.

Un avantatge pràctic: la velocitat de gir es pot ajustar després d'entrenar el model, i és una de les maneres d'estirar-ne el context perquè llegeixi textos més llargs dels que va veure.

6. La sortida: repartir probabilitat#

Després de l'últim bloc, el vector de l'últim token porta tot el que el model ha entès de la frase. Falta convertir-lo en una predicció. Es normalitza una última vegada i es compara amb una fila per a cada peça del vocabulari: desenes de milers de comparacions, que donen una puntuació per a cada continuació possible. Aquestes puntuacions es converteixen, com a l'atenció, en un repartiment de cent fitxes entre totes les peces. Això és una distribució de probabilitat, com les del capítol 3.

Cent fitxes per a tot el vocabulari

«El gat dorm al ?»

  • sofà31
  • llit17
  • sol12
  • terra8
  • jardí5
  • la resta (49.995)27
Moment
Xifres il·lustratives, amb un vocabulari de 50.000 peces. El vector de l’últim token es compara amb totes les peces del vocabulari, i les puntuacions es converteixen en un repartiment de cent fitxes. Fixa’t en l’última barra: la majoria de peces reben molt poca cosa cadascuna, però entre totes en sumen moltes.

Per generar text, es tria una peça segons aquest repartiment, s'enganxa al final i es torna a començar. Per entrenar passa una cosa més interessant. Gràcies a la màscara, cada posició del text ha fet la seva pròpia predicció de la següent sense haver-la vist, de manera que un sol pas pel model dona una lliçó per a cada posició: amb un text de mil tokens, mil lliçons d'un cop. A cada lliçó es mira quantes fitxes havia posat el model a la paraula que venia de debò, i la sorpresa d'haver-ne posat poques és la pèrdua del capítol 4. Entrenar és fer-la baixar. Això és molt més eficient que una xarxa recurrent, que ha d'avançar posició per posició.

7. Un bloc que es repeteix#

Si has seguit fins aquí, ja coneixes tot el Transformer. No hi ha cap peça més: tokens, taula, i després el mateix bloc (normalitzar, atenció, sumar; normalitzar, FFN, sumar) repetit unes quantes desenes de vegades, i la sortida. Els blocs tenen tots la mateixa forma, però cadascun té els seus propis números, i l'entrenament els fa especialitzar-se.

El mateix motlle, repetit

cintaatenció+FFN+1234
A dalt, un bloc obert: llegir la cinta (normalitzada), atenció, sumar; llegir-la de nou, FFN, sumar. A sota, la pila. Tots els blocs tenen la mateixa forma, però cadascun té els seus propis números, i l’entrenament els fa especialitzar-se. El programa sencer d’un model així cap en unes tres-centes línies de codi.

Que sigui tan regular té una conseqüència sorprenent: el programa sencer d'un model així cap en unes tres-centes línies de codi. Al camí matemàtic n'hi ha un de complet, amb totes les peces d'aquest capítol, que s'entrena al teu navegador sobre text en català durant uns minuts i acaba predient millor que el model de recomptes del capítol 8.

8. Tres famílies, i qui pot mirar qui#

No tots els Transformers són iguals, i la diferència principal entre les tres famílies és, sobretot, una cosa que ja coneixes: la forma de la màscara. Qui pot mirar qui.

Qui pot mirar qui

és mirat →qui mira →Només decodercadascú veu el passati a si mateix
Variant
Només descodificador (GPT, Llama, Claude, Qwen): generar text: gairebé tots els LLMs actuals. Cada fila és un token que mira, i cada columna, un token que pot ser mirat. Una casella plena vol dir que el pot veure.

Els models només codificador (encoder-only), com BERT, deixen que cada token miri tots els altres, endavant i enrere. Són bons per entendre un text sencer, no per escriure'n. Els models codificador-descodificador (encoder-decoder), com T5 o Whisper, llegeixen una entrada sencera i en generen una sortida, com el traductor del capítol 9. I els models només descodificador (decoder-only), amb la màscara causal, són gairebé tots els LLMs actuals: GPT, Llama, Claude, Qwen.

Per què han guanyat aquests últims? Perquè són més simples (una sola pila de blocs), perquè cada token de cada text és una lliçó d'entrenament, perquè s'ha vist que escalen bé, i perquè qualsevol tasca es pot plantejar com «continua aquest text».

9. Quant pesa un model#

Quan es diu que un model té «8.000 milions de paràmetres», es parla dels números que ha après: les files de la taula, les regles per fer preguntes, etiquetes i continguts, els detectors i els fets de l'FFN. Amb el que ja saps, es poden comptar.

Quants números té un model

Total: 202.368 de números apresos (paràmetres)

  • atenció65.536 · 32 %
  • FFN131.072 · 65 %
  • taula del vocabulari5.760 · 3 %

Entrenar un model costa unes sis operacions per cada número i per cada token de text; generar un token, unes dues per número.

Models
Vocabulari
Aritmètica de debò, amb la regla del camí matemàtic. Dobla l’amplada i cada bloc passa a tenir quatre vegades més números; dobla els blocs i només el doble. L’FFN se’n porta sempre dos terços dels números dels blocs. I mira el mini-GPT amb un vocabulari de 128.000: la taula es menja gairebé tot el model, que és per què els models petits no fan servir vocabularis grans. La regla és aproximada: els models reals canvien una mica les proporcions, i per això el de tipus 70B en surt amb uns 65.000 milions i no 70.000.

La conclusió més útil és la del quadrat: si dobles l'amplada dels vectors, cada bloc passa a tenir quatre vegades més números, mentre que doblar el nombre de blocs només dobla el total. I hi ha una regla per al cost: entrenar un model costa unes sis operacions per paràmetre i per token de text, i generar un token, unes dues per paràmetre. Amb aquestes dues regles es pot estimar amb quatre números el que costa qualsevol model. Per exemple, un model de 70.000 milions de paràmetres entrenat amb 15 bilions de tokens surt per uns onze dies de feina de 16.000 targetes gràfiques de les més potents, que quadra amb les xifres publicades.

Què t'has d'endur#

Tot el camí, d’un cop d’ull

1. Tokensel text es talla en peces, i cada peça és un número2. Taulacada peça busca la seva fila: un punt al mapa3. Cintaun vector per token, que travessa tot el model4. Blocsatenció entre tokens, FFN dins de cadascun; sumen× N5. Sortidal’últim vector reparteix cent fitxes al vocabulari6. Triauna peça s’enganxa al text, i torna a començar
Si recordes aquest dibuix, recordes com un LLM converteix un text en la probabilitat de la paraula següent. La resta del curs són maneres de fer-lo més gran, més ràpid i més útil.
  • Un Transformer és una cinta transportadora per a cada token: un vector que travessa tot el model, i on cada peça llegeix i hi suma el que calcula.
  • L'atenció és l'única peça on els tokens es miren: cada token fa una pregunta, la compara amb les etiquetes dels anteriors, reparteix cent fitxes i s'emporta una barreja dels seus continguts. La màscara impedeix mirar el futur.
  • L'atenció es parteix en diversos caps, com lectors que busquen coses diferents alhora. El seu cost creix amb el quadrat de la llargada del text.
  • L'FFN treballa dins de cada token, conté dos terços dels números de cada bloc i, segons les proves, és on es guarda bona part del que sap.
  • La posició s'afegeix girant preguntes i etiquetes segons on és cada token, de manera que el model veu distàncies i no posicions absolutes.
  • Al final, l'últim vector reparteix probabilitat entre tot el vocabulari. Generar és triar una peça i tornar a començar; entrenar és fer baixar la sorpresa a totes les posicions alhora.

Comprova que ho has entès#

0 de 4 resoltes

  1. Quina peça del bloc és l'única on un token pot fer servir informació d'un altre token?
  2. Què passaria si entrenessis un model de generació sense la màscara causal?
  3. Amb RoPE, cada token gira la seva pregunta i la seva etiqueta segons la seva posició. Per què això fa que el model vegi distàncies i no posicions?
  4. Per què entrenar un Transformer amb un text de mil tokens és molt més eficient que entrenar-hi una xarxa recurrent?

Per anar més lluny#

Marca els que hagis llegit
  • 3Blue1Brown, But what is a GPT? Visual intro to Transformers i Attention in transformers, visually explained (vídeos, 2024, en anglès): el mateix camí d'aquest capítol, animat.

  • Jay Alammar, The Illustrated Transformer: la referència clàssica en dibuixos (en anglès).

  • Brendan Bycroft, LLM Visualization: un model petit en tres dimensions que pots recórrer pas a pas, des dels tokens fins a la sortida.