Intermedio 11 minllama.cpp

llama.cpp: che cos'è e bisogna abbandonare Ollama ?

Risposta diretta

llama.cpp è il motore di inferenza in C/C++ che esegue i modelli nel formato GGUF su CPU e su GPU NVIDIA, AMD, Intel e Apple Silicon; Ollama, LM Studio e KoboldCpp si basano su di esso. Usarlo direttamente, tramite llama-server, non rende un modello più veloce sullo stesso hardware: ti dà il controllo su impostazioni che i software basati su di esso scelgono al posto tuo, come la distribuzione GPU/CPU, la dimensione del contesto e la quantizzazione della cache KV.

llama.cpp è il motore di inferenza scritto in C e C++ che esegue i modelli in formato GGUF su CPU, su GPU NVIDIA, AMD e Intel e su Mac. Al 20 settembre 2026, la maggior parte delle applicazioni per LLM locali si basa su di esso o sulla sua libreria ggml: Ollama, LM Studio, KoboldCpp, Jan. Usarlo direttamente non rende il tuo modello più veloce. Ti dà il controllo su impostazioni che le applicazioni costruite su di esso scelgono al posto tuo.

Di Mohamed Meguedmi·Agg. 2026-09-28·Testato su macOS 14+

#llama.cpp in sintesi

Il progetto è stato avviato nel marzo 2023 da Georgi Gerganov, con un obiettivo semplice: far girare il modello LLaMA di Meta su un MacBook, senza Python né dipendenze pesanti. È pubblicato sotto licenza MIT. Tre anni dopo, il repository (passato sotto l'organizzazione ggml-org) supporta centinaia di architetture, e il formato di file che ha definito nell'agosto 2023, il GGUF, è diventato lo standard di fatto per distribuire un modello quantizzato.

Due scelte tecniche spiegano questo successo. La prima è la quantizzazione: llama.cpp sa eseguire pesi compressi da 2 a 8 bit, il che permette di far stare un modello di 8 miliardi di parametri in 5 GB invece che in 16. La seconda è la ripartizione tra processore e scheda grafica: quando un modello non entra interamente in VRAM, una parte degli strati rimane in RAM e il resto va sulla GPU. È più lento di un caricamento completo, ma funziona, e pochi motori lo offrono.

#Cosa c'è nella confezione

Il kit IA Locale

Il tuo ChatGPT privato e gratuito sulla tua macchina in 1 ora — LM Studio, Ollama, Open WebUI, i tuoi documenti, senza cloud.

  • Spazio online a vita
  • PDF + file
  • Aggiornamenti a vita
llama-cli
La chat da riga di comando. Utile per testare un modello o un'impostazione in pochi secondi.
llama-server
Un server HTTP con un'API compatibile con quella di OpenAI e un'interfaccia web integrata, sulla porta 8080. È il componente che la maggior parte degli utenti avanzati mantiene sempre in esecuzione.
llama-bench
Lo strumento di misura. Fornisce separatamente la velocità di lettura del prompt e la velocità di generazione, permettendo di confrontare due impostazioni senza raccontarsi storie.
llama-quantize
Converte un GGUF in precisione completa in una quantizzazione più leggera (Q4_K_M, Q5_K_M, Q8_0).

#Ciò che gli strati software aggiuntivi aggiungono e nascondono

Ollama, LM Studio e KoboldCpp offrono ciò che llama.cpp non fa: un catalogo di modelli, il download con un solo comando, un'interfaccia, il caricamento e lo scaricamento automatici dei modelli dalla memoria. In cambio, impostano valori predefiniti. La tabella qui di seguito non confronta le prestazioni: indica chi decide cosa.

Confronto sul controllo, non sulla velocità · situazione al 20/09/2026
Regolazionellama.cpp puroOllamaLM StudioKoboldCpp
Dimensione del contestoOpzione -c, senza vincoliValore predefinito prudente, modificabile tramite variabile o ModelfileCursore per modelloOpzione all'avvio
Scelta della quantizzazioneQualsiasi file GGUFTag del catalogo, Q4 per impostazione predefinitaElenco proposto per il downloadQualsiasi file GGUF
Livelli inviati alla GPUOpzione -ngl, layer per layerAutomaticoCursoreOpzione all'avvio
Quantizzazione della cache KVOpzioni -ctk e -ctvVariabile di ambiente globaleImpostazioni avanzateOpzione all'avvio
APIllama-server, compatibile con OpenAIAPI pulita + compatibilità con OpenAIServer compatibile con OpenAIAPI pulita + compatibilità con OpenAI
Aggiornamenti del motoreLo stesso giorno, con ogni commitCon un ritardoCon un ritardoCon un ritardo

L'ultima riga conta più di quanto sembri. Quando esce una nuova architettura di modello, viene prima supportata in llama.cpp, poi negli strumenti che vi si appoggiano qualche giorno o settimana più tardi. Se vuoi provare un modello nella settimana della sua pubblicazione, questa è spesso l'unica strada.

#I quattro parametri che cambiano tutto

-ngl (n-gpu-layers)
Il numero di strati del modello caricati in VRAM. Il valore 99 significa «tutto ciò che ci sta». Se il modello supera la capacità della tua VRAM, riduci questo numero finché il caricamento non riesce: ogni strato lasciato alla CPU rallenta la generazione, ma un modello che funziona a 8 token al secondo è meglio di uno che non si avvia.
-c (ctx-size)
La finestra di contesto allocata. La cache KV cresce con essa: su un modello 8B, passare da 8.000 a 32.000 token richiede diversi GB di VRAM. Alloca ciò di cui hai bisogno, non il massimo dichiarato dal modello.
-fa (flash-attn)
Attiva Flash Attention, che riduce l'uso di memoria e accelera la lettura dei prompt lunghi. È anche un prerequisito per quantizzare la cache KV.
--n-cpu-moe
Per i modelli MoE, tenere gli esperti di un certo numero di strati in RAM e lasciare il resto sulla GPU. È proprio questo che permette di eseguire un MoE con 30 o 120 miliardi di parametri su una scheda da 16 GB a velocità utilizzabile.

#Cosa è cambiato: --fit imposta -ngl al posto tuo

Per molto tempo, impostare -ngl a mano è stata la prima indicazione di ogni guida a llama.cpp: impostarlo a 99 per caricare tutto sulla GPU, poi abbassarlo per tentativi se il caricamento falliva. Non è più un passaggio obbligatorio. Il progetto ha aggiunto un'opzione --fit, attiva per impostazione predefinita, che regola automaticamente i parametri non specificati (tra cui -ngl) affinché il modello rientri nella memoria disponibile. Su una scheda modesta, questo evita il consueto alternarsi tra un avvio fallito e una riduzione manuale di -ngl.

→
-ngl 99 rimane valido
Se preferisci forzare un'allocazione precisa, -ngl continua a funzionare esattamente come prima; --fit si applica solo ai parametri che non hai impostato tu stesso. Il cambiamento di comportamento riguarda il valore predefinito, non il comando.

#Quale backend per la tua scheda?

llama.cpp si compila, oppure si scarica, per uno specifico backend di calcolo. La scelta giusta dipende esclusivamente dal tuo hardware. La tabella riprende le famiglie presenti nella nostra base di 90 configurazioni.

Famiglie ricavate dal database hardware di QuelLLM (90 GPU e chip) · 20/09/2026
Il tuo hardwareBackend consigliatoNota
NVIDIA dalla GTX 10 alla RTX 50, per desktop e portatiliCUDAIl percorso più veloce e meglio testato.
AMD Radeon RX 7000 e RX 9000ROCm (HIP) o VulkanROCm è più veloce quando funziona. Vulkan si installa senza problemi, anche su Windows.
AMD Radeon RX 6000 e generazioni precedentiVulkanSupporto parziale o assente di ROCm a seconda della scheda.
Apple da M1 a M5MetalAttivato per impostazione predefinita nei binari macOS. Tutta la memoria unificata è utilizzabile.
GPU integrata Intel o AMD, Intel ArcVulkan o SYCLVantaggio reale rispetto all'uso della sola CPU sui modelli piccoli.
Nessuna GPUCPU (AVX2, AVX-512, NEON)Funziona ovunque. Cerca modelli con al massimo 8 miliardi di parametri.

#Le nostre misure con llama.cpp

llama.cpp è il motore di riferimento del nostro banco di prova, proprio perché funziona esattamente allo stesso modo su tutte le piattaforme. Ecco le velocità di generazione rilevate su Llama 3.1 8B in Q4, con un contesto di 2 048 token, una sola richiesta e Flash Attention attivata.

Misurato · banco di prova QuelLLM, llama.cpp b4280, rilevazioni del 18/04/2026 · tabella completa sulla pagina Benchmarks
MacchinaMemoriaLlama 3.1 8B Q4
RTX 509032 GB172 tok/s
RTX 409024 GB128 tok/s
RTX 407012 GB76 tok/s
Mac M3 Max64 GB unificati64 tok/s
RTX 306012 GB44 tok/s
Ryzen 7 7700, solo CPURAM di sistema7,8 tok/s

Da questi dati emergono due considerazioni. Innanzitutto, il divario tra una RTX 3060 e il solo processore è di un fattore da cinque a sei: anche una scheda di fascia bassa cambia l'esperienza. Inoltre, questi numeri sarebbero praticamente gli stessi in Ollama o LM Studio sulle stesse macchine, perché il motore di calcolo è lo stesso.

#Restare su Ollama o passare a llama.cpp

Continua a usare Ollama o LM Studio se…Passa a llama.cpp se…
Vuoi parlare con un modello senza leggere la documentazione.Il tuo modello supera la capacità della VRAM e vuoi regolare con precisione la ripartizione tra GPU e CPU.
Cambi spesso modello e apprezzi il catalogo integrato.Vuoi provare un'architettura uscita questa settimana.
I tuoi strumenti (Open WebUI, estensioni dell'editor) si aspettano l'API di Ollama.Stai configurando un server destinato a durare e vuoi controllare ogni opzione, dal contesto alla cache KV.

#Iniziare in dieci minuti

Nessuna compilazione necessaria per provare. Sono disponibili binari precompilati per Windows, macOS e Linux a ogni versione, e i gestori di pacchetti si occupano del resto. Il comando seguente scarica un modello piccolo da Hugging Face e apre l'interfaccia web su http://localhost:8080.

Installare e poi avviare il server
# macOS et Linux (Homebrew)
brew install llama.cpp

# Windows
winget install llama.cpp

# Télécharger un modèle et ouvrir l'interface web
llama-server -hf ggml-org/gemma-3-4b-it-GGUF -ngl 99 -c 8192

Per un modello più ambizioso del catalogo, scarica il file GGUF che preferisci e indica il suo percorso con l'opzione -m. La compilazione dai sorgenti diventa utile solo per attivare un backend specifico o seguire lo sviluppo giorno per giorno.

#Gli errori di caricamento più comuni

La maggior parte dei blocchi con llama.cpp si riconduce a tre cause: un superamento della capacità di memoria disponibile, un file GGUF incompatibile con la build installata o un'opzione scritta male. Il messaggio di errore visualizzato sulla riga di comando indica quasi sempre quale delle tre sia la causa, a patto di leggerlo fino in fondo anziché chiuderlo e rilanciare il comando.

Leggere il messaggio prima di cambiare il parametro
Messaggio o sintomoCausa probabileDa provare
cudaMalloc failed: out of memoryIl modello, con il contesto richiesto, supera la VRAM disponibileRidurre -c, lasciare che --fit regoli -ngl oppure scegliere una quantizzazione più leggera
unknown model architectureIl file GGUF utilizza un'architettura più recente rispetto al binario installatoAggiornare alla versione più recente pubblicata; le nuove architetture arrivano prima in llama.cpp
Generazione molto lenta nonostante una GPU recenteNon tutti i layer vengono trasferiti sulla GPU, spesso per mancanza di VRAM liberaVerificare l'output del caricamento (riga « offloaded »), chiudere le altre applicazioni che occupano la scheda
error: invalid argumentUn'opzione rinominata o scritta in modo errato nel comandoConfrontare con llama-server --help, che elenca gli alias brevi e lunghi aggiornati

Vale la pena leggere una volta per intero la riga di caricamento visualizzata all'avvio del server: indica il numero di strati effettivamente inviati alla GPU, la dimensione effettiva del contesto e il tipo di cache KV utilizzato. Spesso è più rapido che aggiungere opzioni a caso finché non funziona. Tieni anche d'occhio la versione installata: llama.cpp pubblica versioni nightly molto frequentemente e talvolta è già uscita una correzione per la tua scheda o il tuo modello, senza che sia ancora arrivata nel pacchetto Homebrew o winget che hai installato la settimana precedente.

#FAQ

llama.cpp è più veloce di Ollama?+
Con le stesse impostazioni, no: Ollama si basa sullo stesso motore di calcolo, quindi la velocità di generazione è molto simile. La differenza deriva dalle impostazioni. llama.cpp ti permette di scegliere con precisione il numero di strati sulla GPU, la dimensione del contesto e la quantizzazione della cache, il che permette a volte di far stare nella VRAM un modello che Ollama avrebbe lasciato parzialmente alla CPU.
È necessario sapere compilare per usare llama.cpp?+
No. A ogni versione vengono pubblicati binari precompilati per Windows, macOS e Linux, e il pacchetto è disponibile in Homebrew (macOS, Linux) e winget (Windows): basta un comando di installazione, senza dover usare un compilatore. La compilazione dai sorgenti diventa utile solo per attivare un backend specifico assente dal binario ufficiale, applicare una patch locale o seguire giorno per giorno il ramo di sviluppo anziché una versione pubblicata.
È possibile usare llama.cpp senza scheda grafica?+
Sì, è proprio questo il suo uso originale: il progetto è stato pensato per far girare un modello su un semplice processore, senza GPU né Python. Su un processore recente, un modello 8B in Q4 genera circa 8 token al secondo sul nostro banco di prova: un ritmo lento, ma che permette di leggere le risposte durante una conversazione o la generazione di un riassunto. Oltre i 14 miliardi di parametri, l'attesa diventa pesante senza accelerazione hardware.
Qual è la differenza tra llama.cpp e vLLM?+
llama.cpp è pensato per un computer personale, indipendentemente dall'hardware, con modelli quantizzati in GGUF. vLLM è pensato per un server GPU che gestisce molte richieste in parallelo, con i pesi di Hugging Face. Il primo massimizza ciò che puoi eseguire sul tuo computer, il secondo il throughput di una GPU condivisa.
E su Mac, llama.cpp o MLX?+
Entrambi sfruttano la GPU Apple tramite la memoria unificata. MLX, la libreria progettata da Apple per i propri chip, è spesso più veloce sui modelli recenti; llama.cpp ha dalla sua l'immenso catalogo di file GGUF già quantizzati e impostazioni più precise per il contesto e la cache KV. In pratica, molti utenti Mac tengono installati entrambi e scelgono in base al formato disponibile per il modello desiderato.

Questa guida ti è stata utile?

Un feedback, un errore, una precisazione? Facci sapere, così la guida migliora per tutti.