Capitolo 02 · Tokenizzazione · 8 min
Dal testo ai token
Come il testo diventa numeri. BPE, sottoparole, e perché gli LLM faticano a contare le lettere.
Perche i token?
Un modello linguistico non puo manipolare direttamente il testo. Manipola numeri. Il primissimo passo, ogni volta che parli con un LLM, e trasformare il testo in una sequenza di numeri interi: i token IDs.
La tokenizzazione e il taglio che rende possibile questa conversione.
Perche non un token per parola?
A prima vista potremmo immaginare: una parola = un token. Semplice.
Ma non funziona:
- La lingua contiene milioni di parole possibili (flessioni, neologismi, nomi propri, errori di battitura…). Avere un token per parola richiede un vocabolario gigantesco.
- Il modello non puo fare nulla con una parola che non ha mai visto.
- Alcune lingue (cinese, giapponese) non hanno nemmeno spazi tra le parole.
La soluzione adottata da quasi tutti gli LLM moderni: le sottoparole.
Tokenizzazione per sottoparole
Con un tokenizer a sottoparole:
- Le parole frequenti diventano un solo token (
the,e,sono) - Le parole rare vengono spezzate in pezzi piu piccoli (
tokenizzazione→token+izzazione) - I caratteri sconosciuti restano sempre decomponibili fino alla lettera
Il risultato: un vocabolario di dimensione ragionevole (tipicamente tra 30.000 e 200.000 token) che puo rappresentare qualsiasi testo.
L'algoritmo piu usato si chiama BPE (Byte Pair Encoding). Parte dai singoli caratteri e fonde iterativamente le coppie piu frequenti nel corpus di addestramento.
BPE in trenta secondi
Immagina un mini-corpus di tre parole: low, lower, lowest. Si comincia tokenizzando a livello di carattere:
l o w
l o w e r
l o w e s t
A ogni iterazione, si cerca la coppia di token adiacenti piu frequente. Qui l o compare tre volte: la fondiamo in lo:
lo w
lo w e r
lo w e s t
Ora lo w e la coppia piu frequente. La fondiamo:
low
low e r
low e s t
Si continua fino a raggiungere la dimensione di vocabolario desiderata. I pezzi che ricorrono spesso (low) diventano un solo token. Quelli rari (est) restano decomposti. E esattamente cio che fa BPE — su miliardi di parole invece di tre, e su byte invece che caratteri nei modelli moderni (byte-level BPE), il che garantisce che nessun input sia mai "sconosciuto".
Qualche cugino da conoscere: WordPiece (BERT), SentencePiece (T5, Llama), Unigram LM (mT5). Condividono la stessa idea — un vocabolario di sottoparole — con euristiche di fusione diverse.
Token speciali
Oltre alle sottoparole del testo, il tokenizer riserva alcuni token speciali che non compaiono mai naturalmente:
<|im_start|>,<|im_end|>(OpenAI),[INST]…[/INST](Llama),<|user|>/<|assistant|>— delimitano i turni di una conversazione.<|endoftext|>— fine del documento.<|fim_prefix|>,<|fim_middle|>— per il fill-in-the-middle, usato nel completamento di codice.
E cio che permette di trasformare un dialogo "Utente ha detto X, Assistente risponde Y" in una sequenza lineare di token, utilizzabile dal modello. Quando invii un messaggio a ChatGPT, questi marcatori vengono aggiunti automaticamente prima della tokenizzazione.
Prova
Sulla destra appaiono le sottoparole: ogni token è un frammento riutilizzabile, non necessariamente una parola intera. Le parole frequenti stanno in un singolo token, quelle rare si scompongono in più pezzi.
Alcune cose da notare:
- Le parole corte e frequenti vengono raramente tagliate.
- Le parole lunghe o rare spesso finiscono in piu pezzi.
- Lo spazio prima di una parola fa parte del token (per questo
· helloehellosono token diversi). - In italiano, il rapporto token/parola e spesso piu alto che in inglese (circa 1.3-1.7 contro 1.2-1.4), anche perche i modelli hanno visto piu inglese durante l'addestramento.
Conseguenze pratiche
Questa storia dei token ha molte implicazioni inattese:
- Gli LLM contano male le lettere. "Quante R ci sono in strawberry?" — spesso rispondono 2 invece di 3, perche la parola arriva loro in pochi token, non come lettere separate.
- I prezzi delle API si calcolano in token, non in parole. L'italiano puo quindi costare un po' di piu da elaborare rispetto all'inglese.
- Le finestre di contesto (
128k tokens,200k tokens…) si misurano anch'esse in token. Un libro di 100.000 parole italiane puo rappresentare circa 140.000 token.
Per il modello, "tokenizzazione" e "tok·en·iz·za·zione" sono la stessa cosa. Vede solo i pezzi.
Il seguito
Ora che il tuo testo e diventato una sequenza di interi, quegli interi entrano nel modello. Primo passo all'interno: vengono trasformati in vettori, in uno spazio di centinaia di dimensioni dove il significato diventa una posizione geometrica.
Questo e il tema del capitolo successivo.
Aggiornato il