I modelli non leggono lettere e non leggono parole. Leggono token — frammenti di testo a metà strada fra le due cose — e quasi ogni comportamento strano su ortografia, numeri o lingue straniere risale a questo.
Secondo articolo di una serie su come funzionano davvero i modelli linguistici.
Il testo viene tagliato prima che il modello lo veda
Un tokeniser divide il testo in unità prese da un vocabolario fisso, in genere da 50.000 a 200.000 elementi. Le parole comuni sono singoli token. Le parole rare si spezzano in frammenti. Gli spazi di solito si legano all’inizio della parola successiva.
La regola è la frequenza, non il significato: i pezzi comparsi spesso nei testi di training sono diventati token, mentre tutto il resto viene assemblato a partire da unità più piccole.
Perché i modelli sbagliano a contare le lettere
Chiedi a un modello quante r ci siano in strawberry e può benissimo sbagliare. Non è un fallimento di ragionamento. Nel momento in cui il modello vede la parola, questa è già diventata due o tre id numerici e le singole lettere non sono più presenti nell’input. Chiedergli di contarle è un po’ come chiedere a qualcuno di contare le lettere di una parola che ha soltanto sentito pronunciare.
Lo stesso meccanismo spiega perché i modelli sono instabili nel rovesciare stringhe, nelle rime in alcune lingue e nelle modifiche a livello di singolo carattere. Quando il task richiede davvero le lettere, la soluzione è dargli le lettere — separandole con spazi, oppure affidare il lavoro a del codice, che è precisamente ciò a cui servono i tool.
I token sono l’unità di costo e dei limiti
Prezzi, rate limit e context window sono tutti misurati in token, quindi vale la pena conoscere il cambio approssimativo. La prosa inglese sta intorno a 0,75 parole per token. Il codice è più denso: punteggiatura e indentazione hanno ciascuna un costo. Le lingue che non usano l’alfabeto latino spesso costano diverse volte di più per carattere, perché il vocabolario è stato costruito soprattutto su testo inglese.
Quest’ultimo punto ha una conseguenza concreta: lo stesso documento può costare tre o quattro volte di più da elaborare in una lingua rispetto a un’altra e consuma la context window nella stessa proporzione. Se costruisci per un pubblico non anglofono, misuralo invece di assumere parità.
Embedding: dagli id al significato
Un token id è arbitrario — 4589 non è maggiore o minore di 8022 in alcun senso utile. La prima cosa che fa il modello è sostituire ogni id con un vettore, una lunga lista di numeri appresa durante il training.
È in questi vettori che vive la somiglianza. Token usati in contesti simili finiscono con vettori simili, motivo per cui l’aritmetica su di essi è notoriamente quasi sensata e per cui il retrieval funziona: fai l’embedding di una domanda e di un paragrafo, confronti i vettori e la vicinanza è una discreta proxy della rilevanza.
Vale la pena essere precisi su una confusione comune. Gli embedding dentro il modello sono per-token. Gli embedding usati per cercare documenti sono di solito un vettore per un intero passaggio e vengono prodotti da un modello correlato ma addestrato separatamente. Stessa idea, strumento diverso.
Conseguenze pratiche
Ne seguono tre cose da ricordare:
- La spaziatura strana costa. Whitespace e formattazione insoliti si frammentano in più token del testo pulito. JSON lungo e molto indentato è misurabilmente più costoso del JSON compatto.
- Gli identificatori rari costano. Un UUID può consumare una dozzina di token. Passarne centinaia spreca contesto che potrebbe servirti dopo.
- Gli spazi finali contano. Poiché gli spazi si legano alla parola successiva, un prompt che termina con uno spazio può forzare una tokenizzazione scomoda di ciò che viene dopo. Terminare in modo pulito è un miglioramento gratuito.
Che cosa portarsi a casa
Il modello legge una sequenza di numeri che rappresentano frammenti di testo e poi sostituisce ciascuno con un vettore appreso. Le lettere non sopravvivono a quel viaggio. Una volta visualizzato questo passaggio, gli errori di spelling smettono di essere misteriosi e diventano prevedibili — quindi progettuali.
Prossimo articolo della serie: attention, e come un modello decide quali parole precedenti contano.
