Esecuzione di LLM e VLM locali sul Raspberry Pi |  di Pye Sone Kyaw |  Gennaio 2024

 | Intelligenza-Artificiale

Ottieni modelli come Phi-2, Mistral e LLaVA in esecuzione localmente su un Raspberry Pi con Ollama

Ospita LLM e VLM utilizzando Ollama sul Raspberry Pi – Fonte: Autore

Hai mai pensato di eseguire i tuoi modelli linguistici di grandi dimensioni (LLM) o modelli linguistici visivi (VLM) sul tuo dispositivo? Probabilmente l’hai fatto, ma il pensiero di impostare le cose da zero, dover gestire l’ambiente, scaricare i pesi giusti del modello e il dubbio persistente sul fatto che il tuo dispositivo possa gestire il modello probabilmente ti hanno fatto riflettere.

Facciamo un ulteriore passo avanti. Immagina di gestire il tuo LLM o VLM su un dispositivo non più grande di una carta di credito: un Raspberry Pi. Impossibile? Affatto. Voglio dire, dopotutto sto scrivendo questo post, quindi è sicuramente possibile.

Possibile, sì. Ma perché dovresti farlo?

I LLM ai margini sembrano piuttosto inverosimili in questo momento. Ma questo particolare caso d’uso di nicchia dovrebbe maturare nel tempo e vedremo sicuramente alcune interessanti soluzioni edge implementate con una soluzione di intelligenza artificiale generativa completamente locale in esecuzione sul dispositivo all’edge.

Si tratta anche di superare i limiti per vedere cosa è possibile. Se può essere fatto a questo estremo della scala di calcolo, allora può essere fatto a qualsiasi livello compreso tra un Raspberry Pi e una GPU server grande e potente.

Tradizionalmente, l’intelligenza artificiale edge è stata strettamente collegata alla visione artificiale. Esplorare l’implementazione di LLM e VLM nell’edge aggiunge una dimensione entusiasmante a questo campo che sta appena emergendo.

Soprattutto, volevo solo fare qualcosa di divertente con il mio Raspberry Pi 5 recentemente acquistato.

Quindi, come possiamo ottenere tutto questo su un Raspberry Pi? Usando Ollama!

Cos’è Ollama?

Essere è emerso come una delle migliori soluzioni per eseguire LLM locali sul proprio personal computer senza dover affrontare il fastidio di impostare le cose da zero. Con pochi comandi è possibile configurare tutto senza problemi. Tutto è autonomo e funziona meravigliosamente nella mia esperienza su diversi dispositivi e modelli. Espone anche un’API REST per l’inferenza del modello, quindi puoi lasciarla in esecuzione sul Raspberry Pi e chiamarla dalle altre applicazioni e dispositivi, se lo desideri.

Il sito web di Ollama

C’è anche Interfaccia utente Web di Ollama che è un bellissimo pezzo di UI/UX AI che funziona perfettamente con Ollama per chi è preoccupato per le interfacce della riga di comando. È fondamentalmente un’interfaccia ChatGPT locale, se vuoi.

Insieme, questi due software open source forniscono quella che ritengo sia la migliore esperienza LLM ospitata localmente in questo momento.

Sia Ollama che Ollama Web UI supportano anche VLM come LLaVA, il che apre ancora più porte per questo caso d’uso di IA generativa edge.

Requisiti tecnici

Tutto ciò di cui hai bisogno è quanto segue:

  • Raspberry Pi 5 (o 4 per una configurazione meno rapida): scegli la variante da 8 GB di RAM per adattarla ai modelli 7B.
  • Scheda SD: minimo 16 GB, maggiore è la dimensione, maggiore è il numero di modelli che puoi inserire. Avere già caricato un sistema operativo appropriato come Raspbian Bookworm o Ubuntu
  • Una connessione Internet

Come ho detto prima, eseguire Ollama su un Raspberry Pi è già vicino all’estremità estrema dello spettro hardware. In sostanza, qualsiasi dispositivo più potente di un Raspberry Pi, a condizione che esegua una distribuzione Linux e abbia una capacità di memoria simile, dovrebbe teoricamente essere in grado di eseguire Ollama e i modelli discussi in questo post.

1. Installazione di Ollama

Per installare Ollama su un Raspberry Pi, eviteremo di utilizzare Docker per risparmiare risorse.

Nel terminale, corri

curl https://ollama.ai/install.sh | sh

Dovresti vedere qualcosa di simile all’immagine qui sotto dopo aver eseguito il comando sopra.

Fonte: Autore

Come dice l’output, vai a 0.0.0.0:11434 per verificare che Ollama sia in esecuzione. È normale che venga visualizzato il messaggio “AVVERTIMENTO: nessuna GPU NVIDIA rilevata”. Ollama verrà eseguito in modalità solo CPU.’ poiché stiamo utilizzando un Raspberry Pi. Ma se stai seguendo queste istruzioni su qualcosa che dovrebbe avere una GPU NVIDIA, qualcosa non è andato per il verso giusto.

Per eventuali problemi o aggiornamenti fare riferimento al Repository GitHub di Ollama.

2. Esecuzione di LLM tramite la riga di comando

Dare un’occhiata a la libreria di modelli ufficiale Ollama per un elenco di modelli che possono essere eseguiti utilizzando Ollama. Su un Raspberry Pi da 8 GB, i modelli più grandi di 7B non si adattano. Usiamo Phi-2, un LLM da 2,7 miliardi di Microsoft, ora sotto licenza MIT.

Utilizzeremo il modello Phi-2 predefinito, ma sentiti libero di utilizzare uno qualsiasi degli altri tag trovati Qui. Dai un’occhiata a pagina del modello per Phi-2 per vedere come puoi interagire con esso.

Nel terminale, corri

ollama run phi

Quando vedi qualcosa di simile all’output seguente, hai già un LLM in esecuzione sul Raspberry Pi! È così semplice.

Fonte: Autore
Ecco un’interazione con Phi-2 2.7B. Ovviamente, non otterrai lo stesso risultato, ma hai l’idea. | Fonte: Autore

Puoi provare altri modelli come Mistral, Llama-2, ecc., Assicurati solo che ci sia spazio sufficiente sulla scheda SD per i pesi del modello.

Naturalmente, più grande è il modello, più lento sarà il risultato. Su Phi-2 2.7B riesco a ottenere circa 4 token al secondo. Ma con un Mistral 7B la velocità di generazione scende a circa 2 gettoni al secondo. Un token equivale più o meno a una singola parola.

Ecco un’interazione con Mistral 7B | Fonte: Autore

Ora abbiamo LLM in esecuzione sul Raspberry Pi, ma non abbiamo ancora finito. Il terminale non è per tutti. Mettiamo in funzione anche l’interfaccia utente Web di Ollama!

3. Installazione ed esecuzione dell’interfaccia utente Web di Ollama

Seguiremo le istruzioni sul repository ufficiale GitHub dell’interfaccia utente Web di Ollama per installarlo senza Docker. Si raccomanda che Node.js sia almeno >= 20.10, quindi lo seguiremo. Raccomanda inoltre che Python sia almeno 3.11, ma il sistema operativo Raspbian lo ha già installato per noi.

Dobbiamo prima installare Node.js. Nel terminale, corri

curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - &&\
sudo apt-get install -y nodejs

Se necessario, modificare la 20.x con una versione più appropriata per i futuri lettori.

Quindi esegui il blocco di codice riportato di seguito.

git clone https://github.com/ollama-webui/ollama-webui.git
cd ollama-webui/

# Copying required .env file
cp -RPp example.env .env

# Building Frontend Using Node
npm i
npm run build

# Serving Frontend with the Backend
cd ./backend
pip install -r requirements.txt --break-system-packages
sh start.sh

Si tratta di una leggera modifica rispetto a quanto fornito su GitHub. Tieni presente che per semplicità e brevità non stiamo seguendo le migliori pratiche come l’utilizzo di ambienti virtuali e stiamo utilizzando il flag — break-system-packages. Se riscontri un errore come uvicorn non trovato, riavvia la sessione del terminale.

Se tutto va correttamente, dovresti essere in grado di accedere all’interfaccia utente Web di Ollama sulla porta 8080 tramite http://0.0.0.0:8080 sul Raspberry Pi o tramite http://:8080/ se si accede tramite un altro dispositivo sulla stessa rete.

Se vedi questo, sì, ha funzionato | Fonte: Autore

Una volta creato un account ed effettuato l’accesso, dovresti vedere qualcosa di simile all’immagine qui sotto.

Fonte: Autore

Se in precedenza avevi scaricato alcuni pesi del modello, dovresti vederli nel menu a discesa come di seguito. In caso contrario, puoi andare alle impostazioni per scaricare un modello.

I modelli disponibili appariranno qui | Fonte: Autore
Se desideri scaricare nuovi modelli, vai su Impostazioni > Modelli per estrarre i modelli | Fonte: Autore

L’intera interfaccia è molto pulita e intuitiva, quindi non spiegherò molto al riguardo. È davvero un progetto open source molto ben fatto.

Ecco un’interazione con Mistral 7B tramite Ollama Web UI | Fonte: Autore

4. Esecuzione di VLM tramite l’interfaccia utente Web di Ollama

Come ho detto all’inizio di questo articolo, possiamo anche eseguire VLM. Eseguiamo LLaVA, un popolare VLM open source supportato anche da Ollama. Per fare ciò, scarica i pesi selezionando “llava” attraverso l’interfaccia.

Sfortunatamente, a differenza degli LLM, la configurazione richiede un po’ di tempo per interpretare l’immagine sul Raspberry Pi. L’elaborazione dell’esempio seguente ha richiesto circa 6 minuti. La maggior parte delle volte è probabilmente dovuta al fatto che l’aspetto dell’immagine non è ancora adeguatamente ottimizzato, ma questo cambierà sicuramente in futuro. La velocità di generazione dei token è di circa 2 token/secondo.

Origine immagine della query: Pexels

Per concludere il tutto

A questo punto abbiamo praticamente finito con gli obiettivi di questo articolo. Per ricapitolare, siamo riusciti a utilizzare Ollama e Ollama Web UI per eseguire LLM e VLM come Phi-2, Mistral e LLaVA sul Raspberry Pi.

Posso sicuramente immaginare parecchi casi d’uso per LLM ospitati localmente in esecuzione sul Raspberry Pi (o un altro piccolo dispositivo edge), soprattutto perché 4 token/secondo sembrano una velocità accettabile con lo streaming per alcuni casi d’uso se stiamo cercando modelli delle dimensioni di Phi-2.

Il campo dei “piccoli” LLM e VLM, chiamati in qualche modo paradossalmente data la loro designazione “grande”, è un’area di ricerca attiva con parecchi modelli recentemente rilasciati. Speriamo che questa tendenza emergente continui e che continuino a essere rilasciati modelli più efficienti e compatti! Sicuramente qualcosa da tenere d’occhio nei prossimi mesi.

Disclaimer: Non ho alcuna affiliazione con Ollama o Ollama Web UI. Tutti i punti di vista e le opinioni sono miei e non rappresentano alcuna organizzazione.

Fonte: towardsdatascience.com

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *