Edge AI · intermedio

Si può far girare un LLM su un Raspberry Pi?

Cosa entra nella RAM di un Raspberry Pi, come aiuta la quantizzazione, llama.cpp o Ollama, cosa accelerano gli AI HAT Hailo e gli usi realistici nell'IoT.

Close-up of a computer board in the dark

Foto: Vishnu Mohanan / Unsplash

Dopo aver letto questo articolo saprai:

  • Stimare se un modello linguistico entra nella memoria di un Raspberry Pi a partire da parametri e quantizzazione
  • Scegliere tra llama.cpp, Ollama e l'AI HAT+ 2, e sapere cosa non può fare l'AI HAT+ pensato per la visione
  • Individuare i compiti IoT in cui un modello locale lento è utile e quelli in cui è lo strumento sbagliato
In questa pagina
  1. Cosa entra nella memoria di un Raspberry Pi?
  2. Quanto costa la quantizzazione?
  3. llama.cpp od Ollama?
  4. Cosa accelerano l’AI HAT+ e l’AI Kit?
  5. Dove aiuta un LLM locale nell’IoT?
  6. Quando il modello deve girare altrove?
  7. Per continuare

Sì, entro certi limiti. Un Raspberry Pi 5 può eseguire piccoli modelli linguistici di grandi dimensioni (LLM) interamente sulla CPU con llama.cpp od Ollama, purché il modello sia quantizzato per entrare nella RAM, che il Raspberry Pi 5 offre in tagli da 1 a 16 GB. Modelli da qualche miliardo di parametri a 4 bit entrano in una scheda da 8 o 16 GB; la generazione però è abbastanza lenta da rendere il Pi adatto a compiti brevi e non urgenti più che a una chat che sembri istantanea. L’AI HAT+ orientato alla visione non aiuta affatto con i modelli linguistici; il più recente AI HAT+ 2 sì.

Questa guida spiega come capire cosa ci sta, cosa sacrifica la quantizzazione, in cosa differiscono i due runtime più usati, cosa accelerano davvero le schede acceleratrici AI di Raspberry Pi e dove un modello locale si guadagna il suo posto in un sistema IoT. Non riporta valori di velocità: dipendono da modello, quantizzazione, lunghezza del contesto e versione del software, e l’unico numero affidabile è quello che misuri sulla tua scheda.

Cosa entra nella memoria di un Raspberry Pi?

Si parte dall’aritmetica. I pesi di un modello occupano all’incirca il numero di parametri per i bit per peso, diviso otto, in byte. Un modello da 1 miliardo di parametri richiede circa 2 GB a 16 bit, circa 1 GB a 8 bit e circa mezzo gigabyte a 4 bit, più un certo sovraccarico per i fattori di scala che la quantizzazione memorizza e per i livelli spesso tenuti a precisione più alta.

I pesi non sono tutto il conto. Durante l’inferenza il runtime tiene anche una cache chiave-valore che cresce con la lunghezza del contesto, quindi un prompt lungo, come una giornata di righe di log, richiede memoria in più rispetto ai pesi. E il Pi probabilmente fa anche altro: un sistema operativo, un broker MQTT, magari Home Assistant. Dimensiona il modello su ciò che resta dopo questi servizi, con un margine, non sul totale della scheda.

La memoria determina anche la velocità. Per produrre ogni token, un runtime su CPU legge dalla RAM praticamente tutti i pesi, quindi la velocità di generazione è limitata dalla banda di memoria più che dal numero di core, e un modello più grande è proporzionalmente più lento. Ecco perché la scelta realistica su un Pi è un modello piccolo, quantizzato, con un contesto breve.

Quanto costa la quantizzazione?

La quantizzazione memorizza ogni peso con meno bit. Il progetto llama.cpp supporta la quantizzazione intera a 1,5 bit e a 2, 3, 4, 5, 6 e 8 bit, e memorizza i modelli in GGUF, un formato a file singolo che contiene i pesi e tutto ciò che serve per caricarli.

Meno bit significano un file più piccolo, meno memoria e una generazione più veloce, al prezzo della precisione. La perdita cresce al ridursi dei bit, e i modelli piccoli, con meno ridondanza per assorbirla, tendono a soffrirne più di quelli grandi. Per un compito IoT la prova è pratica: passa i tuoi prompt attraverso due o tre livelli di quantizzazione e confronta le risposte, invece di affidarti a un benchmark generico.

llama.cpp od Ollama?

Entrambi eseguono modelli quantizzati sulla CPU Arm a 64 bit del Pi. Differiscono per quanto decidono al posto tuo.

llama.cpp è, nelle parole del suo README, un’implementazione in C/C++ semplice e senza dipendenze. Offre il massimo controllo: scegli il file GGUF esatto, il numero di thread e la dimensione del contesto. Il suo llama-server espone un’API HTTP compatibile con OpenAI, così il codice client esistente può puntare al Pi.

Ollama riunisce download, archiviazione e servizio dei modelli dietro un solo comando, con una build per Linux ARM64. La sua API HTTP ascolta per impostazione predefinita sulla porta 11434 della macchina locale, come spiegano le sue FAQ, e con un’impostazione può essere aperta alla rete. L’integrazione Ollama di Home Assistant usa quell’API come agente di conversazione; può controllare i dispositivi esposti ad Assist solo con modelli che supportano i tool, e la sua documentazione suggerisce di esporre meno di 25 entità.

Scegli llama.cpp quando vuoi regolare ogni parametro o integrare l’inferenza nel tuo programma; scegli Ollama quando vuoi un servizio che altri software in rete possano chiamare.

Cosa accelerano l’AI HAT+ e l’AI Kit?

Raspberry Pi vende schede aggiuntive con unità di elaborazione neurale (NPU) Hailo, e spesso si presume che velocizzino i modelli linguistici. La maggior parte non lo fa.

Secondo la documentazione dell’AI HAT+, l’AI HAT+ esiste in una versione da 13 TOPS basata sull’Hailo-8L e in una da 26 TOPS basata sull’Hailo-8. Entrambe usano la memoria del Pi 5 e sono pensate per reti di visione come il rilevamento di oggetti; il supporto a LLM e a modelli visione-linguaggio è indicato come non supportato. Il precedente AI Kit, un Hailo-8L sull’M.2 HAT+, è un acceleratore della stessa classe e, secondo la documentazione AI di Raspberry Pi, non è più in produzione.

L’AI HAT+ 2 è diverso. Monta un Hailo-10H da 40 TOPS (INT4) e ha 8 GB di memoria propria, e la documentazione dice che esegue LLM e modelli visione-linguaggio fino a circa 6 miliardi di parametri. I modelli sono serviti tramite hailo-ollama, un servizio REST del model zoo di AI generativa di Hailo. Poiché il modello sta nella memoria dell’HAT, la RAM del Pi resta libera per gli altri compiti del gateway. Tutte queste schede sono solo per il Pi 5.

I valori in TOPS descrivono la capacità di calcolo di picco a una data precisione, non la velocità di un modello linguistico, che dipende comunque dalla memoria e da quanto bene il modello è stato compilato per l’acceleratore. Prima di acquistare l’HAT verifica che il modello che ti serve sia disponibile.

Dove aiuta un LLM locale nell’IoT?

Un assistente vocale privato. La pipeline vocale locale di Home Assistant esegue riconoscimento e sintesi vocale sul tuo hardware. La documentazione riporta che Speech-to-Phrase, che riconosce un insieme fisso di comandi, trascrive in meno di un secondo su un Raspberry Pi 4, mentre il modello aperto Whisper lì impiega circa 8 secondi. Un LLM locale si inserisce dietro quella pipeline come ripiego per le richieste che i comandi fissi non coprono, non come primo stadio.

Riassunti di log ed eventi. Un job notturno può passare a un piccolo modello gli allarmi, gli eventi delle porte o i messaggi di errore della giornata raccolti dal broker e pubblicare un breve riepilogo. La velocità conta poco quando la risposta serve al mattino, e i dati non lasciano mai il sito.

Trasformare testo libero in dati strutturati. Note di manutenzione, descrizioni di ticket o commenti degli operatori possono essere classificati o etichettati in locale prima di entrare in un database.

È lo strumento sbagliato per anelli di controllo, decisioni di sicurezza e qualsiasi cosa richieda una risposta garantita corretta. Un modello linguistico può produrre errori con grande sicurezza, quindi tienilo in un ruolo consultivo, lasciando le commutazioni ad automazioni deterministiche. Per gli schemi ad agenti che agiscono davvero sui dispositivi, vedi Agenti AI per la smart home; per automazioni che funzionano senza alcun servizio cloud, vedi Automazione locale della smart home.

Quando il modello deve girare altrove?

Se le risposte devono arrivare in un secondo o due, o il compito richiede un modello più grande di qualche miliardo di parametri, metti il modello su una macchina con più banda di memoria nella stessa rete, come un piccolo PC o un box con GPU che esegue Ollama, e lascia che il Pi lo chiami. I dati restano comunque nel sito, e il Pi può continuare a fare ciò che fa bene come gateway Raspberry Pi.

Per continuare

Argomenti: LLM, Raspberry Pi, edge AI, quantizzazione, llama.cpp, Ollama

Diagramma