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)
PYFonctionnalité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
| Audience | Convenience | Control | Performance | |
|---|---|---|---|---|
| llama.cppcelui-ci | Developers, integrators | Low (bring your own UX) | Maximum | Excellent on any hardware |
| Ollama | Developers + semi-technical | High | Medium | Good (llama.cpp backend) |
| LM Studio | End users | Very high (GUI) | Low-medium | Good (llama.cpp / MLX) |
| vLLM | Production ops | Medium-low | High for GPU | Best 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
LLaMA-Factory — Fine-Tune 100+ LLMs with a Unified Interface
LLaMA-Factory provides a web UI and CLI to fine-tune large language models including LLaMA, Mistral, Qwen, and more using LoRA, QLoRA, and full-parameter methods without writing training scripts.
LLaMA-Factory — Unified LLM Fine-Tuning Framework
LLaMA-Factory offers a web UI and CLI for fine-tuning over 100 large language models using methods like LoRA, QLoRA, and full-parameter training, with built-in evaluation and export.
Llama Index — Data Framework for LLM Applications
Leading data framework for connecting LLMs to external data. LlamaIndex handles ingestion, indexing, retrieval, and query engines for building production RAG applications.
Llama Stack — Meta Official LLM App Framework
Official Meta framework for building LLM applications with Llama models. Inference, safety, RAG, agents, evals, and tool use. Standardized APIs. 8.3K+ stars.
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.