Intelligenza artificiale

Ollama: come eseguire modelli di AI generativa su più piattaforme



Indirizzo copiato

Ollama è un sistema che consente di sperimentare con i modelli di AI generativa senza troppo sforzo, permettendo la gestione e l’esecuzione di modelli di AI con applicazioni che spaziano dall’analisi di immagini alla generazione di codice. Ecco come funziona

Pubblicato il 21 mag 2024

Antonio Cisternino

Università di Pisa



ollama

Ormai è sempre più difficile tenere traccia dei modelli LLM o comunque generativi con annunci che continuamente spostano l’attenzione promettendo prestazioni mirabolanti (che spesso deludono nella realtà di tutti i giorni). È quindi importante cercare di capire come si possa familiarizzare l’esecuzione di questi modelli fino a realizzare sistemi autonomi completamente offline basati su AI generativa.

Mi sono avventurato lungo questa strada per assicurarmi che il sistema OpenSource che ho sviluppato (Oraculum) potesse funzionare anche offline, magari su dispositivi molto piccoli come, ad esempio, il nuovo Raspberry Pi 5.

Ollama - Local Models on your machine

Il progetto Ollama: una soluzione universale

Tra gli innumerevoli progetti open source capaci di eseguire modelli in vari formati troviamo uno decisamente degno di nota, capace di eseguire su tutte le piattaforme, da Windows a Mac, a Linux, e anche dal grande server fino al Raspberry Pi: ollama.

Il progetto, costruito sul motore di esecuzione di modelli basati sull’architettura Transformers llama.cpp, offre un’incredibile semplicità d’uso sia attraverso una command line che mediante una buona implementazione dell’API di OpenAI. Gli annunci sul sito si susseguono, recentemente è stato aggiunto il supporto per le schede grafiche AMD ed è in arrivo anche per la piattaforma embedded di nvidia Jetson, molto popolare nel settore della robotica.

Degno di nota è l’aggiunta recente del supporto per i modelli di embeddings, modelli molto popolari per calcolare i vettori che i Vector database come Weaviate usano per indicizzare i record; questa novità include non solo l’abilità di eseguire questa particolare tipologia di modelli ma anche l’aggiunta del supporto all’API compatibile con gli endpoint /v1/embeddings di OpenAI.

Come installare ollama

L’installazione del sistema è veramente semplice, su Windows e Mac si tratta di eseguire installer standard, mentre su Linux è sufficiente eseguire la seguente riga di comando:

curl -fsSL https://ollama.com/install.sh | sh

L’installer per linux funziona su tutte le piattaforme che ho provato, incluso Raspian, la variante del sistema operativo in esecuzione su Raspberry Pi. Se si vuole provare l’ebbrezza di eseguire un LLM su un piccolo dispositivo come il Raspberry si raccomanda comunque una versione con almeno 8GB di RAM altrimenti sarà la memoria a rappresentare il vero collo di bottiglia dell’esecuzione.

Al termine dell’installazione sarà disponibile un servizio sulla propria macchina che ascolta sulla porta TCP 11434 dell’indirizzo 127.0.0.1 (ovverosia è accessibile solo localmente). Il server supporta le API di OpenAI, è quindi possibile utilizzare una delle numerose librerie già disponibili per GPT e semplicemente cambiando l’indirizzo del servizio consentire l’esecuzione delle proprie applicazioni AI sulla macchina locale.

Usare ollama

Il funzionamento di ollama è molto semplice anche se richiede un po’ di familiarità con la riga di comando. La convenzione della command line (CLI) è quella a cui ci hanno abituato sistemi come docker: il comando accetta vari sottocomandi passati come argomenti alla linea di comando per poter operare. Se eseguiamo il comando ollama otteniamo naturalmente una breve descrizione dei comandi disponibili:

Il comando serve è di fatto avviato automaticamente e corrisponde al servizio di cui abbiamo già parlato. I comandi più utili sono quindi runpulllistrm che rispettivamente consentono di eseguire (e scaricare contestualmente qualora i file non siano disponibili localmente), scaricare, mostrare e rimuovere i modelli ottenuti dal catalogo online:

https://ollama.com/library

Quando si esegue un particolare modello (ad esempio mistral) è facile verificare l’uso delle risorse: sul mio laptop Windows con una GPU nVidia è facile vedere come un modello 7B stia all’interno della memoria video:

Siamo quindi pronti ad eseguire un modello e fornire il prompt a riga di comando:

L’esperienza che abbiamo maturato in pochi mesi rende abbastanza semplice formulare prompt che producano risposte interessanti e forniscano informazioni sul comportamento del particolare modello.

Come si può osservare anche la capacità di parlare italiano varia da modello a modello così come variano le sue prestazioni. Nell’esempio il prompt italiano è stato perfettamente compreso ma l’output è in inglese.

L’analisi delle immagini

Possiamo quindi passare il percorso a un’immagine jpeg da analizzare, come ad esempio la seguente:

L’analisi effettuata dal modello è decisamente impressionante, anche tenendo conto del fatto che si tratta di una foto che ho scattato e sicuramente non può essere parte dei dati di addestramento:

La generazione di codice

Oltre ai modelli orientati al linguaggio naturale, troviamo modelli come codellama, codegemmasqlcoder, ovverosia modelli addestrati per generare codice. È possibile utilizzare questi modelli per analizzare programmi, o generare nuovi programmi con una ragionevole qualità.

L’opzione –verbose del comando run consente di mostrare le statistiche di esecuzione che possono aiutare ad ottenere delle informazioni sulle prestazioni nel restituire il risultato.

È curioso come lo stesso modello possa rispondere sia in italiano che in inglese, e è facile osservare come i modelli più piccoli (in questo caso gemma 2B) tendano a rispondere in modo più fantasioso:

Le prestazioni su Raspberry Pi 5

L’esecuzione di ollama su Raspberry Pi assomiglia in tutto e per tutto a quella su un PC o su un server, anche se le prestazioni sono ovviamente inferiori rispetto ad altri sistemi. Il modello Gemma 2B esegue in modo sufficientemente rapido, nonostante l’esiguità delle risorse di calcolo disponibili. Se proviamo a caricare modelli più grandi le prestazioni degradano significativamente (ho testato su Raspberry Pi 5 con 8GB di RAM). È inoltre difficile eseguire sul Raspberry sia il modello che il codice che lo usa, per ora è quindi più realistica l’esecuzione su un “cluster” di Raspberry Pi piuttosto che su un sistema singolo: su un nodo viene eseguito il modello, mentre su un altro esegue il codice che mediante l’API usa i suoi servizi.

Conclusioni

Ollama è un sistema che consente di sperimentare con i modelli di AI generativa senza troppo sforzo. Grazie all’eccellente implementazione dell’API di OpenAI è possibile integrare modelli arbitrari in sistemi già scritti, consentendo la realizzazione di sistemi capaci di eseguire localmente.

Il framework supporta sempre più acceleratori per i calcoli (per ora non sono supportate le NPU che gli AI PC renderanno decisamente disponibili, ma ritengo si tratti solo di una questione di tempo). Grazie a progetti come questo è possibile sperimentare senza perdersi dietro ad incredibili quantità di documenti e righe di comando Python.

EU Stories - La coesione innova l'Italia

Tutti
Iniziative
Analisi
Iniziative
Parte la campagna di comunicazione COINS
Analisi
La politica di coesione europea: motore della transizione digitale in Italia
Politiche UE
Il dibattito sul futuro della Politica di Coesione
Mobilità Sostenibile
L’impatto dei fondi di coesione sul territorio: un’esperienza di monitoraggio civico
Iniziative
Digital transformation, l’Emilia-Romagna rilancia sulle comunità tematiche
Politche ue
Fondi Coesione 2021-27: la “capacitazione amministrativa” aiuta a spenderli bene
Finanziamenti
Da BEI e Banca Sella 200 milioni di euro per sostenere l’innovazione di PMI e Mid-cap italiane
Analisi
Politiche di coesione Ue, il bilancio: cosa ci dice la relazione 2024
Politiche UE
Innovazione locale con i fondi di coesione: progetti di successo in Italia
Iniziative
Parte la campagna di comunicazione COINS
Analisi
La politica di coesione europea: motore della transizione digitale in Italia
Politiche UE
Il dibattito sul futuro della Politica di Coesione
Mobilità Sostenibile
L’impatto dei fondi di coesione sul territorio: un’esperienza di monitoraggio civico
Iniziative
Digital transformation, l’Emilia-Romagna rilancia sulle comunità tematiche
Politche ue
Fondi Coesione 2021-27: la “capacitazione amministrativa” aiuta a spenderli bene
Finanziamenti
Da BEI e Banca Sella 200 milioni di euro per sostenere l’innovazione di PMI e Mid-cap italiane
Analisi
Politiche di coesione Ue, il bilancio: cosa ci dice la relazione 2024
Politiche UE
Innovazione locale con i fondi di coesione: progetti di successo in Italia

Articoli correlati

Articolo 1 di 4