Intermédiaire 11 minllama.cpp

llama.cpp : c'est quoi, et faut-il quitter Ollama ?

Réponse directe

llama.cpp est le moteur d'inférence en C/C++ qui exécute les modèles au format GGUF sur CPU et sur GPU NVIDIA, AMD, Intel et Apple Silicon ; Ollama, LM Studio et KoboldCpp s'appuient tous dessus. L'utiliser directement, via llama-server, ne rend pas un modèle plus rapide sur le même matériel : cela donne la main sur des réglages que les surcouches choisissent à votre place, comme la répartition GPU/CPU, la taille du contexte et la quantification du cache KV.

llama.cpp est le moteur d'inférence écrit en C et C++ qui exécute les modèles au format GGUF sur CPU, sur GPU NVIDIA, AMD et Intel, et sur Mac. Au 20 septembre 2026, la plupart des applications de LLM local s'appuient sur lui ou sur sa bibliothèque ggml : Ollama, LM Studio, KoboldCpp, Jan. L'utiliser directement ne rend pas votre modèle plus rapide. Cela vous donne la main sur des réglages que les surcouches décident à votre place.

Par Mohamed Meguedmi·Màj 2026-09-28·Testé sur macOS 14+

#llama.cpp en bref

Le projet a été lancé en mars 2023 par Georgi Gerganov, avec un objectif simple : faire tourner le modèle LLaMA de Meta sur un MacBook, sans Python ni dépendance lourde. Il est publié sous licence MIT. Trois ans plus tard, le dépôt (passé sous l'organisation ggml-org) prend en charge des centaines d'architectures, et le format de fichier qu'il a défini en août 2023, le GGUF, est devenu le standard de fait pour distribuer un modèle quantifié.

Deux choix techniques expliquent ce succès. Le premier est la quantification : llama.cpp sait exécuter des poids compressés de 2 à 8 bits, ce qui fait tenir un modèle de 8 milliards de paramètres dans 5 Go au lieu de 16. Le second est le partage entre processeur et carte graphique : quand un modèle ne rentre pas entièrement en VRAM, une partie des couches reste en RAM et le reste part sur le GPU. C'est plus lent qu'un chargement complet, mais cela fonctionne, et peu de moteurs le proposent.

#Ce qu'il y a dans la boîte

Le kit IA Locale

Ton ChatGPT privé et gratuit sur ta machine en 1 heure — LM Studio, Ollama, Open WebUI, tes documents, sans cloud.

  • Espace en ligne à vie
  • PDF + fichiers
  • Mises à jour à vie
llama-cli
Le chat en ligne de commande. Utile pour tester un modèle ou un réglage en quelques secondes.
llama-server
Un serveur HTTP avec une API compatible OpenAI et une interface web intégrée, sur le port 8080. C'est la pièce que la plupart des utilisateurs avancés font tourner en permanence.
llama-bench
L'outil de mesure. Il donne séparément la vitesse de lecture du prompt et la vitesse de génération, ce qui permet de comparer deux réglages sans se raconter d'histoires.
llama-quantize
Convertit un GGUF en précision complète vers une quantification plus légère (Q4_K_M, Q5_K_M, Q8_0).

#Ce que les surcouches ajoutent, et cachent

Ollama, LM Studio et KoboldCpp apportent ce que llama.cpp ne fait pas : un catalogue de modèles, le téléchargement en une commande, une interface, le chargement et le déchargement automatiques. En échange, ils fixent des valeurs par défaut. Le tableau ci-dessous ne compare pas des performances, il indique qui décide de quoi.

Comparatif de contrôle, pas de vitesse · état au 20/09/2026
Réglagellama.cpp nuOllamaLM StudioKoboldCpp
Taille du contexteOption -c, libreValeur par défaut prudente, modifiable par variable ou ModelfileCurseur par modèleOption au lancement
Choix de la quantificationN'importe quel fichier GGUFTag du catalogue, Q4 par défautListe proposée au téléchargementN'importe quel fichier GGUF
Couches envoyées au GPUOption -ngl, couche par coucheAutomatiqueCurseurOption au lancement
Quantification du cache KVOptions -ctk et -ctvVariable d'environnement globaleRéglage avancéOption au lancement
APIllama-server, compatible OpenAIAPI propre + compatibilité OpenAIServeur compatible OpenAIAPI propre + compatibilité OpenAI
Mises à jour du moteurLe jour même, à chaque commitAvec un décalageAvec un décalageAvec un décalage

La dernière ligne compte plus qu'il n'y paraît. Quand une nouvelle architecture de modèle sort, elle est d'abord prise en charge dans llama.cpp, puis dans les surcouches quelques jours ou semaines plus tard. Si vous voulez tester un modèle la semaine de sa publication, c'est souvent le seul chemin.

#Les quatre réglages qui changent tout

-ngl (n-gpu-layers)
Le nombre de couches du modèle placées en VRAM. La valeur 99 signifie « tout ce qui rentre ». Si le modèle dépasse votre VRAM, baissez ce nombre jusqu'à ce que le chargement passe : chaque couche laissée au CPU ralentit la génération, mais un modèle qui tourne à 8 tokens par seconde vaut mieux qu'un modèle qui ne démarre pas.
-c (ctx-size)
La fenêtre de contexte allouée. Le cache KV grandit avec elle : sur un modèle 8B, passer de 8 000 à 32 000 tokens coûte plusieurs Go de VRAM. Allouez ce dont vous avez besoin, pas le maximum annoncé par le modèle.
-fa (flash-attn)
Active Flash Attention, qui réduit la mémoire et accélère la lecture des longs prompts. C'est aussi un prérequis pour quantifier le cache KV.
--n-cpu-moe
Pour les modèles MoE, garde les experts d'un certain nombre de couches en RAM et laisse le reste sur le GPU. C'est ce qui permet de faire tourner un MoE de 30 ou 120 milliards de paramètres sur une carte de 16 Go à une vitesse utilisable.

#Ce qui a changé : --fit règle -ngl à votre place

Longtemps, régler -ngl à la main a été le premier réflexe de tout guide llama.cpp : mettre 99 pour tout envoyer sur le GPU, puis redescendre par tâtonnement si le chargement échouait. Ce n'est plus l'étape obligée. Le projet a ajouté une option --fit, activée par défaut, qui ajuste automatiquement les paramètres non précisés (dont -ngl) pour que le modèle tienne dans la mémoire disponible. Sur une carte modeste, cela évite l'aller-retour habituel entre un lancement qui échoue et un -ngl réduit à la main.

→
-ngl 99 reste valable
Si vous préférez forcer un placement précis, -ngl continue de fonctionner exactement comme avant ; --fit ne s'applique qu'aux paramètres que vous n'avez pas fixés vous-même. Le changement de comportement concerne la valeur par défaut, pas la commande.

#Quel backend pour votre carte

llama.cpp se compile, ou se télécharge, pour un backend de calcul donné. Le bon choix dépend uniquement de votre matériel. Le tableau reprend les familles de notre base de 90 configurations.

Familles issues de la base matérielle QuelLLM (90 GPU et puces) · 20/09/2026
Votre matérielBackend conseilléRemarque
NVIDIA GTX 10 à RTX 50, fixes et portablesCUDALe chemin le plus rapide et le mieux testé.
AMD Radeon RX 7000 et RX 9000ROCm (HIP) ou VulkanROCm est plus rapide quand il fonctionne. Vulkan s'installe sans friction, y compris sous Windows.
AMD Radeon RX 6000 et plus anciennesVulkanPrise en charge ROCm partielle ou absente selon la carte.
Apple M1 à M5MetalActivé par défaut dans les binaires macOS. Toute la mémoire unifiée est utilisable.
GPU intégré Intel ou AMD, Intel ArcVulkan ou SYCLGain réel face au CPU seul sur les petits modèles.
Aucun GPUCPU (AVX2, AVX-512, NEON)Fonctionne partout. Visez des modèles de 8 milliards de paramètres au plus.

#Nos mesures avec llama.cpp

llama.cpp est le moteur de référence de notre banc de test, précisément parce qu'il tourne à l'identique sur toutes les plateformes. Voici les vitesses de génération relevées sur Llama 3.1 8B en Q4, contexte de 2 048 tokens, une seule requête, Flash Attention activée.

Mesuré · banc QuelLLM, llama.cpp b4280, relevés du 18/04/2026 · tableau complet sur la page Benchmarks
MachineMémoireLlama 3.1 8B Q4
RTX 509032 Go172 tok/s
RTX 409024 Go128 tok/s
RTX 407012 Go76 tok/s
Mac M3 Max64 Go unifiés64 tok/s
RTX 306012 Go44 tok/s
Ryzen 7 7700, CPU seulRAM système7,8 tok/s

Deux lectures. D'abord, l'écart entre une RTX 3060 et un processeur seul est d'un facteur cinq à six : même une carte d'entrée de gamme change l'expérience. Ensuite, ces chiffres seraient pratiquement les mêmes dans Ollama ou LM Studio sur les mêmes machines, puisque le moteur de calcul est le même.

#Rester sur Ollama ou passer à llama.cpp

Restez sur Ollama ou LM Studio si…Passez à llama.cpp si…
Vous voulez discuter avec un modèle sans lire de documentation.Votre modèle dépasse la VRAM et vous voulez régler finement la répartition GPU et CPU.
Vous changez souvent de modèle et appréciez le catalogue intégré.Vous voulez tester une architecture sortie cette semaine.
Vos outils (Open WebUI, extensions d'éditeur) attendent l'API d'Ollama.Vous montez un serveur durable et voulez maîtriser chaque option, du contexte au cache KV.

#Démarrer en dix minutes

Nul besoin de compiler pour essayer. Des binaires précompilés sont publiés pour Windows, macOS et Linux à chaque version, et les gestionnaires de paquets font le reste. La commande ci-dessous télécharge un petit modèle depuis Hugging Face et ouvre l'interface web sur http://localhost:8080.

Installer puis lancer le serveur
# 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

Pour un modèle du catalogue plus ambitieux, récupérez le fichier GGUF de votre choix et pointez dessus avec l'option -m. La compilation depuis les sources ne devient utile que pour activer un backend précis ou suivre le développement au jour le jour.

#Les erreurs de chargement les plus courantes

La plupart des blocages avec llama.cpp se résument à trois causes : un dépassement de mémoire, un fichier GGUF incompatible avec le build installé, ou une option mal orthographiée. Le message d'erreur affiché en ligne de commande indique presque toujours laquelle des trois, à condition de le lire jusqu'au bout plutôt que de le fermer et de relancer.

Lire le message avant de changer de réglage
Message ou symptômeCause probableÀ essayer
cudaMalloc failed: out of memoryLe modèle, avec le contexte demandé, dépasse la VRAM disponibleRéduire -c, laisser --fit ajuster -ngl, ou choisir une quantification plus légère
unknown model architectureLe fichier GGUF utilise une architecture plus récente que le binaire installéMettre à jour vers la dernière version publiée ; les nouvelles architectures arrivent d'abord dans llama.cpp
Génération très lente malgré un GPU récentLes couches ne sont pas toutes passées sur le GPU, souvent faute de VRAM libreVérifier la sortie de chargement (ligne « offloaded »), fermer les autres applications qui occupent la carte
error: invalid argumentUne option renommée ou mal orthographiée dans la commandeComparer avec llama-server --help, qui liste les alias courts et longs à jour

La ligne de chargement affichée au démarrage du serveur mérite d'être lue une fois en entier : elle indique le nombre de couches réellement envoyées au GPU, la taille de contexte effective et le type de cache KV utilisé. C'est souvent plus rapide que d'ajouter des options au hasard jusqu'à ce que ça marche. Gardez aussi un œil sur la version installée : llama.cpp publie des versions nocturnes très fréquemment, et un correctif pour votre carte ou votre modèle est parfois déjà sorti sans être encore arrivé dans le paquet Homebrew ou winget que vous avez installé la semaine précédente.

#FAQ

llama.cpp est-il plus rapide qu'Ollama ?+
À réglages identiques, non : Ollama s'appuie sur le même moteur de calcul, donc la vitesse de génération est très proche. L'écart vient des réglages. llama.cpp vous laisse choisir précisément le nombre de couches sur le GPU, la taille du contexte et la quantification du cache, ce qui permet parfois de faire tenir en VRAM un modèle qu'Ollama aurait partiellement laissé au CPU.
Faut-il savoir compiler pour utiliser llama.cpp ?+
Non. Des binaires précompilés sont publiés à chaque version pour Windows, macOS et Linux, et le paquet est disponible dans Homebrew (macOS, Linux) et winget (Windows) : une commande d'installation suffit, sans toucher à un compilateur. La compilation depuis les sources ne devient utile que pour activer un backend précis absent du binaire officiel, appliquer un correctif local ou suivre la branche de développement au jour le jour plutôt qu'une version publiée.
Peut-on utiliser llama.cpp sans carte graphique ?+
Oui, c'est même son usage d'origine : le projet a été pensé pour faire tourner un modèle sur un simple processeur, sans GPU ni Python. Sur un processeur récent, un modèle 8B en Q4 tourne autour de 8 tokens par seconde sur notre banc, ce qui reste lent mais lisible pour discuter ou résumer. Au-delà de 14 milliards de paramètres, l'attente devient pénible sans accélération matérielle.
Quelle différence entre llama.cpp et vLLM ?+
llama.cpp vise une machine personnelle, tous matériels confondus, avec des modèles quantifiés en GGUF. vLLM vise un serveur GPU qui sert beaucoup de requêtes en parallèle, avec les poids Hugging Face. Le premier maximise ce qui tourne chez vous, le second le débit d'un GPU partagé.
Et sur Mac, llama.cpp ou MLX ?+
Les deux exploitent le GPU Apple via la mémoire unifiée. MLX, la bibliothèque conçue par Apple pour ses propres puces, prend souvent l'avantage en vitesse sur les modèles récents ; llama.cpp garde pour lui l'immense catalogue de fichiers GGUF déjà quantifiés et des réglages plus fins sur le contexte et le cache KV. En pratique, beaucoup d'utilisateurs Mac gardent les deux installés et choisissent selon le format disponible pour le modèle voulu.

Ce guide vous a aidé ?

Un retour, une erreur, une précision ? Faites-nous signe, ça améliore le guide pour tout le monde.