Aller au contenu
Développement medium

Comparatif des backends d'inférence LLM en 2026

12 min de lecture

logo python

Vous voulez héberger un LLM et vous tombez sur six noms qui reviennent dans tous les benchs : Ollama, llama.cpp, vLLM, SGLang, TGI et LMDeploy. Lequel choisir ? La réponse dépend de trois variables : matériel disponible, profil d'usage (dev local, serving production, batch) et modèles ciblés. Ce comparatif vous donne le tableau de décision, les critères objectifs et les recommandations par profil, sans chiffre inventé.

  • Comprendre ce que chaque backend d'inférence fait vraiment et ce qu'il ne fait pas.
  • Choisir entre Ollama, llama.cpp, vLLM, SGLang, TGI et LMDeploy selon votre matériel.
  • Identifier les critères techniques qui comptent : API OpenAI-compatible, quantification, batching dynamique, structured output.
  • Savoir pourquoi FastChat ne fait plus partie de la sélection.
  • Repérer les cas limites où aucun backend seul ne suffit (multi-modèles, routing, hybridation).

Identifiez votre profil d'usage dans le tableau ci-dessous, vous obtenez le backend recommandé sans avoir à lire la suite. Les sections suivantes détaillent les critères techniques et les cas particuliers.

Profil d'usageMatériel typiqueBackend recommandéAlternative
Développeur en local, modèles 7B–13BCPU + RAM 16 Go ou plusOllamallama.cpp (llama-server)
Quantification fine, contrôle bas niveauCPU / iGPU / Vulkan / Metalllama.cpp
Serving production GPU, mono-modèle1 GPU NVIDIA 24 Go et plusvLLMSGLang
Multi-turn rapide, structured output natif1+ GPU NVIDIASGLangvLLM
Multi-modèles avec routing avancéGPU mono ou multi-nœudvLLM + LiteLLM ProxyTGI
Modèles fortement quantifiés (W4A16)GPU NVIDIALMDeployvLLM

Les six backends partagent une promesse : servir un LLM via une API HTTP. Ils diffèrent sur cinq dimensions qui déterminent l'usage réel. Lisez-les dans l'ordre : la première suffit souvent à éliminer la moitié des candidats.

Le matériel conditionne le choix avant tout autre critère. llama.cpp et Ollama acceptent CPU, iGPU Intel (Vulkan), Apple Silicon (Metal) et GPU NVIDIA/AMD. vLLM et SGLang exigent un GPU NVIDIA récent (Ampere et au-delà, CUDA ≥ 12.x). TGI suit la même contrainte avec un support partiel AMD ROCm. LMDeploy vise spécifiquement les GPU NVIDIA avec un focus sur les modèles quantifiés.

Tous exposent une API REST compatible OpenAI (/v1/chat/completions, /v1/embeddings pour certains). Cela permet de remplacer un backend par un autre sans modifier le code client. Ollama ajoute son endpoint natif (/api/generate), plus simple pour les usages locaux. vLLM, SGLang et TGI offrent l'API OpenAI par défaut. llama.cpp la propose via le binaire llama-server.

vLLM et SGLang sont optimisés pour le throughput agrégé grâce au continuous batching et au PagedAttention. Ils excellent quand des dizaines de requêtes arrivent en parallèle. Ollama et llama.cpp sont optimisés pour la latence en mono-utilisateur : excellents pour un agent local ou un copilote IDE, plus limités sous charge concurrente. Ce critère est souvent le point de bascule entre « dev local » et « serving production ».

llama.cpp lit les formats GGUF (Q4_K_M, Q5_K_M, Q8_0, etc.), la norme pour le CPU et l'hybride CPU/GPU. Ollama utilise GGUF en sous-couche. vLLM accepte AWQ, GPTQ, FP8 et INT8 en GPU. SGLang supporte AWQ, GPTQ et W8A16. LMDeploy se distingue par son support natif W4A16 (kernels Marlin), qui divise la mémoire GPU par quatre sans perte significative sur la plupart des modèles.

SGLang intègre nativement le structured output (JSON, regex, grammaires) au niveau du moteur, sans librairie additionnelle. vLLM propose la même chose via guided_decoding (intégrations Outlines et XGrammar). Ollama et llama.cpp offrent le mode JSON et les grammaires GBNF. TGI s'appuie sur Outlines. LMDeploy reste plus limité sur ce point — c'est un compromis du choix W4A16-first.

Le tableau ci-dessous synthétise les six backends sur les critères qui structurent un choix. Les chiffres de performance font l'objet de la section suivante : ils dépendent du modèle, du matériel et du workload, et ne valent que pour le contexte précis où ils ont été relevés.

BackendLicenceCible matérielleAPI OpenAIQuantif.Structured outputGuide
OllamaMITCPU, GPU, Apple SiliconOui (+ API native)GGUFJSON, GBNFLire
llama.cppMITCPU, GPU, iGPU, Vulkan, MetalOui (llama-server)GGUFJSON, GBNFLire
vLLMApache 2.0GPU NVIDIA (Ampere+)OuiAWQ, GPTQ, FP8, INT8guided_decodingLire
SGLangApache 2.0GPU NVIDIAOuiAWQ, GPTQ, W8A16NatifLire
TGIApache 2.0GPU NVIDIA, AMD ROCmOui (Messages API)AWQ, GPTQ, EETQOutlines
LMDeployApache 2.0GPU NVIDIAOuiW4A16, AWQ, INT4/8Limité

Un comparatif sans chiffres reste théorique. Voici des mesures réelles, relevées dans les labs des guides dédiés. Précaution essentielle : ces chiffres ne se comparent pas entre eux — le matériel et le modèle diffèrent à chaque fois. Ils donnent des ordres de grandeur par contexte, jamais un classement universel.

Sur un poste sans GPU — un i7-12650H, 8 threads — llama.cpp sert un modèle Qwen2.5-1.5B quantifié en Q4_K_M. Le débit de génération atteint environ 28 tokens/seconde, l'ingestion de prompt environ 160 tokens/seconde. C'est confortable pour un usage mono-utilisateur — un agent local, un copilote — mais ce plafond se ressent dès qu'on vise plusieurs requêtes simultanées.

Sur un GPU H100 PCIe 80 Go, avec le même modèle (Qwen2.5-14B-Instruct) et le même protocole (200 requêtes, 1024 tokens d'entrée, 256 de sortie), vLLM et SGLang ont été mesurés côte à côte.

MesurevLLM 0.21SGLang 0.5
Débit total — charge plafond8 354 tok/s8 274 tok/s
Débit total — charge modérée7 916 tok/s7 920 tok/s
TTFT médian — charge modérée230 ms139 ms

Le constat est net : sur un workload standard, les deux moteurs sont équivalents — moins de 1 % d'écart sur le débit. SGLang garde un léger avantage sur le délai de premier token. Ce bench ne sollicite toutefois pas le RadixAttention de SGLang, car les prompts ne partagent aucun préfixe ; sur une charge multi-turn ou RAG, l'écart se creuserait en sa faveur. Le détail des mesures figure dans les guides vLLM et SGLang.

Cette section déroule quatre profils types rencontrés en équipe DevOps/Plateforme. Trouvez le vôtre — la recommandation associée s'appuie sur les critères de la section précédente, pas sur des préférences subjectives.

Cas 1 — Développeur, modèle local, mono-utilisateur

Section intitulée « Cas 1 — Développeur, modèle local, mono-utilisateur »

Vous codez sur un portable ou un poste fixe avec 16 à 32 Go de RAM, sans GPU dédié ou avec un iGPU intégré. Votre objectif : prototyper un agent, tester un RAG local, faire du prompt engineering sans dépendre d'une API SaaS. Ollama reste l'outil le plus simple : installation en une commande, gestion automatique des modèles, service système au démarrage. Si vous voulez contrôler la quantification ou compiler avec Vulkan pour exploiter votre iGPU Intel/AMD, le guide llama.cpp : serveur d'inférence montre comment obtenir ces leviers de réglage.

Cas 2 — Serving production, mono-modèle, GPU dédié

Section intitulée « Cas 2 — Serving production, mono-modèle, GPU dédié »

Vous avez une instance GPU NVIDIA (L40S, A100, H100) à exposer derrière une API interne. Votre charge est mixte : requêtes concurrentes, prompts variés, longueurs de contexte hétérogènes. Le guide vLLM détaille ce cas : il reste la référence avec son continuous batching, son PagedAttention et un écosystème mature (vllm bench serve, intégrations LangChain/LlamaIndex/LiteLLM). Le guide SGLang montre qu'il devient un concurrent sérieux quand votre workload est dominé par les prompts longs ou le multi-turn : son RadixAttention réutilise les caches de préfixe entre requêtes, ce qui change la donne sur les agents conversationnels.

Cas 3 — Inférence batch ou pré-calcul d'embeddings

Section intitulée « Cas 3 — Inférence batch ou pré-calcul d'embeddings »

Vous générez des résumés, des embeddings ou des classifications sur un large corpus. Le critère devient le throughput cumulé, pas la latence par requête. vLLM en mode batch reste excellent et bien documenté. TGI propose un mode batch natif intégré à l'écosystème Hugging Face. LMDeploy brille si votre modèle existe en W4A16 : la mémoire GPU divisée par quatre permet d'augmenter la taille de batch ou de servir un modèle plus gros sur la même carte.

Vous voulez exposer plusieurs modèles (un pour le code, un pour le résumé, un pour le RAG) derrière une API unique avec authentification et budgets. La solution n'est pas un backend particulier mais un proxy LLM : voir le guide LiteLLM Proxy Server qui route vers les backends individuels. Chaque modèle reste servi par le backend le plus adapté à sa taille — un petit modèle 7B sur Ollama, un gros 70B quantifié sur vLLM ou LMDeploy.

FastChat était l'option de référence en 2023-2024 pour exposer un LLM local avec une API OpenAI-compatible. Le projet de LMSYS est aujourd'hui en perte de vitesse : les développeurs principaux ont rejoint le projet SGLang, et les dernières releases significatives datent de fin 2024. Pour les nouveaux déploiements, l'écosystème recommande Ollama (usage local), llama.cpp (llama-server, contrôle fin) ou SGLang (production GPU). Un déploiement FastChat existant continue de fonctionner ; pour les nouveaux projets, choisissez parmi les six backends ci-dessus.

  • Le matériel disponible est le premier critère de choix — il élimine la moitié des candidats avant même de regarder les features.
  • Ollama et llama.cpp dominent l'inférence locale (CPU, iGPU, GPU léger).
  • vLLM et SGLang sont les références pour le serving GPU production, avec des points forts différents (batching pur vs prompts longs).
  • LMDeploy se distingue sur la quantification W4A16 pour faire tenir des gros modèles sur peu de VRAM.
  • FastChat n'est plus recommandé pour les nouveaux projets ; bascule vers SGLang ou Ollama selon le profil.
  • Aucun bench universel n'existe : mesurez sur votre modèle et votre matériel avant de figer un choix architectural.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn