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:
- 32 bit — ~8 GB per un modello da 2B. Massima precisione, inadatta a un telefono.
- 8 bit — ~2 GB. Qualità molto vicina all'originale.
- 4 bit — ~1,1 GB. Il compromesso abituale.
- 3 bit — ~800 MB. Perdite evidenti, ma ancora utile.
- 2 bit — ancora più piccolo, e la qualità crolla.
È 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:
- Q4 / Q3 — all'incirca quanti bit per peso.
- _K — uno schema «k-quant», che distribuisce il budget di bit in modo disuguale e conserva più precisione dove il modello è più sensibile.
- _S, _M, _L — piccolo, medio o grande all'interno di quello schema. Più grande conserva più qualità e più byte.
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:
- Banda di memoria. Ogni token significa leggere in sequenza gran parte dei pesi. La velocità di generazione dipende spesso da quanto in fretta si può leggere la memoria, non dalla potenza di calcolo.
- RAM. La mappatura in memoria aiuta, ma un dispositivo già al limite ricorre di continuo al paging e il sistema operativo può semplicemente chiudere l'app.
- Acceleratori. I chip più recenti hanno hardware adatto a questa aritmetica. Quelli più vecchi ripiegano sui core generici e vanno diverse volte più lenti.
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.