IA sul dispositivo · 8 min di lettura

Come un modello linguistico sta in un telefono

Le app di IA locale chiedono una quantità di spazio sorprendente, e il motivo non è il software gonfiato. Capire dove finiscono quei gigabyte spiega anche perché il modello è veloce su un telefono nuovo e lento su uno vecchio — e che cosa ti dice davvero un nome di file come Q3_K_S quando lo incontri.

Un modello è un grande mucchio di numeri

Un modello linguistico è un insieme di parametri appresi: i pesi. Ognuno è un numero, e sono miliardi. «2B» nel nome di un modello significa più o meno due miliardi di parametri.

Alla massima precisione ogni peso occupa 4 byte. Due miliardi di pesi da 4 byte ciascuno fanno circa 8 GB, e parliamo di uno dei modelli più piccoli in circolazione. Ecco il problema in una riga: il file è grande perché i numeri sono tantissimi e ognuno è memorizzato con precisione.

Quantizzazione: meno bit per numero

La quantizzazione memorizza ogni peso usando meno bit. Invece di 32 bit per peso ne usi 8, o 4, o 3 — con fattori di scala per ogni blocco di pesi, in modo che l'approssimazione resti vicina all'originale.

La riduzione delle dimensioni è più o meno lineare:

È una compressione con perdita, come un JPEG. Spingila abbastanza e vedi gli artefatti: in un modello linguistico compaiono come risposte più vaghe, ripetizioni o una deriva rispetto alla domanda.

La quantizzazione non rende un modello più stupido in modo uniforme. Lo rende meno preciso, e l'imprecisione si vede prima di tutto sugli input più difficili.

Come leggere il nome del file

Un nome come Q4_K_M o Q3_K_S è una ricetta, non un numero di versione:

Quindi Q3_K_S è un k-quant a 3 bit di taglia piccola: compresso in modo aggressivo, scelto quando entrare nel dispositivo conta più dell'ultimo punto percentuale di qualità.

GGUF: il contenitore

GGUF è il formato di file che contiene i pesi quantizzati più i metadati di cui ha bisogno un runtime: tokenizzatore, architettura, modello di prompt. Un solo file, senza una cartella di configurazione al seguito.

Per i telefoni è importante perché GGUF è pensato per essere mappato in memoria. Invece di leggere 1,7 GB nella RAM, il runtime mappa il file nel proprio spazio di indirizzi e il sistema operativo carica solo le parti in uso. Ecco perché un modello più grande della RAM libera del telefono può comunque funzionare, e perché la prima risposta dopo l'apertura dell'app è più lenta delle successive — le pagine sono ancora in arrivo.

Perché il telefono si scalda

Generare una parola — un token — significa far passare l'input attraverso quei miliardi di parametri. Poi rifarlo per il token successivo. Una risposta di cento parole sono cento passaggi.

È aritmetica continua sulla CPU o sull'acceleratore neurale, esattamente il carico di lavoro che i telefoni gestiscono peggio dal punto di vista termico. I dispositivi rallentano quando si scaldano, quindi una lunga generazione ininterrotta diventa più lenta strada facendo. Le app locali fatte bene dosano il lavoro — distanziano le operazioni per far raffreddare il chip — invece di metterle tutte in fila una dopo l'altra.

Perché i telefoni vecchi faticano

Tre vincoli, tutti difficili da aggirare:

Per questo le app di IA locale indicano un dispositivo minimo invece di provare a supportare tutto. Sotto una certa soglia l'esperienza non è peggiore: è inutilizzabile.

Lo scambio che stai accettando

Un modello quantizzato della taglia di un telefono non regge il confronto con un grande modello nel cloud sui ragionamenti difficili. Per un compito circoscritto — che cosa significa questa parola in questa frase, traduci questa espressione — è più che sufficiente, e porta con sé tre proprietà che un modello nel cloud non può offrire: funziona senza connessione, non costa nulla a ogni utilizzo e il testo non lascia mai il dispositivo.

È tutto qui il patto dell'IA sul dispositivo. Rinunci al modello più grande possibile e ottieni privacy, funzionamento offline e nessun contatore.

Come lo fa ClickBook

ClickBook include un modello GGUF quantizzato e lo esegue con llama.cpp sul tuo dispositivo. Su iOS è incluso nell'app, quindi non c'è nulla da scaricare. Scopri di più sui lettori di ebook con IA locale, oppure guarda come funziona ClickBook.