Ollama vs llama.cpp: sotto il cofano

Se ti sei mai chiesto come fa un modello linguistico a girare davvero sul tuo computer, la risposta passa quasi sempre da un unico motore: llama.cpp. E la maggior parte di chi usa Ollama non lo sa nemmeno, perché Ollama usa proprio llama.cpp sotto il cofano. Ma i due strumenti non sono la stessa cosa. Uno è il motore, l'altro è l'auto: motore potente da montare, ma l'auto ti mette pure le ruote, il cruscotto e il cambio automatico.
In questo articolo apriamo il cofano. Vediamo cosa c'è sotto, quando la differenza conta davvero e come scegliere con la testa, senza slogan.
Cos'è llama.cpp
llama.cpp è un motore di inferenza scritto in C/C++: esegue i modelli linguistici sul tuo hardware — CPU, GPU consumer, Apple Silicon — con un setup minimo e con le prestazioni al livello dello stato dell'arte. Si appoggia alla libreria ggml e il suo obiettivo dichiarato è l'inferenza di LLM (e VLM) con un setup minimo e prestazioni allo stato dell'arte, in locale e nel cloud. Il repository e il README di llama.cpp ne descrivono la visione e le capacità.
La forza di llama.cpp è il controllo. Ti offre:
- Quantizzazione intera a 1,5/2/3/4/5/6/8 bit, per ridurre la memoria e accelerare l'inferenza.
- Inferenza ibrida CPU+GPU: metti sulla GPU solo le layer che ci stanno in VRAM e lasci il resto in RAM, così modelli più grandi della VRAM girano comunque.
- Un set completo di strumenti:
llama-cliper chattare,llama-server(oggi anchellama serve) per un server con API compatibile OpenAI e una web UI integrata,llama-quantizeper convertire i pesi,llama-benchper misurare i token al secondo,llama-imatrixper le quantizzazioni intelligenti. - Migliaia di flag: thread, layer da offload, contesto, flash attention, decodifica speculativa, grammare JSON, e molto altro.
In pratica, con llama.cpp tocchi le viti: ogni comportamento è un flag che decidi tu. È lo strumento giusto per chi vuole spremere l'ultima goccia di velocità o montare pipeline di inferenza su misura.
Cos'è Ollama
Ollama è un runtime un livello più sopra, scritto in Go. È un daemon che gira in background e mette sopra tre cose: un modello di packaging, una libreria di modelli e un'API. Il repository di Ollama e la documentazione ufficiale dettagliano l'installazione e i comandi.
ollama pull qwen3scarica il modello dalla libreria di Ollama: un nome e via, senza cercare file GGUF, scegliere la quantizzazione, gestire i template di conversazione.ollama run qwen3lancia la chat in un attimo, con un'interfaccia a riga di comando semplice.- Il server esposto in locale parla API nativa e anche API compatibile OpenAI, così i tuoi tool e le tue app possono collegarsi senza sapere che dietro c'è un modello locale.
Il punto tecnico chiave: per gran parte dell'inferenza locale, Ollama usa una versione di llama.cpp che fissa e patcheggia. Quindi i due progetti non sono build intercambiabili dello stesso strumento: Ollama aggiunge packaging, download, template, gestione dei processi e API intorno al motore. Quando esce un modello nuovo, Ollama lo supporta nel momento in cui gli sviluppatori aggiornano la versione di llama.cpp che usano internamente.
La differenza, in una frase
llama.cpp è il motore; Ollama è l'auto che lo monta e ti fa partire. Stesso cuore, due filosofie diverse.
| llama.cpp | Ollama | |
|---|---|---|
| Cosa è | Motore di inferenza C/C++ | Runtime gestito (Go) |
| Setup | Binario o build da sorgente, poi flag a mano | Un install, poi ollama run |
| Modelli | File GGUF che scarichi tu (Hugging Face) | Libreria con ollama pull |
| API | llama-server, compatibile OpenAI | API nativa + compatibile OpenAI |
| Interfaccia | CLI + web UI del server | CLI semplice, nessun GUI ufficiale |
| Controllo | Totale: ogni flag, build custom | Default sensati, meno tuning |
| Per chi | Tinkerer, massima performance, setup custom | Avvio rapido, sviluppatori, uso quotidiano |
Quanto conta la velocità?
Qui sta il mito da sfatare. Poiché Ollama gira su llama.cpp, il motore è lo stesso: a parità di modello, quantizzazione e flag, la differenza di velocità pura è piccola. Le differenze reali vengono da due cose:
- I default. Ollama sceglie per te contesto, layer GPU e altri parametri. Se i suoi default non sono i tuoi ideali, lasci velocità sul tavolo. Con llama.cpp li decidi tu.
- Il modello esatto. Ollama serve le sue versioni dei modelli; puoi avere una quantizzazione o un'architettura leggermente diversa rispetto al GGUF che caricheresti a mano su
llama-server.
La regola pratica: per l'uso quotidiano (chat, tool, prototipi) la velocità di Ollama è del tutto adeguata. Se stai facendo benchmark, o hai un modello grande che vuoi spingere al limite, o stai ottimizzando per un hardware specifico, allora il controllo di llama.cpp diventa un vantaggio misurabile — e qui llama-bench ti dà i numeri per capire cosa stai sacrificando.
Come scegliere (senza slogan)
Parti da Ollama se vuoi essere operativo in minuti, colleghi un'app o un tool esistente via API, e non vuoi pensare a file GGUF, template e flag. È la strada giusta per la maggior parte dei casi, ed è lo standard de facto per girare IA locale in produzione leggera.
Scendi a llama.cpp se vuoi la massima performance su un hardware preciso, usi decodifica speculativa o quantizzazioni avanzate, monti un servizio con API OpenAI senza il layer aggiuntivo del daemon, o semplicemente ti diverte aprire il cofano. Il passaggio da Ollama a llama.cpp è a basso rischio: entrambi espongono un endpoint compatibile OpenAI, quindi l'API delle tue app non cambia.
Possono convivere? Sì. Molti usano Ollama per il lavoro quotidiano e llama-server quando serve il controllo. Niente vieta di averli entrambi sullo stesso computer.
In pratica: i comandi
Con Ollama:
ollama pull qwen3
ollama run qwen3
Con llama.cpp:
llama-server -m qwen3-q4_k_m.gguf -c 32768 -ngl 99
# oppure, con download diretto da Hugging Face
llama serve -hf ggml-org/qwen3:Q4_0
Nel secondo caso scegli tu contesto (-c), layer sulla GPU (-ngl) e quantizzazione (il file .gguf), mentre nel primo Ollama gestisce tutto al posto tuo.
Il quadro d'insieme
Ollama e llama.cpp non sono rivali: sono due livelli della stessa pila. Se ti interessa il mondo dell'IA locale, Ollama è il punto di ingresso più semplice; llama.cpp è la porta d'uscita quando vuoi davvero il controllo. Capire che uno contiene l'altro ti toglie il dubbio "quale è migliore" e ti mette una domanda più utile: quanto controllo mi serve oggi, e quanto mi costa averlo.
Le due cose non si escludono. Inizia con il runtime semplice, e quando un limite ti chiede più potenza, apri il cofano: lì trovi già tutto quello che ti serve.
Fonti
Articolo generato con IA
In questi percorsi
Ti è piaciuto questo articolo?
Iscriviti alla newsletter per ricevere nuovi tutorial e guide.
Articoli Correlati

Quanto costa un token: cinque strade, i conti e il punto di pareggio
Frontier API, abbonamento, provider di inferenza, GPU in noleggio o hardware tuo: cinque strade per generare token, coi costi reali al mese, il conto della corrente e il punto di pareggio calcolato.

NVIDIA, AMD e Intel per l'IA locale: quale piattaforma scegliere
CUDA, ROCm o Vulkan? Confrontiamo le tre piattaforme per l'IA locale sulla base di ciò che è davvero disponibile: stack software ufficiali, schede per fascia di VRAM (12, 16 e 24GB) e velocità reali. Dove resta la scelta ovvia, dove AMD batte per rapporto qualità-prezzo e quando ha senso uscire da NVIDIA.

