Le intelligenze artificiali sono ormai entrate nel workflow di migliaia di imprese e privati in tutto il mondo. Applicativi e tool come ChatGPT permettono infatti di snellire ed agevolare il lavoro di numerosi professionisti, non solo nell'ambito dello sviluppo software ma per tantissimi altri settori.
Le AI, per come oggi sono progettate, non vanno quindi a sostituire il lavoro delle persone ma si configurano come strumenti che ne migliorano la produttività, velocizzando il flusso lavorativo e semplificando le operazioni quotidiane, soprattutto quelle ripetitive o magari i task più semplici che possono ormai essere demandanti.
Si tratta quindi di una naturale evoluzione degli strumenti informatici. Questo fenomeno però si porta dietro una serie di implicazioni inerenti alla privacy. Per funzionare correttamente infatti ChatGPT ed altri servizi del genere hanno bisogno di funzionare su server dedicati e dunque ad operare in remoto, senza che quindi l'utente finale abbia la possibilità di sapere dove e come i propri dati vengono elaborati e conservati.
Ollama: un framework per gli LLM locali
Proprio per questo motivo negli anni sono nate diverse opzioni per eseguire LLM (Large Language Model) in locale. Tale aspetto consente di sfruttare i vantaggi delle AI senza dover dipendere da servizi in abbonamento e senza dare accesso ai propri dati alle compagnie che forniscono i servizi.
Nella guida di oggi vogliamo parlavi di Ollama. Questo framework è stato realizzato per eseguire in locale diversi AI model open source. Il tool gestisce automaticamente il download e l'esecuzione dei diversi LLM. Oltretutto dispone di un set di API per interfacciarsi con altre utility.
Scopriremo quindi come eseguire un modello generativo con Ollama tramite Raspberry Pi. La piccola board ARM low-cost è infatti il device ideale per sperimentare con gli LLM locali.
Requisiti hardware
Dovendo operare con LLM anche molto pesanti il nostro consiglio è di optare per l'edizione più recente della board ARM, quindi il Raspberry Pi 5 è di fatto una scelta obbligatoria per questo progetto.
Inoltre, se preferiamo non gestire il tutto tramite SSH, è necessario avere sottomano varie periferiche tra cui mouse, tastiera, monitor, cavi ethernet ed USB-C. Oltre ad una microSD per il sistema operativo ed i relativi applicativi.
Installazione e configurazione di Raspberry Pi OS
Diamo inizio alla guida scaricando il programma Raspberry Pi Imager. Tale software è un alleato prezioso per tutti coloro che sono alle prime armi con Linux e più in generale con Raspberry Pi. Questo imaging tool semplifica notevolmente il processo di configurazione e flash della distribuzione Raspberry Pi OS.
Eseguiamo Raspberry Pi Imager, clicchiamo poi su "Choose Device" e scegliamo il modello della board che intendiamo usare. Con "Choose OS" selezioniamo la versione di Raspberry Pi OS a 64bit e successivamente, da "Choose Storage", impostiamo la nostra microSD.
Pigiamo ora su "Next". Il programma ci porta ad un prompt da cui scegliere se configurare alcuni aspetti della distribuzione oppure avviarla con dei setting standard. Clicchiamo quindi su "EDIT SETTING" ed impostiamo l'accesso tramite SSH, un hostname, la time zone ed il keyboard layout.
Confermiamo le modifiche tramite il tasto "YES" e attendiamo il termine della procedura. Fatto questo scolleghiamo la microSD dal PC ed inseriamola all'interno della board ARM. Infine colleghiamo il tutto all'alimentazione.
Installazione di Ollama su Raspberry Pi OS
Ora siamo pronti per installare e configurare Ollama su Raspberry Pi OS. Prima di tutto assicuriamoci che tutti i pacchetti software presenti nella distribuzione siano aggiornati alle ultime release stabili. Per farlo possiamo rivolgerci ad APT, il gestore dei pacchetti di riferimento di Raspberry Pi OS, ed alla sua CLI. Apriamo la shell e digitiamo:
sudo apt update && sudo apt upgrade -y
Attendiamo che il sistema effettui i dovuti controlli nei repository software e, dopo aver eseguito tutto gli upgrade necessari, se non fosse già presente nel sistema andiamo ad installare curl sempre tramite APT:
sudo apt install curl
curl ci consente infatti di scaricare l'installer di Ollama. Quindi eseguiamo il download ed iniziamo l'installazione:
curl -fsSL https://ollama.com/install.sh | sh
Nel caso in cui l'installer non dovesse autoavviarsi digitiamo:
sudo sh install.sh
Per verificare che tutto sia andato a buon fine possiamo visualizzare la release di Ollama presente nel sistema:
ollama --version
Come output dovremmo ottenere in bash qualcosa di simile:
ollama version is X.Y.ZH
Eseguire LLM con Ollama su Raspberry Pi OS
Utilizzare Ollama non è complicato, il tool nasce proprio per semplificare dei processi che sarebbe complesso effettuare manualmente. Ci teniamo a specificare che questa guida ha uno scopo didattico, non bisogna infatti aspettarsi prestazioni eccezionali da Raspberry Pi, in special modo con gli LLM più impegnativi. Tuttavia è sicuramente interessante iniziare a sperimentare con Ollama sfruttando questo piccolo device.
Partiamo ad esempio eseguendo Phi3, un LLM realizzato dal team di Microsoft. Torniamo nella shell e scriviamo:
ollama run phi3
Dopo il download e la configurazione si possono porre delle domande a Phi3. Si tratta infatti di un model addestrato proprio per eseguire delle ricerche.
Un altro LLM compatibile con Ollama è TinyLlama:
ollama run tinyllama
Anche in questo caso si può iniziare ad utilizzare questo LLM semplicemente scrivendo le nostre richieste come se si trattasse del più famoso ChatGPT.
Interfacciare curl con Ollama
Una delle feature più interessanti di Ollama è il suo set di API che gli consente di interagire con una serie di applicativi. Ad esempio si può connettere curl con Ollama in modo da generare delle risposte ai comandi usando dei modelli specifici.
Possiamo poi sfruttare curl perché si interfacci in remoto con Ollama che resta in esecuzione su Raspberry Pi. Questo per far si che risponda alle nostre domande e ci fornisca un output dettagliato del lavoro svolto dall'LLM:
curl http://192.168.1.12:11434/api/generate -d '{
"model": "tinyllama",
"prompt": "What is the euro area?",
"stream": false
}'
Con tale comando abbiamo indicato a curl di connettersi con Ollama che opera sull'IP locale 192.168.1.12:11434
e usare il modello TinyLlama. Abbiamo poi chiesto "Che cosa è l'eurozona?".
Infine nello script è presente un comando, stream:false
, che indica a curl di attendere nel mostrare l'output di Ollama finché l'LLM non ha terminato l'operazione.