Lancer un modèle GGUF en local : Ollama, llama.cpp & vLLM

Comment exécuter des modèles GGUF en local : pull Ollama en une ligne, llama.cpp direct depuis une URL Hugging Face, et le bon quant selon ta VRAM.

HUMANpar @mrsaynothing49d7 min de lecture

Tu as téléchargé un fichier .gguf et tu te demandes comment le faire tourner ? Le chemin le plus court : ollama run hf.co/<repo>:Q4_K_M — Ollama tire le GGUF directement depuis Hugging Face et le sert. GGUF est le format de modèle à fichier unique introduit par llama.cpp et que tous les outils LLM locaux parlent aujourd'hui : le même fichier tourne dans Ollama, llama.cpp, LM Studio, Jan et (avec des réserves) vLLM. Ce guide passe chaque runner en revue avec des commandes à copier-coller, explique comment choisir la bonne quantification pour ta VRAM, et couvre les erreurs de chargement que tu rencontreras vraiment. Et si vous vous demandez can vLLM run GGUF — oui, via un plugin hors noyau, GPU uniquement.

C'est quoi un fichier GGUF ?

GGUF (GGML Universal File) est un format conteneur pour les modèles de langage quantifiés. Un seul fichier contient les poids, le tokenizer et les métadonnées du modèle — rien d'autre à télécharger, pas de soupe de config. Les poids à l'intérieur sont quantifiés : compressés de flottants 16 bits vers des entiers 4 bits (ou moins), ce qui fait qu'un modèle 9B qui exige ~18 Go en pleine précision tient dans ~5,5 Go en Q4 et tourne sur un GPU de jeu, voire un CPU.

Deux choses comptent dans le nom d'un fichier GGUF :

  1. Le modèle de base — gemma-3-4b-it-GGUF est un Gemma 3 4B affiné, exporté en GGUF.
  2. Le tag de quant — Q4_K_M, Q8_0, IQ4_XS et compagnie disent à quel point les poids ont été compressés. Le choix en détail plus bas.

Ollama peut-il exécuter des modèles GGUF ?

Oui — GGUF est le format natif d'Ollama, et depuis 2024 il peut en tirer un directement depuis Hugging Face sans que tu touches jamais un fichier :

# Tirer un quant GGUF directement depuis Hugging Face et discuter avec
ollama run hf.co/bartowski/gemma-2-9b-it-GGUF:Q4_K_M

# Le tag de quant après les deux-points choisit le fichier dans le dépôt
ollama run hf.co/ggml-org/gemma-3-4b-it-GGUF:Q8_0

Déjà téléchargé un .gguf toi-même ? Pointe un Modelfile dessus :

# Modelfile — une ligne suffit
FROM ./gemma-2-9b-it-Q4_K_M.gguf
ollama create gemma9b -f Modelfile
ollama run gemma9b

Ollama décide de l'offload GPU tout seul et expose une API compatible OpenAI sur le port 11434, donc tout ce qui parle cette API peut utiliser le modèle. La contrepartie, c'est le contrôle : tu ne choisis pas combien de couches partent sur le GPU.

Comment lancer un fichier GGUF avec llama.cpp ?

llama.cpp est la maison d'origine de GGUF — le format existe pour lui — donc le support y est le plus profond et le plus frais. Le binaire llama-server te donne à la fois une UI de chat et un endpoint compatible OpenAI :

# Télécharge direct depuis Hugging Face (choisit un GGUF adapté à ta machine)
llama-server -hf ggml-org/gemma-3-4b-it-GGUF --port 8080

# Ou lance un fichier que tu as déjà, avec offload GPU complet
llama-server -m ./gemma-2-9b-it-Q4_K_M.gguf -ngl 99 --port 8080

-ngl 99 pousse 99 couches sur le GPU ; règle-le sous ce que ta VRAM permet et le reste reste sur CPU. Ce réglage d'offload partiel, c'est le superpouvoir de llama.cpp — un modèle 9B tourne très bien sur une carte de 6 Go avec 20 couches sur 48 offloadées, juste plus lentement. Pour un prompt unique plutôt qu'un serveur, remplace llama-server par llama-cli avec le même flag -m.

LM Studio, c'est le même moteur derrière une GUI de bureau : dépose un .gguf dans son dossier de modèles (ou cherche sur Hugging Face dans l'appli) et clique charger. Pour le choix de l'outil lui-même, la comparaison Ollama vs LM Studio couvre quoi mettre sous tes modèles.

Quel quant GGUF télécharger ?

Réponse par défaut : Q4_K_M. C'est le point d'équilibre de la communauté — à un ou deux pour cent de la pleine précision pour environ un quart de la taille. L'échelle, du plus grand au plus petit :

  • Q8_0 — quasi sans perte ; sers-t'en si ta VRAM avale 8,5 bits par poids sans broncher.
  • Q6_K / Q5_K_M — un cran plus petit, toujours excellent pour des modèles 30B+.
  • Q4_K_M — le choix par défaut. Pour des modèles 7–14B, c'est là que la qualité par Go culmine.
  • IQ4_XS / Q3_K_M — pour faire entrer un gros modèle sur une petite carte ; la perte de qualité devient perceptible.
  • Q2_K et en dessous — dernier recours ; le modèle commence à dériver vers le non-sens en pleine phrase.

La règle de remplissage : taille du fichier en Go plus ~1–2 Go d'overhead de contexte doivent tenir dans ta VRAM. Un Q4_K_M de 4,7 Go d'un modèle 9B est à l'aise sur une carte de 8 Go. Préfère un modèle plus petit à quant plus élevé à un modèle plus gros à quant déplorable — un Q8 4B bat généralement un Q2 9B.

GGUF vs Safetensors : quel format pour quel usage ?

Safetensors est le format d'archive non quantifié — poids pleine précision pour l'entraînement, le fine-tuning et des outils comme transformers et ComfyUI. GGUF est le format quantifié et exécutable pour l'inférence sur ton propre matériel. Tu ne peux pas fine-tuner un GGUF, et tu ne peux pas faire tourner un fichier safetensors dans Ollama ou llama.cpp sans le convertir d'abord (c'est le rôle du script convert_hf_to_gguf.py de llama.cpp). Règle : entraînement ou pipelines d'images → safetensors ; chat local et service → GGUF. Si ta recherche est partie de « gguf vs safetensors », cette ligne est toute la réponse.

Quel runner GGUF choisir ?

Runner Idéal pour Installation Offload GPU API compatible OpenAI
Ollama Service qu'on configure puis qu'on oublie one-liner curl Automatique Oui (:11434/v1)
llama.cpp Contrôle max, fonctions les plus récentes Build ou gestionnaire de paquets Molette manuelle -ngl Oui (llama-server)
LM Studio GUI de bureau, navigation de modèles Téléchargement d'appli Automatique Oui (serveur local)
vLLM Service multi-utilisateurs en lot pip install vllm Automatique Oui (natif)

Prends Ollama si tu le veux lancé au boot et hors de vue — c'est ce que j'utilise sur mon homelab pour servir des modèles à tout le réseau. Prends llama.cpp quand il te faut une fonction le jour de sa sortie (les nouvelles architectures y atterrissent en premier) ou un contrôle mémoire couche par couche. Prends LM Studio pour une GUI. Prends vLLM seulement quand un même modèle doit servir beaucoup d'utilisateurs simultanés — son support GGUF fonctionne, mais reste de seconde classe à côté de ses formats natifs.

Pourquoi ton modèle GGUF refuse-t-il de charger ?

Les quatre erreurs qui couvrent la plupart des cas :

  1. unknown model architecture — le GGUF utilise une architecture antérieure à ton runtime (les nouveaux modèles MoE et vision arrivent sans arrêt). Mets à jour Ollama ou recompile llama.cpp ; il n'existe aucune autre correction.
  2. Manque de mémoire au chargement — le quant est trop gros pour ta VRAM plus le contexte. Descends d'un cran (Q4_K_M → Q3_K_M), baisse -ngl ou réduis le contexte avec -c 4096.
  3. Téléchargement tronqué/corrompu — le chargement du GGUF échoue avec une erreur de magic number ou de métadonnées. Retélécharge et compare le SHA256 affiché sur la page Hugging Face.
  4. ollama run ./model.gguf refuse — normal : le run d'Ollama prend des noms de modèles, pas des chemins de fichiers. Passe par la route Modelfile montrée plus haut.

Un dernier angle à connaître : un endpoint GGUF local se marie bien avec les outils de code agentiques — pointe un client compatible OpenAI dessus et les complétions ne coûtent que l'électricité. Les meilleurs LLM locaux pour coder ont testé quels modèles méritent la place une fois que la plomberie de ce guide tourne.

Une fois le choix du runtime posé, lis llama.cpp vs Ollama — son dossier public passé au crible, et les compromis ne sont pas ceux que les README laissent entendre.

Et si ton chemin passe par le mode GGUF de vLLM, can vLLM run GGUF détaille la réalité GPU-only et les flags de service exacts.