Avanzato 11 minBackends

llama.cpp vs vLLM vs Exllama

Risposta diretta

llama.cpp è il motore portabile per l'uso personale (GGUF, CPU, Mac, GPU di tutte le marche) e quello di Ollama e di LM Studio. vLLM è fatto per servire molti utenti contemporaneamente su GPU, con batching continuo; Red Hat misura fino a 793 token/s contro 41 per Ollama su una A100. ExLlamaV2 è archiviato: il suo sviluppo prosegue in ExLlamaV3.

Alla base di Ollama, LM Studio o Jan c'è un motore di inferenza, che determina i formati accettati, l'hardware utilizzabile e il comportamento sotto carico. Questa guida confronta llama.cpp, vLLM, ExLlama e SGLang secondo criteri verificabili nei rispettivi repository, corregge idee errate e fornisce una regola per scegliere. Non pubblica alcuna misura di throughput effettuata internamente: riporta soltanto misurazioni di terzi, con le relative attribuzioni.

Di Mohamed Meguedmi·Agg. 2026-09-29·Testato su Windows, macOS e Linux

#Un motore di inferenza: ciò che cambia veramente tra loro

Un motore di inferenza trasforma token di ingresso in token di uscita. Le applicazioni che installi (Ollama, LM Studio, Jan) ne incorporano uno; i server di produzione (vLLM, SGLang) sono essi stessi motori di inferenza. Tre differenze si riflettono sul tuo utilizzo: i formati dei modelli accettati, l'hardware utilizzabile e il modo di gestire più richieste contemporaneamente.

I motori in una tabella (repository ufficiali, settembre 2026)
MotoreLicenzaFormati e hardware annunciatiUso tipico
llama.cppMITGGUF; CPU, Apple Silicon, NVIDIA (CUDA), AMD (HIP), Vulkan, SYCL e altriComputer personale, portatile, server leggero
vLLMApache 2.0Modelli Hugging Face; FP8, INT4, GPTQ, AWQ, GGUF (sperimentale); GPU NVIDIA, AMD, Intel e CPU x86/ARMServire molti utenti, produzione
SGLangApache 2.0Modelli Hugging Face; FP4, FP8, INT4, AWQ, GPTQServer con throughput elevato, prefissi condivisi
ExLlamaV3MITEXL3; GPU NVIDIA per il mercato consumerLatenza su GPU personale, con TabbyAPI
MLX LMMITSolo Apple SiliconMac: generazione e fine-tuning
i
Ollama e LM Studio non sono motori in concorrenza con questi
Il repository di Ollama elenca llama.cpp sotto «Supported backends», e la pagina iniziale di LM Studio indica un motore basato su MLX e llama.cpp. Confrontare «Ollama vs llama.cpp» equivale a confrontare un'applicazione con il suo motore: la guida dedicata Ollama contro llama.cpp tratta questo caso.

#Il formato del modello determina il motore possibile

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

Prima di confrontare le velocità, verifica il formato in cui il modello che desideri è pubblicato. Un file GGUF si carica in llama.cpp e quindi in Ollama, LM Studio e Jan. I pesi di Hugging Face in FP16, FP8 o quantizzati in AWQ o GPTQ si caricano in vLLM o SGLang. Un modello convertito per MLX si carica con MLX LM su Mac, e un modello EXL3 con ExLlamaV3. Cambiare motore spesso significa scaricare di nuovo il modello in un altro formato.

Formato e motore compatibile
FormatoMotore di riferimentoAltro motore possibile
GGUFllama.cpp (e quindi Ollama, LM Studio, Jan)vLLM, in modalità sperimentale
Pesi Hugging Face (FP16, FP8)vLLM, SGLangMLX LM dopo conversione, su Mac
AWQ, GPTQvLLM, SGLangDipende dal motore, da verificare
EXL3ExLlamaV3Nessuno
MLXMLX LMLM Studio e Jan, che dichiarano il supporto a MLX

#llama.cpp: lo standard portabile

llama.cpp è un'implementazione in C/C++ senza dipendenze, il cui obiettivo dichiarato è l'inferenza con una configurazione minima su un'ampia gamma di hardware. Apple Silicon ha la priorità (NEON, Accelerate, Metal), le CPU x86 sono supportate con AVX, AVX2, AVX512 e AMX e sono supportati i backend NVIDIA (CUDA), AMD (HIP), Vulkan e SYCL per le GPU. Offre quantizzazioni da 1,5 a 8 bit e l'inferenza ibrida su CPU e GPU, che permette di eseguire un modello più grande della VRAM disponibile.

Un luogo comune da correggere: llama.cpp non si limita a una richiesta alla volta. Il suo server dichiara il supporto alla generazione parallela multiutente e al batching continuo, attivato per impostazione predefinita, con slot regolati dal parametro --parallel. Serve quindi adeguatamente un piccolo team; ciò che non cerca di eguagliare sono le funzionalità di produzione su larga scala di vLLM.

Punti di forza
Portabilità (Mac, Linux, Windows, Android), formati GGUF onnipresenti, uso ibrido di CPU e GPU, poche dipendenze.
Limiti
Nessuna funzione di deploy distribuito simile a quella di vLLM; bisogna conoscere i parametri (contesto, slot, layer su GPU).
Ecosistema
Alla base di Ollama e di LM Studio, citato anche da Jan.

Per la compilazione con CUDA, Metal o Vulkan, consulta le guide di compilazione; il tutorial completo su llama.cpp spiega l'uso.

#vLLM: il server per molti utenti

vLLM è una libreria per l'inferenza e il serving nata presso lo Sky Computing Lab dell'Università della California a Berkeley. Si basa su PagedAttention, che gestisce per pagine la memoria delle chiavi e dei valori dell'attenzione, e sul batching continuo, integrati dal prefill a blocchi e dalla cache dei prefissi. Dichiara il supporto per i formati FP8, INT4, GPTQ, AWQ e GGUF, un'API compatibile con OpenAI e il supporto per GPU NVIDIA, AMD e Intel, oltre che per CPU x86, ARM e PowerPC.

Due idee sbagliate da correggere. In primo luogo, vLLM non è più riservato a NVIDIA e supporta anche le CPU: il suo repository indica il supporto per diverse GPU e CPU. In secondo luogo, ora supporta anche GGUF: la documentazione descrive questo supporto come molto sperimentale e poco ottimizzato, utile soprattutto per ridurre l'occupazione di memoria. Per un uso quotidiano di GGUF, llama.cpp resta la soluzione abituale.

Punti di forza
Throughput sotto carico, memoria della cache gestita a pagine, API compatibile con OpenAI, parallelismo (tensor, pipeline, expert), numerosi formati.
Limiti
Più impegnativo da installare e configurare rispetto a llama.cpp; pensato per server GPU; il GGUF non è il suo punto forte.
Ecosistema
Scelta predefinita quando più persone o applicazioni interrogano lo stesso modello contemporaneamente.

La guida su vLLM spiega che cos'è il motore; quella sulla sua distribuzione in produzione descrive in dettaglio le impostazioni e il monitoraggio.

#ExLlama: V2 archiviato, V3 in sviluppo

Il repository di ExLlamaV2 contiene una nota che indica che il progetto è archiviato per il momento e che lo sviluppo prosegue in ExLlamaV3. Molti confronti, tra cui la vecchia versione di questa pagina, presentano ancora V2 come l'opzione più avanzata. Il repository di ExLlamaV3 annuncia il formato di quantizzazione EXL3, l'inferenza con parallelismo dei tensori e degli esperti, l'offload sulla CPU per i modelli a esperti, il batching continuo, la decodifica speculativa e un'API compatibile con OpenAI tramite TabbyAPI, il suo server consigliato.

ExLlamaV3 è pensato per le GPU consumer, non per i server di produzione né per i Mac. Se hai una scheda NVIDIA e vuoi il miglior compromesso tra qualità e dimensioni, vale la pena provare la quantizzazione EXL3; verifica prima che il tuo modello figuri nell'elenco delle architetture del repository.

#SGLang, MLX LM e gli altri

SGLang
Framework di serving descritto come orientato a bassa latenza e alto throughput, da una singola GPU a grandi cluster. Annuncia RadixAttention per la cache dei prefissi, il batching continuo, PagedAttention e la decodifica speculativa. Compete con vLLM sui server; la guida dedicata lo descrive in dettaglio.
MLX LM
Pacchetto Python per generare testo ed eseguire il fine-tuning dei modelli su Apple Silicon con MLX. Non funziona su piattaforme diverse dal Mac. La guida MLX contro llama.cpp confronta i due su Mac.
TensorRT-LLM
Motore di NVIDIA, molto performante sulle sue schede ma più complesso da implementare; da considerare solo per una flotta NVIDIA in produzione.

#Cosa dicono le misurazioni pubblicate

Le velocità di elaborazione dipendono dall'hardware, dal modello, dalla quantizzazione, dalla lunghezza delle richieste e dalla versione del motore, e cambiano ogni mese. Questa guida non presenta quindi misurazioni proprie e ti invita a diffidare delle tabelle di token al secondo prive di un protocollo. Una fonte terza pubblica tuttavia un protocollo completo: Red Hat, nell'agosto 2025.

Misura di Red Hat: vLLM contro Ollama su una A100 (agosto 2025)
ElementoValore pubblicato da Red Hat
HardwareUna scheda NVIDIA A100-PCIE-40GB
ModelloLlama 3.1 8B Instruct (FP16 lato Ollama)
VersionivLLM 0.9.1 ; Ollama 0.9.2
Strumento di testGuideLLM 0.2.1, da 1 a 256 utenti contemporanei
Throughput massimo793 token/s per vLLM contro 41 per Ollama
Latenza P99 al picco80 ms per vLLM contro 673 ms per Ollama

Da leggere con cautela: l'articolo è legato ai prodotti Red Hat AI, quindi proviene da un operatore commerciale del settore; i test riguardano Ollama e non direttamente llama.cpp, con impostazioni predefinite; risalgono a diverse versioni fa. La conclusione solida è qualitativa: con molte richieste simultanee, un motore di serving con batching aggressivo supera un'applicazione pensata per un singolo utente. Se lo usi da solo, la differenza di throughput non è ciò che ti penalizza.

!
Nessuna tabella di token al secondo in questa pagina
La versione precedente di questa guida riportava valori di throughput e tempi di prima risposta per tre motori. Non erano associati ad alcuna fonte e sono stati rimossi. Per fare un confronto sulla tua macchina, effettua tu stesso le misurazioni con il tuo modello e le tue richieste.

#Memoria: quanto ogni motore riserva

La memoria occupata da un modello comprende i pesi, la cache di contesto (KV) e un margine. Lo spazio occupato dai pesi si può calcolare: un modello da 8 miliardi di parametri occupa circa 16 GB in FP16 (8 miliardi moltiplicati per 2 byte) e circa 5 GB in Q4, secondo il valore di riferimento del sito. La cache di contesto cresce con la lunghezza della conversazione e il numero di richieste simultanee.

Come ogni motore gestisce la memoria del contesto
MotoreComportamento documentatoConseguenza pratica
llama.cppContesto impostato dall'utente; slot paralleli con cache unificataFissi la dimensione del contesto e il numero di slot
vLLMPrealloca una parte della memoria GPU alla cache, il 92% per impostazione predefinitaSu una scheda da 24 GB, circa 22 GB sono già riservati
ExLlamaV3Quantizzazione della cache da 2 a 8 bitLa cache può essere compressa per rientrare nella VRAM

Il punto da ricordare: vLLM riserva la memoria fin dall'inizio, il che lo rende efficiente nel servire richieste ma poco adatto a una scheda condivisa con altre applicazioni. Il valore del parametro gpu_memory_utilization va ridotto se la scheda viene usata anche per altro.

#Quale motore per quale utilizzo

Decisione in base alla situazione
La tua situazioneMotore consigliatoMotivo
Uso personale su Mac, PC o portatilellama.cpp, tramite Ollama o LM StudioPortabile e semplice
Mac Apple Silicon, obiettivo: un elevato throughputMLX LM o llama.cppMLX è progettato per Apple Silicon; effettuare il confronto sui tuoi modelli
Un'equipe o un'applicazione interroga il modellovLLM o SGLangBatching continuo, pagine di cache
Una scheda NVIDIA consumer, qualità massimaExLlamaV3 con TabbyAPIQuantizzazione EXL3
Hardware misto, CPU, AMD, Intelllama.cppAmpio supporto hardware
Modello esclusivamente in GGUFllama.cppvLLM lo gestisce solo in modo sperimentale

I motori possono convivere: Ollama per la chat quotidiana, vLLM avviato su richiesta per elaborare un lotto di estrazioni. Non c'è motivo di conservarne solo uno se gli usi sono diversi. Prevedi solo lo spazio su disco per lo stesso modello salvato in due formati, ad esempio un file GGUF per la chat e i pesi Hugging Face per il server.

Domande frequenti sui motori di inferenza
vLLM o llama.cpp: quale scegliere?+
llama.cpp per un uso personale o su hardware di vario tipo, comprese le CPU e i Mac. vLLM per servire più utenti su GPU, grazie al batching continuo e alla gestione paginata della memoria. Se sei solo davanti alla tua macchina, llama.cpp, tramite Ollama o LM Studio, basta quasi sempre.
Ollama utilizza llama.cpp?+
Il repository di Ollama elenca llama.cpp nella sezione « Supported backends ». Ollama vi aggiunge la gestione dei modelli, un'API e un'applicazione. Confrontare Ollama e llama.cpp significa quindi confrontare un'applicazione e il suo motore, con impostazioni predefinite, formati e funzionalità che differiscono; per i dettagli, vedere la guida dedicata a questo confronto.
vLLM può eseguire file GGUF?+
Sì, ma la sua documentazione descrive questo supporto come molto sperimentale e poco ottimizzato, utile soprattutto per ridurre il consumo di memoria. Ora passa attraverso un plugin separato. Per vLLM, preferisci pesi Hugging Face in FP16, FP8 o quantizzati in AWQ o GPTQ, e riserva il GGUF a llama.cpp.
ExLlamaV2 è ancora mantenuto?+
No: il suo repository segnala che è attualmente archiviato e che lo sviluppo prosegue su ExLlamaV3. ExLlamaV3 offre il formato EXL3 e un server consigliato, TabbyAPI. Se parti da un tutorial su ExLlamaV2 e il formato EXL2, cerca l'equivalente V3 prima di iniziare.
Quale motore è il più veloce?+
Dipende dall'hardware, dal modello e dal numero di utenti simultanei. Con molte richieste simultanee, Red Hat misura un netto vantaggio di vLLM rispetto a Ollama. Per una sola richiesta alla volta, le differenze sono minori e dipendono dall'hardware. Misura le prestazioni con il tuo modello prima di decidere.
Serve una GPU NVIDIA per vLLM?+
No. Il repository di vLLM dichiara il supporto per le GPU NVIDIA, AMD e Intel e per le CPU x86, ARM e PowerPC, con estensioni per altri acceleratori. Le funzionalità supportate variano in base all'hardware: consulta la documentazione di installazione della tua piattaforma prima di impegnarti.
Questa guida ti è stata utile?

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