Questo articolo ti guiderà attraverso l'utilizzo di ollama, uno strumento da linea di comando che permette il download, l'esplorazione e l'utilizzo di Large Language Models (LLM) sul tuo PC.

Per la fine di questo articolo avrai modo di lanciare modelli in locale e interrogarli via Python grazie ad un endpoint dedicato. Tali modelli saranno completamente personalizzabili.

🎙️
Leggendo questo articolo imparerai

- cosa è ollama e perché ci semplifica la vita nell'utilizzare LLM sul proprio pc
- come usare ollama da terminale
- come usare ollama via Python

Iniziamo.

Cosa è ollama?

ollama è uno strumento open source che permette la gestione facilitata di LLM sul proprio PC.

Supporta praticamente tutti i modelli open source più nuovi e popolari di Hugging Face e permette anche di caricarne dei nuovi direttamente via la sua interfaccia da riga di comando.

È disponibile sia via Github che attraverso il sito web ufficiale, dove è possibile scaricare le versioni per Windows, Mac e Linux.

Il progetto Github è disponibile qui:

GitHub - ollama/ollama: Get up and running with Llama 2, Mistral, Gemma, and other large language models.
Get up and running with Llama 2, Mistral, Gemma, and other large language models. - ollama/ollama

Perché usare ollama?

Iniziare ad usare modelli open source non è proprio facilissimo. ollama si mette tra lo sviluppatore che vuole integrare i modelli nel suo software e lo strato alquanto macchinoso di processi che è in altro modo obbligato ad implementare a mano.

ollama quindi velocizza e semplicizza i processi di:

  • selezione e download del modello, grazie alla sua facilissima interfaccia
  • configurazione di un endpoint di inferenza
  • integrazione con una codebase Python o JavaScript

Sembra poco, ma non lo è.

Mentre scaricare un modello non è complicato (basta andare su Hugging Face ed è possibile farlo per la maggior parte dei modelli), configurarlo e implementarlo per farlo "partire" può essere un processo lento e non senza sfide, soprattutto in ambienti poco supportati come Windows.

ollama, con pochissimi comandi, permette di avere un LLM open source in ascolto sulla nostra macchina pronto sia a conversare che a rispondere a chiamate API.

Per impostazione predefinita, su Linux e Windows, ollama tenterà di utilizzare le GPU Nvidia o Radeon e utilizzerà tutte le GPU che riesce a trovare, quindi l'accelerazione è garantita senza dover toccare nulla nel caso in cui abbiamo una scheda video di ultima generazione.

Tour delle funzionalità di ollama

Una volta installato, ollama permette di essere evocato via terminale attraverso il comando ollama.

Vediamo i comandi a disposizione più importanti:

  • serve: fa partire ollama nel caso in cui il processo fosse spento
  • show: mostra la informazioni su un modello specifico
  • run: permette di eseguire un modello precedentemente scaricato. Se il modello non è presente, ollama inizierà a scaricarlo
  • pull: scarica un modello, senza eseguirlo una volta terminato
  • list: stampa su schermo la lista dei modelli disponibili sulla macchina
  • rm: rimuove un modello dal PC

Gli altri comandi non verranno trattati in questo articolo poiché sono inerenti al caircamento di modelli nuovi sul registro ollama.

Per avere una lista completa dei modelli disponibili su ollama puoi visitare questo link 👇

library
Get up and running with large language models, locally.

Esempio: come scaricare e usare il modello Mistral in locale

Mistral è uno dei modelli più famosi nello spazio open source della IA generativa. Vediamo quanto è facile scaricarlo com ollama con il comando pull.

Dopo pochi minuti il modello è pronto per essere usato sulla macchina.

Ora è possibile conversare con Mistral con il comando ollama run mistral

Chiedo a Mistral "How can I use large language models on my local pc?" (come posso usare un LLM in locale sul mio pc?) e il modello risponde correttamente. L'inferenza è molto veloce su una Nvidia RTX 4080.

Come usare ollama in Python

Ovviamente ci interessa poter usare Mistral direttamente in Python. Il team di ollama ha messo a disposizione una pacchetto che è possibile scaricare con il comando pip install ollama.

Vediamo come usare Mistral per generare del testo in base a delle stringhe in input in un semplice programma Python, controllando il prompt di sistema e quello dell'utente.

import ollama

response = ollama.chat(model='mistral', messages=[
    {
        "role": "system",
        "content": "You are an expert at creating brief poems about animals"
    },
    {
        "role": "user",
        "content": "Write a poem about a dog"
    },
])
print(response['message']['content'])

Conclusioni

Questo articolo ti ha mostrato come usare ollama come wrapper intorno a logiche più complesse per usare un LLM in locale.

Attraverso pochi comandi è possibile iniziare ad usare subito modelli di linguaggio naturale come Mistral, Llama2 e Gemma direttamente nel tuo progetto Python.

La semplicità di utilizzo permette anche a chi non è un data scientist di usare efficacemente gli LLM open source, che malgrado le loro limitazioni attuali, possono essere comunque usati per task di automazione semplici.