Ollama 101 - Usarlo tramite CLI

banner

Recap

Nel primo articolo abbiamo visto cos’è Ollama e come installarlo. Abbiamo anche eseguito il nostro primo modello con ollama run. Tuttavia, Ollama offre molti altri comandi che permettono di gestire i modelli in modo granulare e professionale.

In questo articolo esploreremo tutti i comandi CLI principali di Ollama, con esempi pratici che potrai replicare immediatamente.

Comandi principali

La CLI di Ollama segue una sintassi semplice e intuitiva:

ollama [comando] [opzioni] [argomenti]

Ci basterà dunque imparare i comandi principali per sfruttare al massimo le potenzialità di Ollama!

Vediamo nel dettaglio quali sono quelli più importanti e utili, con degli esempi pratici.

Ollama serve

Il comando serve avvia il server Ollama in modalità daemon. Questo è necessario perché tutti gli altri comandi comunicano con questo server per eseguire operazioni sui modelli.

ollama serve

Quando usarlo:

  • Su Linux, se hai installato Ollama manualmente senza systemd
  • Per debug, quando vuoi vedere i log in tempo reale
  • Per avviare il server su una porta custom

Esempio con porta personalizzata:

OLLAMA_HOST=0.0.0.0:11435 ollama serve

Questo avvia Ollama sulla porta 11435 invece della default 11434, e lo rende accessibile da tutte le interfacce di rete.

Output tipico:

time=2024-02-20T10:30:00.000Z level=INFO msg="Ollama server starting" version=0.1.x
time=2024-02-20T10:30:00.100Z level=INFO msg="Listening on 127.0.0.1:11434"

Nota: Su Windows e macOS, Ollama si avvia automaticamente come servizio di sistema, quindi raramente dovrai usare questo comando manualmente.

Ollama pull

Scarica un modello dalla libreria di Ollama senza eseguirlo immediatamente. È l’equivalente di docker pull.

Sintassi base:

ollama pull [nome-modello]:[tag]

Esempi pratici:

# Scarica l'ultima versione di Llama 3.2
ollama pull llama3.2

# Scarica una versione specifica (3B parametri)
ollama pull llama3.2:3b

# Scarica Mistral (circa 4GB)
ollama pull mistral

# Scarica un modello più grande (circa 26GB)
ollama pull llama3.1:70b

Output durante il download:

pulling manifest
pulling 8934d96d3f08... 100% ▕████████████████▏ 1.8 GB
pulling 8c17c2ebb0ea... 100% ▕████████████████▏  7.0 KB
pulling 7c23fb36d801... 100% ▕████████████████▏  4.8 KB
pulling 2e0493f67d0c... 100% ▕████████████████▏   59 B
pulling fa304d675061... 100% ▕████████████████▏   91 B
pulling 42ba7f8a01dd... 100% ▕████████████████▏  557 B
verifying sha256 digest
writing manifest
success

Per comprendere meglio i modelli, tieni conto che Ollama supporta diversi modelli, i quali sono descritti con il nome del modello (ad esempio, llama3), e poi un tag, che corrisponde alla variante del modello (ad esempio, 3b per 3 miliardi di parametri). Quando parliamo del numero dei parametri, possiamo assumere genericamente che più alto sarà il numero di parametri, più avremo bisogno di risorse hardware (RAM, CPU, GPU). Inoltre, il numero di parametri ci permette di comprendere la complessità del modello e la sua capacità di generare risposte più articolate. Ad esempio, un modello come llama3.2:1b (1 miliardo di parametri) sarà più leggero e veloce, ma meno capace di rispondere a domande complesse rispetto a llama3.2:70b (70 miliardi di parametri).

Quando invece eseguiamo il pull di un modello, viene scaricato quello che si chiama manifest, che contiene tutte le informazioni necessarie per eseguire il modello, come i layer, i pesi, e le configurazioni. Queste informazioni vengono salvate in una directory locale, tipicamente in ~/.ollama/models/. Il formato del file manifest è simile a quello di Docker, e permette a Ollama di gestire efficientemente i modelli, evitando di scaricare nuovamente i layer già presenti.

Ollama list

Come è facile intuire dal comando, ollama list mostra tutti i modelli scaricati localmente con informazioni su dimensione e data di modifica.

ollama list

Output esempio:

NAME                    ID              SIZE      MODIFIED
llama3.2:latest         a1b2c3d4e5f6    2.0 GB    5 minutes ago
mistral:latest          b2c3d4e5f6g7    4.1 GB    2 hours ago
codellama:7b            c3d4e5f6g7h8    3.8 GB    3 days ago
phi3:mini               d4e5f6g7h8i9    2.3 GB    1 week ago

Informazioni fornite:

  • NAME: nome e tag del modello
  • ID: hash identificativo univoco
  • SIZE: dimensione su disco
  • MODIFIED: ultima volta che il modello è stato usato o scaricato

Questo comando è utile per:

  • Verificare quali modelli hai disponibili
  • Controllare quanto spazio occupano
  • Decidere quali modelli rimuovere

Ollama run

Questo è sicuramente il comando più utilizzato: esegue un modello e avvia una sessione interattiva (o esegue un prompt singolo).

Modalità interattiva:

ollama run llama3.2

Ti porta in una sessione chat dove puoi scrivere messaggi:

>>> Scrivi una funzione Python per ordinare una lista
Ecco una funzione per ordinare una lista in Python:

def ordina_lista(lista):
    return sorted(lista)

# Esempio di utilizzo
numeri = [5, 2, 8, 1, 9]
print(ordina_lista(numeri))  # Output: [1, 2, 5, 8, 9]

>>> /bye

Comandi speciali nella sessione interattiva:

  • /bye - esce dalla sessione
  • /clear - pulisce lo storico della conversazione
  • /show - mostra informazioni sul modello corrente
  • /? - mostra tutti i comandi disponibili

Modalità prompt singolo:

Puoi eseguire un singolo prompt senza entrare in modalità interattiva:

ollama run llama3.2 "Spiegami cos'è un REST API in 50 parole"

Questo è perfetto per:

  • Script e automazioni
  • Testing rapido
  • Pipeline CI/CD

Esempio in script bash:

#!/bin/bash
risposta=$(ollama run llama3.2 "Genera un nome per un progetto Python di machine learning")
echo "Nome progetto: $risposta"

Opzioni avanzate:

# Usa un system prompt personalizzato
ollama run llama3.2 --system "Sei un esperto di cybersecurity che risponde sempre in modo conciso"

# Continua una conversazione precedente mantenendo il contesto
ollama run llama3.2 --keepalive 10m

L’opzione --keepalive mantiene il modello in memoria per il tempo specificato, evitando di ricaricarlo ad ogni richiesta.

Piccola nota: i modelli linguistici di grandi dimensioni solitamente accettano due tipi di argomenti, ossia il system prompt e lo user prompt. Il system prompt serve a definire il comportamento generale del modello, mentre lo user prompt è la domanda o il compito specifico che vogliamo che il modello esegua. Ad esempio, possiamo usare un system prompt per dire al modello di comportarsi come un assistente esperto in un certo campo (ad esempio, “agisci come…”, e poi usare lo user prompt per fare domande specifiche relative a quel campo.

Ollama rm

Anche questo comando è estremamente importante: rimuove un modello scaricato per liberare spazio disco.

ollama rm llama3.2

Output:

deleted 'llama3.2'

Ollama cp

Crea una copia di un modello con un nuovo nome. Utile per creare varianti personalizzate.

ollama cp llama3.2 my-custom-llama

Ora hai due modelli identici con nomi diversi. Questo è utile come punto di partenza per personalizzazioni (di cui parleremo successivamente).

Ollama show

Mostra informazioni dettagliate su un modello, inclusi i parametri, il Modelfile, e i template usati.

ollama show llama3.2

Output esempio:

Model
  arch                llama
  parameters          3.2B
  quantization        Q4_0
  context length      4096
  embedding length    3200

License
  LLAMA 3.2 COMMUNITY LICENSE AGREEMENT

System
  You are a helpful assistant.

Parameters
  stop    "<|start_header_id|>"
  stop    "<|end_header_id|>"
  stop    "<|eot_id|>"

Questo comando è prezioso per:

  • Capire le caratteristiche tecniche di un modello
  • Vedere il system prompt di default
  • Eseguire il debug di comportamenti inattesi

Conclusioni

La CLI di Ollama è potente ma semplice da usare. Con questi comandi hai tutto ciò che serve per:

  • Scaricare e gestire modelli
  • Eseguire inferenze interattive o automatizzate

Nel prossimo articolo vedremo come usare l’API REST di Ollama per integrare questi modelli nelle tue applicazioni web e mobile.

Continua con: Ollama 101 - Usarlo tramite REST API

Post correlati

TheRedCode.it - Il mondo #tech a piccoli #bit

Partners

Community, aziende e persone che supportano attivamente il blog

Logo di Codemotion
Logo di GrUSP
Logo di Python Milano
Logo di Schrodinger Hat
Logo di Python Biella Group
Logo di Fuzzy Brains
Logo di Django Girls
Logo di Improove
Logo del libro open source
Logo di NgRome
Logo de La Locanda del Tech
Logo di Tomorrow Devs
Logo di DevDojo

Vuoi diventare #tech content creator? 🖊️

Se vuoi raccontare la tua sul mondo #tech con dei post a tema o vuoi condividere la tua esperienza con la community, sei nel posto giusto! 😉

Manda una mail a collaborazioni[at]theredcode.it con la tua proposta e diventa la prossima penna del blog!

Ma sì, facciamolo!