La settimana scorsa un lettore chiedeva perché il suo file GGUF fallisce in vLLM su una macchina senza GPU, mentre lo stesso file gira senza problemi in Ollama. Risposta breve, prima di tutto il resto: sì, vLLM esegue GGUF — tramite un plugin ufficiale, solo su GPU. Il plugin si chiama vllm-gguf-plugin, la sintassi è repo:quant_type, e nel momento in cui provi su CPU sei fuori dalla tabella hardware supportata. Tutto ciò che segue viene dalla documentazione vLLM e dallo storico del repository vllm-project/vllm (92.000+ stelle da febbraio 2023) — i documenti, non il mio banco di prova.
Come servi un modello GGUF con vLLM?
Due passaggi: installare il plugin, poi puntare vLLM al modello. Il supporto GGUF non vive più nel core di vLLM — la documentazione nota che è «migrato verso vllm-gguf-plugin», quindi un semplice pip install vllm non basta:
uv pip install vllm-gguf-plugin
# Direttamente da Hugging Face, formato repo_id:quant_type:
vllm serve unsloth/Qwen3-0.6B-GGUF:Q4_K_M
--tokenizer Qwen/Qwen3-0.6B
# Oppure un file locale già scaricato:
vllm serve ./Qwen3-0.6B-Q4_K_M.gguf
--tokenizer Qwen/Qwen3-0.6B Il flag --tokenizer non è decorazione. La documentazione ufficiale raccomanda il tokenizer del modello base perché la conversione del tokenizer GGUF è «lunga e instabile, specialmente per modelli con vocabolari grandi». Saltarla significa scambiare un flag di una riga con un avvio lungo e capriccioso.
Due GPU, un modello: aggiungi --tensor-parallel-size 2 per distribuire lo stesso GGUF su entrambe le schede — il tensor parallelism funziona con GGUF come con qualsiasi altro formato.
Perché vLLM rifiuta GGUF su CPU?
È la parte che sorprende. La reputazione del GGUF è CPU prima di tutto — è il formato su cui llama.cpp ha costruito il suo nome, girando su laptop e Raspberry Pi. Dentro vLLM la situazione si inverte. La tabella ufficiale di compatibilità hardware segna GGUF:
| Hardware | GGUF in vLLM |
|---|---|
| NVIDIA Volta / Turing / Ampere / Ada / Hopper | supportato |
| GPU AMD | supportato |
| GPU Intel | non supportato |
| CPU x86 | non supportato |
| CPU Arm | non supportato |
Fonte: documentazione quantizzazione vLLM. Il motivo è architetturale: il percorso GGUF di vLLM dequantizza i blocchi verso kernel GPU pensati per il serving a batch. Non c’è un kernel CPU dietro, perché vLLM è un motore di serving, non un giocattolo da laptop. Senza GPU sulla macchina nessun flag ti salva — usa llama.cpp.
Cosa si rompe: la lista onesta dei limiti
La stessa pagina della documentazione porta un avviso che merita la citazione letterale: «il supporto GGUF in vLLM è altamente sperimentale e poco ottimizzato». Concretamente:
- La copertura delle quantizzazioni è più stretta di llama.cpp. I K-quant che tutti scaricano (Q4_K_M e compagnia) funzionano; gli schemi esotici non sempre. llama.cpp resta l’implementazione di riferimento del formato.
- Il supporto alle architetture arriva tardi. Le nuove famiglie di modelli atterrano prima in llama.cpp; il plugin segue.
- Niente caricamento lazy via mmap. llama.cpp mappa il file in memoria; vLLM lo carica come qualsiasi checkpoint.
- È prima di tutto una funzione di impronta di memoria. La documentazione inquadra GGUF come modo per ridurre l’uso di VRAM, non come scommessa sul throughput.
Nulla di questo è nascosto. È tutto nel primo paragrafo della pagina ufficiale GGUF — più di quanto la maggior parte delle funzionalità sperimentali conceda.
vLLM o llama.cpp per GGUF: chi vince?
Strumenti diversi che leggono lo stesso file:
| vLLM + GGUF | llama.cpp | |
|---|---|---|
| Inferenza su CPU | no | sì, di prima classe |
| Utenti simultanei | continuous batching, fatto per quello | limitato |
| Copertura dei quant | sottoinsieme, sperimentale | il riferimento |
| Installazione | vLLM + plugin | un binario |
| Ideale per | una GPU, molti utenti | un utente, qualsiasi hardware |
Se servi un modello a un team da una singola GPU, vLLM + GGUF ti permette di riutilizzare gli stessi file Q4_K_M che condivide il resto del mondo local-LLM — con più scelta nella nostra guida alla quantizzazione GGUF. Per il confronto completo tra engine, vedi llama.cpp vs Ollama e come eseguire modelli GGUF in locale.
La regola in una riga: stesso file, istinti opposti — llama.cpp tratta GGUF come IL formato, vLLM come un’opzione.
FAQ
vLLM può eseguire modelli GGUF?
Sì. Installa il vllm-gguf-plugin e servi con la sintassi repo:quant_type — ma solo su GPU. Il percorso CPU di vLLM non copre GGUF.
vLLM esegue GGUF su CPU?
No. La tabella ufficiale di compatibilità hardware segna GGUF come non supportato su CPU x86 e Arm — llama.cpp o Ollama restano la via CPU.
Servire GGUF con vLLM o llama.cpp?
vLLM quando una sola GPU deve servire più utenti simultanei; llama.cpp quando la macchina non ha GPU o vuoi la copertura di quantizzazione più ampia.
— mrsaynothing
— mrsaynothing
Note sul campo su AI, Linux e self-hosting.
Ricevi il prossimo how-to via email
Una email per articolo. Sistemi e vai avanti.
che cos'è?128k di contesto sul desktop? Una bugia. La cache KV li ha mangiati.
Ti piacciono gli articoli? È così che costruisco per lavoro. assumimi