Torna al blog

Eseguire modelli GGUF in locale: Ollama, llama.cpp e vLLM

7 settembre 2026

Hai scaricato un file .gguf e ti domandi come farlo girare davvero? La strada più rapida: ollama run hf.co/<repo>:Q4_K_M — Ollama prende il GGUF direttamente da Hugging Face e lo mette in servizio. GGUF è il formato a file singolo introdotto da llama.cpp che oggi parlano tutti gli strumenti per LLM locali, quindi lo stesso file gira in Ollama, llama.cpp, LM Studio, Jan e (con riserve) vLLM. Questa guida copre ogni runner con comandi pronti da incollare, come scegliere la quantizzazione giusta per la tua VRAM e gli errori di caricamento che incontrerai sul serio.

Che cos’è un file GGUF?

GGUF (GGML Universal File) è un formato contenitore per modelli linguistici quantizzati. Un solo file tiene i pesi, il tokenizer e i metadati del modello — nient’altro da scaricare, niente minestra di config. I pesi al suo interno sono quantizzati: compressi da float a 16 bit a interi a 4 bit (o meno), ed è per questo che un modello 9B che a precisione piena richiede ~18 GB entra in ~5,5 GB come file Q4 e gira su una GPU da gaming o perfino su una CPU.

Nel nome di un file GGUF contano due cose:

  1. Il modello di basegemma-3-4b-it-GGUF è un Gemma 3 4B fine-tuned ed esportato in GGUF.
  2. Il tag di quantQ4_K_M, Q8_0, IQ4_XS e compagni dicono quanto aggressive è stata la compressione dei pesi. Su come sceglierne uno, più sotto.

Ollama può eseguire modelli GGUF?

Sì — GGUF è il formato nativo di Ollama, e dal 2024 può scaricarne uno direttamente da Hugging Face senza che tu debba toccare un file:

# Scarichi una quant GGUF direttamente da Hugging Face e ci chiacchieri
ollama run hf.co/bartowski/gemma-2-9b-it-GGUF:Q4_K_M

# Il tag di quant dopo i due punti sceglie il file dentro la repo
ollama run hf.co/ggml-org/gemma-3-4b-it-GGUF:Q8_0

Hai già scaricato un .gguf da solo? Punta un Modelfile al file:

# Modelfile — basta una riga
FROM ./gemma-2-9b-it-Q4_K_M.gguf
ollama create gemma9b -f Modelfile
ollama run gemma9b

Ollama decide l’offload GPU in automatico ed espone un’API compatibile OpenAI sulla porta 11434, così qualunque cosa parli quell’API può usare il modello. Il costo è controllo: non scegli tu quanti layer vanno in GPU.

Come si esegue un file GGUF in llama.cpp?

llama.cpp è il posto dove nasce GGUF — il formato esiste per lui — quindi il supporto è il più profondo e aggiornato. Il binario llama-server ti dà sia una chat UI sia un endpoint compatibile OpenAI:

# Scarica direttamente da Hugging Face (sceglie un GGUF adatto alla tua macchina)
llama-server -hf ggml-org/gemma-3-4b-it-GGUF --port 8080

# Oppure esegui un file che hai già, con offload GPU totale
llama-server -m ./gemma-2-9b-it-Q4_K_M.gguf -ngl 99 --port 8080

-ngl 99 spinge 99 layer sulla GPU; impostalo sotto il massimo che la tua VRAM consente e il resto resta in CPU. Quella manopola di offload parziale è il superpotere di llama.cpp — un modello 9B gira bene su una scheda da 6 GB con 20 layer su 48 in offload, solo più lento. Per il prompting una-tantum invece del server, sostituisci llama-server con llama-cli mantenendo la stessa flag -m.

LM Studio è lo stesso motore dietro una GUI desktop: trascina un file .gguf nella sua cartella dei modelli (o cerca su Hugging Face dall’app) e clicca load. Per la scelta dello strumento in sé, il confronto Ollama vs LM Studio copre quale applicazione mettere sotto i tuoi modelli.

Quale quantizzazione GGUF scaricare?

Risposta predefinita: Q4_K_M. È il punto dolce della community — a un paio di punti percentuali dalla qualità a precisione piena, a circa un quarto delle dimensioni. La scala, dalla più grande alla più piccola:

  • Q8_0 — quasi lossless; usala se la tua VRAM si mangia 8,5 bit per peso senza accorgersene.
  • Q6_K / Q5_K_M — un gradino giù nelle dimensioni, ancora eccellente per modelli 30B+.
  • Q4_K_M — la predefinita. Per i modelli 7–14B è qui che la qualità per GB tocca il picco.
  • IQ4_XS / Q3_K_M — per spremere un modello grande in una scheda piccola; la perdita di qualità comincia a notarsi.
  • Q2_K e sotto — ultima spiaggia; il modello comincia a degradare in nonsenso a metà frase.

La regola pratica per far entrare tutto: dimensione del file in GB più ~1–2 GB di overhead per il contesto devono stare nella tua VRAM. Un Q4_K_M da 4,7 GB di un modello 9B sta comodo su una scheda da 8 GB. Preferisci un modello più piccolo a quant più alta a un modello più grande a quant pessima — un Q8 4B di solito batte un Q2 9B.

GGUF vs Safetensors: quale formato ti serve?

Safetensors è il formato di archivio non quantizzato — pesi a precisione piena per training, fine-tuning e strumenti come transformers e ComfyUI. GGUF è il formato quantizzato ed eseguibile per l’inferenza sul tuo hardware. Non puoi fare fine-tuning di un GGUF, e non puoi eseguire un file safetensors in Ollama o llama.cpp senza prima convertirlo (è a questo che serve lo script convert_hf_to_gguf.py in llama.cpp). Regola: training o pipeline d’immagine → safetensors; chat e serving in locale → GGUF. Se la tua ricerca partiva come «gguf vs safetensors», questa divisione è tutta la risposta.

Quale runner GGUF usare?

RunnerAdatto aInstallazioneGPU offloadAPI compatibile OpenAI
OllamaServizio install-and-forgetOne-liner con curlAutomaticoSì (:11434/v1)
llama.cppMassimo controllo, funzioni più recentiBuild o package managerManopola manuale -nglSì (llama-server)
LM StudioGUI desktop, esplorazione modelliDownload dell’appAutomaticoSì (server locale)
vLLMServing multiutente in batchpip install vllmAutomaticoSì (nativa)

Scegli Ollama se vuoi che giri al boot e fuori dai piedi — è quello che uso sul mio homelab per servire i modelli a tutta la rete. Scegli llama.cpp quando ti serve una funzione il giorno stesso in cui esce (le nuove architetture arrivano lì prima) o vuoi controllo della memoria a livello di layer. Scegli LM Studio per una GUI. Scegli vLLM solo quando un modello deve servire molti utenti concorrenti — il suo supporto GGUF funziona, ma è di seconda classe rispetto ai suoi formati nativi.

Perché il mio modello GGUF non si carica?

I quattro errori che coprono la maggior parte dei casi:

  1. unknown model architecture — il GGUF usa un’architettura più recente del tuo runtime (i nuovi modelli MoE e vision arrivano di continuo). Aggiorna Ollama o ricompila llama.cpp; non esiste altro rimedio.
  2. Out of memory al caricamento — la quant è troppo grande per la tua VRAM più il contesto. Scendi di un gradino (Q4_K_MQ3_K_M), abbassa -ngl o riduci il contesto con -c 4096.
  3. Download troncato / corrotto — il caricamento del GGUF fallisce con un errore di magic number o di metadati. Riscarica e confronta lo SHA256 mostrato sulla pagina Hugging Face.
  4. ollama run ./model.gguf si rifiuta — previsto: la run di Ollama accetta nomi di modelli, non percorsi di file. Usa la via del Modelfile mostrata sopra.

Un’ultima prospettiva che vale conoscere: un endpoint GGUF locale si abbina bene agli strumenti di coding agentici — punta un client compatibile OpenAI al tuo endpoint e i completamenti costano solo la luce. I migliori LLM locali per coding hanno testato quali modelli meritano lo slot quando l’impianto di questa guida funziona.

— mrsaynothing

Get the next one by email

One email per post. No spam, no algorithms.

self-hosted · no third parties · one-click unsubscribe

what is this?

Sincronizzare una fork con upstream in Git: 3 metodi sicuri

Ti piacciono gli articoli? È così che costruisco per lavoro. assumimi