I LLM (Large Language Models) sono modelli linguistici di grandi dimensioni addestrati su enormi quantità di testo al fine di apprendere le strutture linguistiche e le relazioni semantiche. Questi modelli possono quindi “comprendere” e generare testo utile, pertinente e contestualizzato. Sono perciò sempre più spesso integrati nelle applicazioni che si occupano di generare testo, rispondere alle domande degli utenti, effettuare traduzioni, offrire suggerimenti e molto altro ancora.
I principali LLM ad oggi conosciuti affondano le radici nel concetto di attenzione e di Transformer, che Google ha presentato nel 2017 dando un forte impulso alle soluzioni basate sull’intelligenza artificiale. Esistono LLM proprietari, modelli forniti con una licenza che non permette usi commerciali e prodotti che, invece, non pongono alcun tipo di limitazione. Tanto da far sostenere alla comunità di sviluppo che i modelli open source per l’intelligenza artificiale supereranno quelli di OpenAI e Google.
Cos’è Ollama e come porta i modelli di intelligenza artificiale sui sistemi degli utenti
A riunire i vari LLM open source ci pensa Ollama, un progetto che porta l’intelligenza artificiale e le attività di inferenza sui sistemi degli utenti finali, siano essi ricercatori, professionisti, aziende o semplici curiosi. Leggero ed ampliabile, Ollama è un framework che fornisce un’API semplice per la creazione, l’esecuzione e la gestione di modelli linguistici, insieme a una libreria di modelli pre-costruiti che possono essere facilmente utilizzati in un ampio ventaglio di applicazioni.
Come installare Ollama
L'”ambiente naturale” per l’installazione di Ollama è una macchina Linux dotata di almeno 8 GB di memoria RAM per eseguire i modelli basati su 3 miliardi di parametri (3B), di 16 GB per i modelli 7B e 32 GB per i modelli 13B (“B” sta per billion, ovvero “miliardi”). Esiste comunque anche l’installer per i sistemi macOS; il supporto per Windows arriverà più avanti. Tuttavia, è possibile usare la procedura descritta nel seguito per configurare Ollama su Windows con l’ausilio del componente WSL (Windows Subsystem for Linux) che permette di eseguire Linux sul sistema operativo Microsoft.
A partire da inizio ottobre 2023, Ollama è disponibile anche sotto forma di container Docker: la corrispondente immagine è ufficialmente supportata e continuamente aggiornata.
Noi abbiamo installato Ollama su una macchina Ubuntu 22.04 con 16 GB di RAM semplicemente digitando il comando che segue:
curl https://ollama.ai/install.sh | sh
Ollama riconosce automaticamente la presenza di schede basate su GPU NVidia. Nel caso in cui il sistema non ne fosse equipaggiato, i modelli generativi si appoggeranno esclusivamente sui core del processore.
Come usare Ollama in locale
Ad installazione conclusa, si possono avviare i modelli linguistici preferiti e iniziare ad interagirvi usando semplici comandi. Per cominciare a utilizzare il modello LLaMa 2 (LLaMA sta per Large Language Model Meta AI, da qui l’immagine del “lama” che ricorre spesso…) basta digitare quanto segue nella finestra del terminale Linux:
ollama run llama2
Come accennato nell’introduzione, Ollama supporta un’ampia varietà di LLM open source che possono essere scaricati dalla libreria di modelli. Per utilizzarli non sono necessari passaggi aggiuntivi, basta digitare uno dei comandi riportati nella colonna Download:
Modello | n° parametri | Dimensione | Download |
---|---|---|---|
Mistral | 7B | 4.1GB | ollama run mistral |
Llama 2 | 7B | 3.8GB | ollama run llama2 |
Code Llama | 7B | 3.8GB | ollama run codellama |
Llama 2 Uncensored | 7B | 3.8GB | ollama run llama2-uncensored |
Llama 2 13B | 13B | 7.3GB | ollama run llama2:13b |
Llama 2 70B | 70B | 39GB | ollama run llama2:70b |
Orca Mini | 3B | 1.9GB | ollama run orca-mini |
Vicuna | 7B | 3.8GB | ollama run vicuna |
Tra le varie proposte c’è anche Mistral 7B, potente modello opensource per l’intelligenza artificiale che utilizza la licenza Apache 2.0 ed è sostenuto dal consorzio italo-europeo CINECA/EuroHPC.
Utilizzando il prompt di Ollama si può quindi iniziare a inviare le proprie domande, anche in lingua italiana.
Per uscire dall’applicazione, basta premere CTRL+D
oppure digitale /bye
e premere il tasto Invio.
Il comando ollama list
, restituisce l’elenco dei modelli generativi scaricati e disponibili in locale.
Importare modelli personalizzati in Ollama
Ollama consente di importare modelli in formati come GGUF e GGML. Se si disponesse di un modello che non si trova nella libreria di Ollama, è possibile aggiungerlo quando ritenuto sufficientemente maturo. Basta creare un file chiamato Modelfile
e aggiungere un’istruzione FROM
con il percorso locale facente riferimento al modello che si desidera usare.
L’oggetto Modelfile
può essere utilizzato anche per personalizzare il comportamento degli LLM già noti a Ollama. Ad esempio, creando un Modelfile
con il contenuto seguente, si può intervenire sul comportamento predefinito di Llama 2:
FROM llama2
# set the temperature to 1 [higher is more creative, lower is more coherent]
PARAMETER temperature 1# set the system prompt
SYSTEM “””
Sei Mario di Super Mario Bros. Rispondi sempre e soltanto come Mario.
“””
Cosa abbiamo fatto? In prima battuta si è regolata la “temperatura” del modello: il valore 1 rende il modello Llama 2 più creativo ma meno preciso. Valori più bassi, invece, consentono di ottenere risposte più basilari ma, allo stesso tempo, maggiormente coerenti.
Per secondo, si crea una sorta di gioco di ruolo: il modello adatta le sue risposte a quelle di un ipotetico assistente digitale cucito sulla “personalità” di Mario, del celeberrimo videogioco.
Usare l’API REST per dialogare con Ollama
Le API REST sono ampiamente utilizzate per la creazione di servizi Web e sono una scelta comune quando si progetta l’interazione tra client e server in modo scalabile e flessibile. E se vi dicessimo che Ollama ha già un’interfaccia del genere che consente di mettere in comunicazione qualunque applicazione si stesse sviluppando o si fosse già realizzata con l’intelligenza artificiale derivante dai migliori LLM?
Provate a incollare nella finestra del terminale Linux quanto segue:
curl -X POST http://localhost:11434/api/generate -d '{
"model": "llama2",
"prompt":"Perché il cielo è blu? Spiegalo in italiano"
}'
Questa istruzione curl non fa altro che inviare una richiesta HTTP all’API REST di Ollama specificando il modello generativo da usare il prompt. In risposta si riceve una spiegazione articolata, utile a soddisfare il quesito proposto.
Ecco, adesso immaginate di sostituire curl con un’applicazione che invia la richiesta in locale o attraverso la LAN sul sistema ove Ollama è in ascolto: complimenti, avete realizzato un chatbot simile a ChatGPT che potete liberamente utilizzate in molteplici contesti.