Un Raspberry Pi 5 da 8 GB esegue oggi un modello linguistico quantizzato senza alcuna connessione di rete, con una velocità che basta per compiti di classificazione ed estrazione. Il punto non è il throughput: il testo elaborato non attraversa mai un confine di rete, e quindi non rientra negli obblighi di chi disciplina i trasferimenti di dati personali.
Contesto
Ad aprile 2024, nel giro di pochi giorni, sono usciti due modelli che allargano il campo di ciò che gira su hardware da qualche decina di euro. Meta ha rilasciato Llama 3 8B il 18 aprile; Microsoft ha pubblicato Phi-3 mini, 3,8 miliardi di parametri, il 23 aprile, descrivendolo come abbastanza piccolo da girare in locale su un telefono (Microsoft Research, Phi-3 Technical Report). Entrambi si distribuiscono in formato GGUF, il contenitore che llama.cpp usa per i pesi quantizzati.
La quantizzazione è la leva che rende praticabile l’esecuzione su una CPU ARM. Un peso a 16 bit occupa il quadruplo di un peso a 4 bit; lo schema Q4_K_M di llama.cpp porta i pesi a circa 4,5 bit per parametro con precisione mista — i tensori più sensibili restano a risoluzione più alta (documentazione llama.cpp, quantize). Phi-3 mini in Q4_K_M occupa circa 2,3 GB: entra comodamente negli 8 GB di un Pi 5 e lascia spazio al sistema operativo e alla cache di contesto.
La questione che si apre qui riguarda il governo del dato, non la prestazione. Un assistente che spedisce testo a un endpoint esterno trasferisce quel testo a un responsabile del trattamento, con le conseguenze contrattuali e — sotto il GDPR — gli obblighi di base giuridica, minimizzazione e, se l’endpoint sta fuori dallo Spazio economico europeo, trasferimento internazionale. Tenere l’inferenza sul dispositivo taglia il trasferimento alla radice, non come misura di mitigazione ma come fatto fisico.
Architettura
Il Raspberry Pi 5 (ottobre 2023) monta un Broadcom BCM2712 con quattro core Cortex-A76 a 2,4 GHz, ARMv8.2 con estensione dotprod, e fino a 8 GB di LPDDR4X-4267 (specifiche Raspberry Pi). I core implementano le istruzioni NEON e il prodotto scalare a 8 bit, che llama.cpp sfrutta nei kernel di moltiplicazione matriciale: da lì arriva gran parte della velocità su CPU, senza GPU dedicata.
Lo stack minimo è fatto di tre pezzi. Il runtime è llama.cpp oppure Ollama, che incapsula llama.cpp dietro un server HTTP e una gestione dei modelli più comoda. Per inferenza sostenuta, llama.cpp compilato dai sorgenti con i flag NEON e dotprod resta più rapido del 10-20% circa rispetto a Ollama; Ollama conviene per prototipare in fretta. Il modello è un GGUF quantizzato scaricato da Hugging Face. Il sistema operativo è Raspberry Pi OS a 64 bit — la versione di marzo 2024 ha migliorato di parecchio le prestazioni di inferenza rispetto alle build precedenti (benchmark aidatatools).
Ecco le velocità misurate su Pi 5 8 GB, sola CPU, che fissano cosa è realistico:
- modelli da 1-2B in
Q4: decine di token al secondo, usabili in tempo reale; - Phi-3 mini 3,8B in
Q4_K_M: circa 4-6 token al secondo, accettabile per risposte brevi e compiti strutturati; - modelli da 7-8B in
Q4: sotto i 2 token al secondo, sotto la soglia di usabilità interattiva (benchmark indipendenti su Pi 5 8 GB).
Questi numeri vanno letti per compito, non per chat. A 4-6 token al secondo un modello da 3,8B classifica un’email, estrae i campi da un documento, instrada una richiesta o riassume un paragrafo in tempi di servizio accettabili. Non regge una conversazione lunga, e non deve farlo.
Punto critico
Il vincolo che domina è la memoria, non il calcolo. Il modello deve stare in RAM insieme alla cache di contesto, che cresce con la lunghezza della finestra; gli 8 GB del Pi 5 fissano un tetto pratico intorno ai 4B di parametri in Q4, se si vuole un contesto non banale e margine per il resto del sistema. La scheda da 4 GB ha senso solo per i modelli più piccoli e con contesti corti.
Da qui scende una scelta di progetto: il Pi non è il posto dove far girare un grosso modello generalista, ma dove far girare il modello più piccolo che risolve un compito preciso. Sui benchmark accademici Phi-3 mini ottiene risultati confrontabili con Mixtral 8x7B e GPT-3.5 (Microsoft Research, Phi-3 Technical Report) — un’affermazione da verificare sul proprio dominio, perché i benchmark generici predicono male la resa su un compito ristretto. La validazione si fa sui dati reali del caso d’uso, non sui punteggi pubblicati.
C’è poi un costo nascosto: la quantizzazione Q4 degrada la qualità rispetto al modello a piena precisione, in misura che dipende dal compito. Per classificazione ed estrazione il calo è spesso trascurabile; per il ragionamento a più passi si vede di più. Va misurato, non dato per scontato.
Implicazioni
Spostare l’inferenza sul dispositivo cambia il profilo di conformità ancora prima del codice. Sotto il GDPR, un trattamento che avviene tutto in locale non genera trasferimento a terzi né, se non c’è connettività, trasferimento internazionale: due delle voci più care di un’analisi dei rischi spariscono per costruzione. Resta tutto il resto — base giuridica, informativa, minimizzazione, diritti dell’interessato — ma il confine del trattamento coincide con un oggetto fisico che si può ispezionare.
Gli scenari dove questo pesa sono quelli in cui il dato non può uscire per vincolo, non per preferenza: studi medici e legali, dispositivi in ambienti senza rete affidabile, sensoristica che produce testo da non centralizzare, archivi documentali su cui fare ricerca conversazionale senza esporli. Lo stesso Pi può ospitare la pipeline completa offline — whisper.cpp per la trascrizione, un modello piccolo per la comprensione, Piper per la sintesi vocale — senza che nulla raggiunga un server.
Limiti
Questa configurazione regge per compiti ristretti e a basso volume. Non sostituisce l’inferenza su GPU per modelli medi o per carichi concorrenti: un singolo Pi serve un utente alla volta a pochi token al secondo. La latenza del primo token su un 3,8B è di qualche secondo, accettabile per un’interazione asincrona e fastidiosa per una sincrona. E il fatto che il dato resti locale non rende il sistema conforme da solo: toglie una categoria di rischio, non l’obbligo di governare le altre. Verificare che il modello quantizzato faccia il suo lavoro sul dominio reale resta la parte di lavoro che nessun benchmark pubblicato può sostituire.
- https://www.microsoft.com/en-us/research/publication/phi-3-technical-report-a-highly-capable-language-model-locally-on-your-phone/
- https://azure.microsoft.com/en-us/blog/introducing-phi-3-redefining-whats-possible-with-slms/
- https://www.raspberrypi.com/products/raspberry-pi-5/
- https://github.com/ggerganov/llama.cpp
- https://ollama.com/library/phi3
- https://github.com/ggerganov/whisper.cpp
- https://www.noze.it/insights/raspberry-pi-edge-ai-ollama/
Immagine di copertina: Scheda Raspberry Pi 5 vista dall’alto: circuito stampato verde con il SoC quadrato, slot per due connettori a nastro, porte USB e… — foto di SimonWaldherr, CC BY 4.0 — https://commons.wikimedia.org/wiki/File:Raspberry_Pi_5.jpg