Local LLM
llama.cpp — The C++ Engine Under Ollama, LM Studio, and Most Local LLMs logo

llama.cpp — le moteur C++ au cœur d’Ollama, LM Studio et de la plupart des LLM locaux

llama.cpp est l’implémentation C++ sous licence MIT de Georgi Gerganov pour l’inférence de la famille Llama — le moteur sur lequel s’appuient la plupart des outils LLM locaux. Prend en charge CPU, CUDA, ROCm, Metal, Vulkan, ainsi qu’une quantification agressive adaptée à tout matériel.

Why llama.cpp

Quand Georgi Gerganov a publié llama.cpp en mars 2023, faire tourner Llama sur un MacBook est passé d’un projet de recherche à un changement de 20 lignes. Les priorités d’implémentation — zéro dépendance, quantification agressive (2-8 bits) et portabilité maximale — ont fini par définir la catégorie LLM local. Ollama, LM Studio et LocalAI encapsulent tous llama.cpp. Si vous installez un logiciel LLM local en 2026, vous faites probablement tourner llama.cpp, que vous le sachiez ou non.

Utiliser llama.cpp directement vous offre un contrôle maximal et une surface minimale. Pas de gestionnaire de runtime, pas de serveur HTTP par défaut (même s’il en existe un), pas de dépendance Python. Le compromis : chaque commodité (gestion de modèles, UI de chat, compatibilité OpenAI) devient du travail que vous faites vous-même ou que vous déléguez à un outil de plus haut niveau.

Allez directement à llama.cpp quand : vous avez besoin d’un contrôle absolu sur la quantification/les flags, vous déployez sur du matériel inhabituel (Raspberry Pi, anciens CPU, mobile), ou vous construisez un produit au-dessus de l’API C de llama.cpp. Sinon, laissez Ollama ou LM Studio l’encapsuler pour vous.

Quick Start — Build, Download, Run

-hf télécharge directement des quantifications GGUF depuis Hugging Face (pas de conversion manuelle). llama-server expose un endpoint /v1/chat/completions compatible OpenAI plus une UI web minimale sur / pour un usage interactif. Suffixes de quantification : Q4_K_M est une valeur par défaut sûre ; Q5_K_M pour une qualité supérieure ; Q8_0 pour quasi-sans-perte mais plus volumineux.

# 1. Clone and build (Metal on macOS, CUDA on NVIDIA, CPU everywhere)
git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp

# macOS Metal
cmake -B build -DGGML_METAL=ON
# NVIDIA CUDA
# cmake -B build -DGGML_CUDA=ON
# AMD ROCm
# cmake -B build -DGGML_HIP=ON
# CPU-only
# cmake -B build
cmake --build build --config Release -j

# 2. Grab a GGUF model from Hugging Face
# (e.g., Qwen 2.5 7B Instruct Q4_K_M)
./build/bin/llama-cli -hf Qwen/Qwen2.5-7B-Instruct-GGUF:Q4_K_M \
  -p "Three facts about llama.cpp:" -n 200

# 3. OpenAI-compatible server
./build/bin/llama-server -hf Qwen/Qwen2.5-7B-Instruct-GGUF:Q4_K_M \
  --host 0.0.0.0 --port 8080 -c 8192

# 4. Call it like OpenAI
python - <<'PY'
from openai import OpenAI
c = OpenAI(base_url="http://localhost:8080/v1", api_key="llama-cpp")
print(c.chat.completions.create(
    model="qwen",
    messages=[{"role":"user","content":"One-sentence llama.cpp fact."}],
).choices[0].message.content)
PY

Fonctionnalités clés

Zéro dépendance Python

Pur C++. Pas de virtualenv, pas de conflits pip, pas de matrice de versions CUDA-Python. Distribution en binaire unique.

Support multi-backend

CPU (AVX2/AVX512), CUDA (NVIDIA), ROCm (AMD), Metal (Apple), Vulkan (générique), SYCL (Intel), MUSA (Moore Threads). Compilez une fois pour votre matériel, tourne ailleurs avec un fallback CPU.

Quantification agressive

Q2/Q3/Q4/Q5/Q6/Q8 plus K-quants et I-quants. Compresse les modèles 70B à ~40 Go pour un déploiement single-GPU ou 64 Go de RAM. Les courbes qualité/taille sont bien documentées.

Format GGUF

Format de modèle auto-descriptif avec métadonnées (architecture, prompt template, tokenizer). Remplace l’ancien GGML. Supporté à travers l’écosystème LLM local.

Binaire llama-server

Serveur HTTP compatible OpenAI livré dans le repo. Supporte chat completions, completions, embeddings, streaming, annulation, gestion de slots et une UI web basique.

Embeddings + speech + vision

Livré avec llama-embedding, llama-cli, llama-bench et un support multimodal expérimental (LLaVA, MiniCPM-V). Une seule base de code, plusieurs modes.

Comparaison

 AudienceConvenienceControlPerformance
llama.cppcelui-ciDevelopers, integratorsLow (bring your own UX)MaximumExcellent on any hardware
OllamaDevelopers + semi-technicalHighMediumGood (llama.cpp backend)
LM StudioEnd usersVery high (GUI)Low-mediumGood (llama.cpp / MLX)
vLLMProduction opsMedium-lowHigh for GPUBest on GPU

Cas d'usage

01. Matériel embarqué ou inhabituel

Raspberry Pi, vieux laptops, mobile, ordinateurs single-board. llama.cpp tourne là où les moteurs basés sur Python + CUDA ne peuvent pas.

02. Construire des produits sur l’API C

Si vous embarquez de l’inférence LLM dans une app desktop, un jeu ou une CLI, l’API C de llama.cpp est le chemin le plus propre. Expose aussi des bindings Python (llama-cpp-python) et Rust.

03. Contrôle précis de la quantification

Quand vous voulez expérimenter avec des K-quants spécifiques ou des fichiers imatrix personnalisés, travailler directement avec llama.cpp donne un contrôle que les outils de plus haut niveau cachent.

Tarification et licence

llama.cpp : open source sous licence MIT. Gratuit.

Coût matériel : correspond à la taille du modèle et à la quantification choisies. Un 7B en Q4 tourne sur 6 Go de RAM ; un 70B en Q4 nécessite ~40 Go de RAM ou de VRAM.

Coût opérationnel : vous portez le déploiement. Pour « ça marche tout simplement », Ollama est plus simple. Pour « j’ai besoin exactement de cette configuration », llama.cpp donne un contrôle total.

Assets associés sur TokRepo

Questions fréquentes

llama.cpp vs Ollama — duquel ai-je besoin ?+

Si vous posez la question, Ollama. Ollama encapsule llama.cpp avec la gestion de modèles, le vernis API OpenAI et des installateurs multi-plateformes. Allez vers llama.cpp brut quand vous avez besoin d’un contrôle qu’Ollama n’expose pas — flags de quantification personnalisés, matériel inhabituel ou embarquer l’inférence dans un autre produit.

llama.cpp est-il réservé aux modèles Llama ?+

Malgré le nom, non. Il fait tourner Llama, Qwen, Mistral, Gemma, DeepSeek, Phi, Command-R, Yi et des dizaines d’autres — toute architecture supportée par le format GGUF. La communauté ajoute régulièrement de nouvelles architectures.

Comment se compare la performance face aux moteurs GPU uniquement ?+

Sur GPU, vLLM/TensorRT-LLM gagnent sur le débit brut à grande échelle. Pour la performance single-stream sur une seule machine, llama.cpp avec CUDA est compétitif. Sur Apple Silicon, llama.cpp Metal est proche de MLX pour la plupart des modèles ; MLX prend l’avantage sur certaines architectures.

Et llama-cpp-python ?+

Bindings Python vers la bibliothèque C. Utile quand on embarque l’inférence dans des apps Python sans monter un serveur HTTP. Maintenu séparément ; en retard de quelques jours à quelques semaines sur le repo principal.

llama.cpp peut-il fine-tuner ?+

Le fine-tuning style LoRA via le binaire finetune de llama.cpp existe mais est limité face aux outils basés sur PyTorch. Pour du fine-tuning sérieux, utilisez Axolotl, Unsloth ou MLX-LM ; llama.cpp est avant tout pour l’inférence.

Le format GGUF va-t-il disparaître ?+

Pas dans un futur prévisible. Actif et largement supporté. L’ancien GGML est déprécié — utilisez GGUF pour toute nouvelle conversion de modèle.

Comparer les alternatives