Ogni volta che si invia un messaggio a ChatGPT, Claude o Gemini, i propri dati attraversano internet per raggiungere server remoti gestiti da aziende terze. Per la maggior parte degli utilizzi questo è un compromesso accettabile, ma non per tutti: chi lavora con informazioni sensibili, chi ha bisogno di funzionamento offline o chi semplicemente preferisce mantenere il pieno controllo dei propri dati ha poche alternative pratiche.
La buona notizia è che esiste un ecosistema maturo per eseguire modelli di linguaggio direttamente sulla propria macchina, senza abbonamenti e senza trasferire nulla all’esterno. Ollama è il motore che semplifica tutto questo: basato su llama.cpp, scritto in Go con backend C per l’inferenza, rileva automaticamente la GPU e scarica modelli già quantizzati per l’hardware consumer.
Supporta decine di modelli open source, da Gemma 4 di Google a Llama 3 di Meta, da Qwen3.6 di Alibaba a DeepSeek, con dimensioni che vanno da 2 GB per i modelli compatti fino a 40 GB per quelli più grandi. Open WebUI è l’interfaccia web che trasforma Ollama in una piattaforma completa, con supporto RAG per i documenti, ricerca web integrata, generazione immagini e persino API compatibili con OpenAI.
Insieme offrono un’alternativa ai servizi cloud per chi vuole rimanere padrone dei propri dati. Questa guida parte dall’installazione per arrivare alle configurazioni avanzate: ottimizzazione della GPU, personalizzazione dei Modelfile, integrazione con strumenti di sviluppo e una valutazione di cosa funziona e cosa ancora no.
Hardware e modelli
Prima di installare qualsiasi cosa, serve un quadro chiaro delle risorse necessarie. I modelli di linguaggio consumano memoria in proporzione diretta al numero di parametri, e la quantità di RAM o VRAM disponibile stabilisce sia quali modelli puoi eseguire sia a che velocità. La tabella seguente riassume i requisiti approssimativi per i modelli più diffusi in quantizzazione Q4:
| Modello | Parametri | Dimensione | RAM minima |
|---|---|---|---|
| Phi-3 Mini | 3,8B | ~2,3 GB | 4 GB |
| Llama 3.1 (8B) | 8B | ~4,7 GB | 8 GB |
| Qwen2.5 (14B) | 14B | ~8,7 GB | 16 GB |
| Gemma 3 (27B) | 27B | ~16 GB | 24 GB |
| Llama 3.1 (70B) | 70B | ~40 GB | 48 GB |
La quantizzazione comprime i pesi del modello da 16-bit a 4 o 8-bit, riducendo le dimensioni a scapito di una perdita di qualità generalmente impercettibile. Ollama distribuisce modelli in Q4 per impostazione predefinita, ma puoi selezionare il livello tramite tag, ovvero ollama pull llama3.2:q8_0 per qualità quasi originale, oppure ollama pull llama3.2:q4_0 per la massima compattezza.
Su CPU sola, un modello da 3B genera circa 5-15 token al secondo, mentre un 7B scende a 2-5 token al secondo: ancora usabile, ma al limite. Per i modelli medi, una GPU con 8 GB di VRAM come una RTX 3060 o 4060 cambia radicalmente le prestazioni. Per i modelli da 27-70B servono invece 24 GB di VRAM o più, l’ambito delle RTX 3090 e 4090.
Ollama: installazione e personalizzazione con i Modelfile
L’installazione di Ollama richiede un solo comando. Su Windows basta aprire PowerShell ed eseguire irm https://ollama.com/install.ps1 | iex; su macOS e Linux, curl -fsSL https://ollama.com/install.sh | sh. In alternativa, l’installer grafico è disponibile su ollama.com/download. Una volta completata l’installazione, il server parte automaticamente in background.
Per scaricare ed eseguire il primo modello basta digitare ollama run gemma4: il modello viene recuperato dalla libreria e la sessione chat inizia direttamente nel terminale. I comandi essenziali includono ollama ls per elencare i modelli scaricati, ollama ps per verificare quali sono attivi e come si ripartisce il carico tra GPU e CPU, e ollama stop <modello> per liberare memoria.
La vera potenza per chi configura a livello avanzato sta però nei Modelfile, file di configurazione che permettono di creare varianti personalizzate di qualsiasi modello con una sintassi minimale:
FROM gemma4
PARAMETER temperature 0.7
PARAMETER num_ctx 8192
PARAMETER top_p 0.9
PARAMETER repeat_penalty 1.1
SYSTEM """Sei un assistente tecnico specializzato in sysadmin Linux.Rispondi in italiano con esempi pratici e comandi utili."""Si costruisce il modello con ollama create mio-assistente -f Modelfile e si esegue con ollama run mio-assistente. I parametri più rilevanti sono temperature (da 0.0 a 2.0, controlla la creatività), num_ctx (finestra di contesto in token, predefinito 2048), top_p per il campionamento e repeat_penalty per scoraggiare le ripetizioni.
È possibile ispezionare la configurazione di qualsiasi modello esistente con ollama show --modelfile gemma3, copiarlo con ollama cp e usarlo come base per le proprie personalizzazioni. L’istruzione MESSAGE permette inoltre di fornire esempi few-shot direttamente nel Modelfile, guidando il comportamento del modello senza modificarne i pesi.
Open WebUI: da motore a piattaforma completa
Ollama da solo funziona bene da terminale, ma per un uso quotidiano serve un’interfaccia più accessibile. Open WebUI si installa più comodamente tramite Docker. L’approccio più rapido è usare l’immagine che include già Ollama, ideale per iniziare con un solo container:
docker run -d -p 3000:8080 --gpus=all \
-v ollama:/root/.ollama \
-v open-webui:/app/backend/data \
--name open-webui --restart always \
ghcr.io/open-webui/open-webui:ollamaSe Ollama è già installato sulla macchina, basta l’immagine :main con il flag --add-host=host.docker.internal:host-gateway per consentire al container di raggiungere il server sull’host. Il primo che si registra diventa automaticamente amministratore.
L’interfaccia ricorda da vicino ChatGPT, con supporto Markdown e LaTeX, ma le funzionalità vanno ben oltre la semplice chat. La caratteristica più interessante per un uso avanzato è il RAG (Retrieval-Augmented Generation): puoi caricare PDF, documenti Word e file di testo, poi interrogarli nella chat usando il comando # prima della domanda.

Open WebUI indicizza i documenti tramite un modello di embedding (per l’uso locale è consigliato nomic-embed-text) e supporta nove database vettoriali tra cui ChromaDB, PGVector e Qdrant. Un’altra funzionalità notevole è la possibilità di collegare fino a 15 provider di ricerca web; per un setup completamente locale e gratuito, SearXNG è l’opzione ideale.
La funzione “Many Models Conversations” permette poi di interrogare più modelli in parallelo e confrontare le risposte in tempo reale, utile per valutare quale modello performa meglio su un determinato compito. È anche possibile usare contemporaneamente modelli locali e API cloud come OpenAI o Mistral nello stesso workspace, configurando le chiavi API nelle impostazioni.
Integrazioni API in Ollama
Uno dei vantaggi meno ovvi di Ollama è l’endpoint API compatibile con OpenAI, disponibile all’indirizzo http://localhost:11434/v1/. Qualsiasi strumento costruito per l’SDK OpenAI funziona anche con i modelli locali, semplicemente cambiando base_url e inserendo una stringa arbitraria come api_key:
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:11434/v1/",
api_key="ollama", # richiesta ma ignorata
)
resp>= client.chat.completions.create(
model="llama3.2",
messages=[{"role": "user", "c>"Spiega la quantizzazione in due frasi"}],
)
print(resp>0].message.content)Questa compatibilità apre la porta a diverse integrazioni. In VS Code, estensioni come Cline, Continue e AI Toolkit di Microsoft possono puntare direttamente al server Ollama locale per generazione codice e refactoring. In Obsidian, plugin come Copilot for Obsidian trasformano l’app in un assistente per gli appunti alimentato da modelli locali.
Anche LangChain e LlamaIndex supportano Ollama nativamente per pipeline RAG e agenti personalizzati, rendendo semplice costruire applicazioni complesse sopra l’infrastruttura locale. Dal punto di vista dell’ottimizzazione hardware, ci sono diverse leve utili.
Flash Attention (OLLAMA_FLASH_ATTENTION=1) riduce il consumo di memoria per contesti lunghi, mentre la quantizzazione della cache K/V con OLLAMA_KV_CACHE_TYPE=q8_0 dimezza la memoria del contesto con impatto minimo sulla qualità. Per task che richiedono contesti ampi (agenti, analisi di codice, documenti lunghi) conviene impostare OLLAMA_CONTEXT_LENGTH=64000 o superiore.
Apple Silicon è supportato nativamente via Metal, NVIDIA via CUDA con compute capability 5.0+, AMD via ROCm sulle serie RX 6000 e 7000. Il comando ollama ps mostra la ripartizione CPU/GPU in tempo reale, permettendoti di verificare che il modello stia effettivamente usando l’accelerazione hardware.
Il cloud non è il nemico e il locale non è perfetto
I modelli locali sono meno capaci di GPT-5.5 o Claude Opus 4.7, ed è giusto riconoscerlo. Su compiti di ragionamento complesso, accuratezza fattuale e coding avanzato, il divario è ancora sensibile.
I modelli da 14-27B colmano buona parte della distanza per gli utilizzi più comuni (scrittura, riassunti, brainstorming, domande generiche), mentre i modelli da 70B si avvicinano alle prestazioni cloud per molti task, ma richiedono hardware dedicato e costoso. La qualità dei modelli open source sta comunque migliorando rapidamente, e il gap si restringe con ogni nuovo rilascio.
Ciò detto, ci sono scenari dove il locale eccelle in modo inequivocabile. Per la privacy dei dati (documenti legali, cartelle cliniche, codice proprietario) non esiste alternativa paragonabile a un modello che gira interamente sulla propria macchina senza comunicazione verso l’esterno. Per il funzionamento offline, Ollama funziona senza connessione dopo il download iniziale, configurabile anche in modalità air-gapped.
Grazie all’assenza di costi ricorrenti: una volta configurato il sistema, non ci sono abbonamenti né limiti di utilizzo. Per gli sviluppatori, l’API locale permette di prototipare e testare senza consumare crediti. Il consiglio pragmatico è ibrido, ovvero usa il locale per il lavoro quotidiano, i documenti sensibili e la prototipazione, e affida al cloud i compiti che richiedono la massima qualità.
Con Ollama e Open WebUI, configurare questa architettura richiede meno di un’ora, un investimento di tempo che ripaga in autonomia e controllo.













