RICERCA
Incredibile ma vero! Large Language Model in locale su Raspberry Pi
I nuovi sviluppi tecnologici in termini di distillazione e quantizzazione, abbinati a tecniche sofisticate di addestramento, hanno democratizzato in modo incredibile la tecnologia dei LLM. Con circa 200 euro di investimento possiamo fare self-hosting di modelli state of the art.
Sembra un tempo lontano, ma soltanto due anni e mezzo fa siamo stati tutti rapiti dall’avvento di ChatGPT, il primo chatbot basato su un Large Language Model ad essere gratuitamente reso accessibile su scala planetaria.
Per la prima volta nella storia, il termine Intelligenza Artificiale è stato inequivocabilmente associato a qualcosa di artificiale che assumeva comportamenti umani.
Da subito è apparso chiaro che dietro questa nuova meraviglia c’erano investimenti mostruosi e che l’esecuzione di questi potentissimi software richiedeva cubature da hangar aeronautici per ospitare i relativi server.
Il tempo è passato veloce e l’IA generativa è entrata a far parte delle nostre abitudini. Prodotti come ChatGPT, Claude e Gemini sono oggi compagni di lavoro, studio e tempo libero, come lo sono i social network, i motori di ricerca Internet e i siti di commercio elettronico.
Anche Meta, ex Facebook, dopo il sostanziale flop del Metaverso — anticipazione di un futuro che non c’è mai stato, e di cui nessuno parla più — ha lanciato nel febbraio 2023 il suo LLM, chiamato Llama, sparigliando lo scenario di mercato con la scelta di rendere il modello open source.
Meno di due anni fa, fantasticavamo di scenari futuri in cui i modelli open source come Llama sarebbero stati comunemente installati sugli ambienti on premise dei nostri clienti o sui cloud privati, senza dover inviare dati a provider terzi come OpenAI, Google o Anthropic.
In realtà Meta aveva appena lanciato una nuova importante rivoluzione, che in pochissimo tempo avrebbe ribaltato lo scenario, in un contesto di mercato ormai maturo e senza il clamore della ribalta mediatica.
Nel momento in cui scriviamo questo articolo il self hosting dei LLM non solo è possibile, ma non richiede affatto investimenti impegnativi.
Come vi dimostreremo fra poco, la virtuosa convergenza di una serie di trend tecnologici ha reso possibile sviluppare applicazioni di tipo agentico — cioè il cui comportamento è governato dall’IA — utilizzando infrastrutture di tipo convenzionale, appena potenziate dall’impiego delle moderne GPU a basso consumo.
Se poi il nostro ambito di interesse è limitato alla ricerca e sviluppo, l’hardware necessario può essere veramente economico.
Quanto economico?
Se proprio vogliamo esagerare, possiamo provare a sfidare le capacità dei più recenti LLM che sfruttano tecniche avanzate e sofisticate di distillazione, quantizzazione e reasoning per restare veramente leggeri.
Partiamo quindi proprio dall’investimento.
Ecco la nostra lista della spesa, con tanto di scontrino dell’ordine che abbiamo effettuato sul sito dei nostri amici di Melopero, per un totale di 222,19 euro, IVA inclusa.
Se volete replicare il nostro esperimento, ecco quello di cui avrete bisogno:
- una scheda Raspberry Pi 5, possibilmente il nuovo modello da 16 GB di RAM, perché i LLM vivono nella RAM e non si chiamano LARGE per caso;
- un’unità di storage di massa veloce e capiente come la SSD da 512 GB e relativo kit per la connessione;
- il cooler ufficiale della Raspberry Pi 5, perché i LLM hanno l’abitudine di fare addizioni e sottrazioni a rotta di collo scaldando di brutto la CPU;
- un buon alimentatore USB-C, tipo quello ufficiale da 45W, perché se vi mettete a fare esperimenti con l’IA il sospetto che non siate proprio dei fan di Greta è legittimo;
- un monitor HDMI, che sicuramente già avrete;
- una tastiera da PC, che sicuramente già avrete;
- un mouse da PC, che sicuramente già avrete.
Una volta ricevuto l’hardware, possiamo iniziare ad assemblare il kit.
Per prima cosa deve essere installato il cooler. L’operazione è abbastanza intuitiva anche senza ricorrere alle istruzioni ufficiali sul sito Raspberry Pi. L’unica criticità è il collegamento del connettore di alimentazione e controllo.
Una volta montato il cooler, possiamo passare ad assemblare il kit Pi SSD, montando l’estensore dei contatti GPIO e i distanziatori.
Le istruzioni ufficiali sul sito Raspberry Pi in questo caso sono raccomandabili, anche perché spiegano come trattare il collegamento del delicato connettore PCI.
La Raspberry Pi 5 consente l’installazione del sistema operativo in modalità over the network, per cui non serve avere una SD su cui precaricare l’immagine — come siamo abituati a fare dai tempi della Raspberry Pi 1 — ma è sufficiente collegare la scheda a una presa LAN mediante un cavo Ethernet, e collegare monitor, mouse e tastiera per poi avviare la scheda inserendo lo spinotto dell’alimentatore USB-C.
Il firmware della scheda si accorgerà dell’assenza di device di boot e avvierà lo scarico del software ufficiale di “image writer” che permetterà di scaricare l’immagine del sistema operativo sulla SSD, creando automaticamente la partizione di boot.
Una volta che l’utility Image Writer sarà stata scaricata e avviata, è opportuno configurare da subito il sistema operativo, immettendo il fuso orario, il layout di tastiera e le credenziali per la connessione Wi-Fi, in modo da risparmiarci la successiva configurazione dopo il primo boot.
Nel nostro caso abbiamo anche attivato il protocollo SSH per poterci connettere da un PC e reimpostato la password dell’utente di default pi al valore raspberry, senza quindi personalizzare il valore di default in considerazione del fatto che la useremo a mo’ di giocattolo: la probabilità di dimenticare la password ci è sembrata cosa più preoccupante della protezione da improbabili attacchi di hacker russi.
Una volta completata l’installazione del S.O. — ovviamente avremo scelto quello ufficiale a 64 bit — possiamo fare il login (dal desktop o da un terminale remoto) e procedere con l’installazione di Ollama.
Cos’è Ollama?
Ollama è un software open source che consente di far girare e utilizzare in locale i modelli LLM disponibili in regime open source.
Infatti, anche se da repository come Hugging Face è possibile scaricare i modelli, dal download alla possibilità di invocarne le funzioni di inferenza — magari mediante API REST — ce ne corre.
Teoricamente dovremmo scrivere un bel po’ di software per configurare la struttura della rete neurale che sarà inizializzata con i parametri del modello scaricato e per orchestrare le funzionalità di inferenza.
Ollama è già tutto questo. Lo installiamo e con estrema facilità scarichiamo i LLM dal suo repository ufficiale e li facciamo girare esponendo delle API belle e pronte, in stile OpenAI.
Per installare questa piccola meraviglia, è sufficiente aprire un terminale e digitare:
curl -fsSL https://ollama.com/install.sh | sh
La procedura di installazione creerà un servizio systemd che lancerà il server a ogni reboot della Raspberry Pi.
Per utilizzare Ollama da linea di comando si utilizza il client ollama.
Con il comando ollama run nome-modello è possibile eseguire in locale un modello. Se il modello non è già presente in locale verrà automaticamente scaricato prima di essere eseguito.
Sul sito di Ollama, ovviamente, ci sono tutte le istruzioni — ma soprattutto c’è la pagina di consultazione del catalogo dei modelli già pronti.
A questo punto possiamo cominciare a sperimentare.
Il nostro suggerimento è quello di provare ad utilizzare i modelli più recenti di tipo reasoning, con un numero di parametri non superiore a 8B (8 miliardi) e con quantizzazione a 4 o 8 bit.
L’effetto sorpresa è assicurato!
Lavorare a riga di comando offre già delle soddisfazioni, ma ormai siamo abituati alle interfacce web da chatbot tipo ChatGPT.
Fortunatamente, nel mondo dei LLM open source esiste una versione open source anche di questa celebre interfaccia: abbiamo proseguito il nostro esperimento installando Open WebUI.
Per farlo, dovrete creare e attivare un ambiente virtuale Python con comandi del tipo:
python3 -m venv openwebui-env
source openwebui-env/bin/activate
e quindi installarlo con il comando:
pip install open-webui
Per lanciare il server Open WebUI il comando è:
open-webui serve
Di default, il server sarà accessibile su http://indirizzo-ip-della-raspberry:8080 dal browser di un qualunque PC collegato alla stessa rete LAN della scheda Raspberry.
A questo punto, l’esperienza sarà quella in stile ChatGPT: nel menù della schermata potrete scegliere il modello da una lista che riporterà tutti i modelli scaricati in locale da Ollama.
Nella schermata che abbiamo riportato sopra è possibile vedere uno stralcio di una delle nostre conversazioni con il recentissimo modello Qwen3 rilasciato da Alibaba, nella versione da 1.7 miliardi di parametri, quantizzato a 4 bit.
Nonostante la sua piccola — si fa per dire — taglia, risolve brillantemente quesiti di logica, geometria e algebra, con prestazioni che si avvicinano ai più blasonati modelli state of the art di grandi dimensioni.
A questo punto si aprirebbe una discussione interessante sulle opportunità che questo nuovo scenario tecnologico offre, ma il problema è ampio e lo rimandiamo a un articolo successivo.
Per adesso limitiamoci a osservare quanto segue:
- abbiamo speso 222,19 euro che, tolta l’IVA, equivalgono a un “investimento” di circa 182 euro;
- il cooler ufficiale della Raspberry Pi 5 gira a tutta velocità e avvicinandosi alla scheda si percepisce l’emissione di aria tiepida, ma in fondo stiamo consumando non più di 45 W/h, il che ci riconcilia un pochino con Greta;
- riusciamo a generare inferenza con risultati di reale interesse pratico, in modo fluido, con velocità di diverse decine di token al secondo;
- non stiamo mandando in giro i nostri preziosi e riservatissimi prompt, poiché potremmo anche staccare la connessione Internet per convincerci, qualora ce ne fosse bisogno, che il tutto avviene nel privato della nostra LAN.
Benvenuti nel fantastico mondo del self hosting.