💡 Idée reçue à déconstruire : On n’a pas besoin d’une RTX 5090 pour faire tourner localement des LLM de qualité professionnelle. Avec une architecture CPU optimisée et beaucoup de RAM, on peut obtenir des résultats équivalents — certes plus lents, mais parfaitement exploitables pour la production.
Table of Contents
Toggle📋 Synthèse Exécutive
Les grands modèles de langage (LLM) sont traditionnellement associés aux GPU haut de gamme. Pourtant, une approche alternative émerge : l’inférence sur CPU avec quantification intelligente. Cette stratégie devient viable grâce à trois facteurs techniques :
- Le format GGUF et l’écosystème llama.cpp permettent une optimisation CPU drastique
- La quantification (Q4, Q5, Q8) réduit la consommation mémoire de 60-75% avec une perte de qualité négligeable
- La bande passante mémoire moderne (DDR5, mémoire unifiée Apple) compense partiellement l’absence de GPU
⚠️ Attention : Cette approche privilégie la qualité de sortie et la capacité mémoire au détriment de la vitesse d’inférence. Attendez-vous à 5-40 tokens/seconde au lieu de 50-200 tokens/s sur GPU. C’est pertinent pour des use cases de production où la latence n’est pas critique (génération de contenu, analyse batch, RAG documentaire).
🔧 Le Fondement Technique : llama.cpp et GGUF
Pourquoi llama.cpp ?
llama.cpp est le framework de référence pour l’inférence CPU. Contrairement à PyTorch ou Transformers (optimisés GPU), il exploite :
- Les instructions SIMD modernes : AVX2, AVX-512, NEON (Apple Silicon)
- Le multithreading CPU natif : utilisation de tous les cœurs disponibles
- La quantification en mémoire : les poids sont décompressés à la volée
# Installation rapide
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
make -j$(nproc)
# Téléchargement d'un modèle GGUF
wget https://huggingface.co/TheBloke/Llama-2-7B-Chat-GGUF/resolve/main/llama-2-7b-chat.Q4_K_M.gguf
# Inférence
./main -m llama-2-7b-chat.Q4_K_M.gguf -p "Votre prompt" -n 512 -t 16Comprendre la Quantification
| Format | Précision | Réduction Mémoire | Perte Qualité | Usage Recommandé |
|---|---|---|---|---|
Q2_K | 2 bits | ~75% | Notable (5-10%) | Tests uniquement |
Q4_K_M | 4 bits | ~60% | Minime (1-3%) | ⭐ Standard production |
Q5_K_M | 5 bits | ~55% | Négligeable (<1%) | Qualité optimale |
Q8_0 | 8 bits | ~40% | Quasi-nulle | Benchmarks, validation |
✅ Recommandation : Pour un équilibre optimal entre qualité et performance, privilégiez
Q4_K_MouQ5_K_M. Les benchmarks MMLU, HumanEval et GSM8K montrent moins de 2% de différence avec le modèle complet FP16.
💻 Architecture Matérielle Optimale
Le Facteur Critique : Bande Passante Mémoire
L’inférence LLM sur CPU est memory-bound, pas compute-bound. La vitesse dépend de la capacité à transférer les poids du modèle depuis la RAM vers le cache CPU.
| Architecture | Canaux RAM | Bande Passante | Perf Relative (7B) |
|---|---|---|---|
| Intel Core i9 (DDR5-5600) | Dual Channel | ~90 GB/s | 1x (baseline) |
| AMD Threadripper (DDR5-4800) | Quad Channel | ~150 GB/s | 1.6x |
| AMD EPYC (DDR5-4800) | Octo Channel | ~300 GB/s | 2.8x |
| Apple M4 Max | Mémoire Unifiée | ~546 GB/s | 4-5x |
| Apple M3 Ultra | Mémoire Unifiée | ~819 GB/s | 6-7x 🚀 |
Configurations Recommandées
💼 Budget Contrôlé (€3000-5000)
- CPU : AMD Ryzen 9 7950X (16 cores)
- RAM : 128 GB DDR5-6000 (Dual Channel)
- Carte Mère : X670E avec 4 slots DIMM
- Modèles : Jusqu’à 70B en Q4
- Débit : 15-35 tokens/s (7B-14B)
🏢 Production Pro (€8000-12000)
- CPU : AMD Threadripper PRO 7975WX
- RAM : 256 GB DDR5-4800 (Quad Channel)
- Carte Mère : WRX90 workstation
- Modèles : Jusqu’à 405B en Q3/Q4
- Débit : 25-50 tokens/s (7B-30B)
🍎 Apple Silicon (€7000-10000)
- Machine : Mac Studio M4 Max ou M3 Ultra
- RAM : 128-192 GB (M4 Max) ou 192-512 GB (M3 Ultra)
- Avantage : Bande passante jusqu’à 819 GB/s
- Modèles : Qwen3-Max, DeepSeek R1
- Débit : 40-76 tokens/s (7B-8B)
🎯 Point technique clé : Sur architecture x86, privilégiez Quad Channel minimum. Un système avec 256 GB en Dual Channel sera plus lent qu’un système avec 128 GB en Quad Channel pour les modèles 30B+.
🤖 Modèles Recommandés par Use Case (Novembre 2025)
📝 Catégorie 1 : Texte Pur (Chat, Code, Analyse)
Petits Modèles Haute Efficacité (1-4B)
| Modèle | Paramètres | RAM (Q4) | Points Forts | Vitesse CPU |
|---|---|---|---|---|
| Phi-4 | 3.8B | 3-5 GB | Multimodal natif, code | 40-60 tok/s |
| Gemma 3 (4B) | 4B | 3-4 GB | Multilingue, multimodal | 35-55 tok/s |
| SmolLM2 | 1.7B | 2-3 GB | Ultra-léger, français | 60-80 tok/s |
| DeepSeek R1 | 1.5B | 2-3 GB | Math, logique | 50-70 tok/s |
Modèles Moyens Production (7-32B)
| Modèle | Paramètres | RAM (Q4/Q5) | Points Forts | Vitesse CPU |
|---|---|---|---|---|
| Qwen 3 (7B) | 7B | 5-7 GB | ⭐ Meilleur multilingue | 18-30 tok/s |
| Mistral 7B | 7B | 5-7 GB | Code, instructions | 15-30 tok/s |
| Llama 3.3 (11B) | 11B | 7-9 GB | Stable, Meta officiel | 25-35 tok/s |
| Qwen 3 (14B) | 14B | 9-11 GB | Optimal code/texte | 20-35 tok/s |
| Qwen 3 (32B) | 32B | 18-22 GB | Qualité supérieure | 12-25 tok/s |
Gros Modèles (70B-1T+) – Nécessite 128-512 GB RAM
| Modèle | Paramètres | RAM (Q4) | Qualité | Vitesse CPU |
|---|---|---|---|---|
| Llama 3.3 (70B) | 70B | 40-48 GB | Excellent | 5-10 tok/s |
| Qwen 3 (235B) | 235B total | 130-150 GB | Top tier | 8-15 tok/s |
| Qwen 3 Max | ~1T (MoE) | 600-800 GB | ⭐ État de l’art | 3-7 tok/s |
| DeepSeek R1 | 671B | 400-460 GB | Raisonnement expert | 1-4 tok/s |
⚠️ Modèles 100B+ : Ces modèles nécessitent des configurations extrêmes (256-512 GB RAM minimum). Qwen 3 Max (~1 trillion params) est API-only pour l’instant. Pour CPU local, privilégiez Qwen 3 235B-A22B ou DeepSeek R1 qui sont open-weight et optimisés CPU.
👁️ Catégorie 2 : Vision (Texte + Image 4K)
| Modèle | Paramètres | RAM (Q4) | Capacités | Vitesse CPU |
|---|---|---|---|---|
| Phi-4 Multimodal | 4.2B | 5-10 GB | ⭐ OCR, tableaux | 20-40 tok/s |
| Gemma 3 (4B) | 4B | 4-8 GB | Multimodal natif | 25-45 tok/s |
| Qwen3-VL (7B) | 7B | 6-15 GB | 4K natif, docs pro | 15-25 tok/s |
| Llama 3.2 Vision | 11B | 8-20 GB | Multi-images, 4K | 10-20 tok/s |
| Qwen2.5-VL (72B) | 72B | 42-65 GB | ⭐ Meilleur VLM open | 5-12 tok/s |
💡 Images 4K : Les modèles vision modernes (Qwen3-VL, Phi-4, Gemma 3) supportent nativement les hautes résolutions. En pratique, beaucoup découpent l’image en patches (grilles 3×3 ou 4×4) pour analyse. Le preprocessing 4K est lent sur CPU (1-5 secondes par image), mais techniquement viable avec 128+ GB RAM.
🎬 Catégorie 3 : Vidéo (Analyse uniquement)
⚠️ Limitation importante : La génération vidéo (type Sora, Runway) n’est pas viable sur CPU (trop lent). Par contre, l’analyse vidéo (compréhension, résumé, recherche d’actions) est possible via extraction de frames.
Approche pratique vidéo :
- Décoder la vidéo en frames clés avec
ffmpeg(1 fps ou détection de scène) - Envoyer les frames à un VLM texte+image (Qwen3-VL, Phi-4)
- LLM texte-only pour synthétiser et structurer l’analyse
# Extraction de frames (1 fps)
ffmpeg -i video.mp4 -vf fps=1 frames/frame_%04d.jpg
# Analyse avec llama.cpp multimodal
./llava-cli -m qwen3-vl-7b.Q4_K_M.gguf \
--image frames/frame_0001.jpg \
--image frames/frame_0002.jpg \
-p "Décris ce qui se passe dans cette séquence vidéo"🛠️ Outils et Frameworks Recommandés
Interfaces Développeurs
llama.cpp (CLI)
Type : Framework bas-niveau
Avantages : Maximum contrôle, performances optimales
Idéal pour : Intégration production, CI/CD
C++ CLI API Server
Ollama
Type : Gestionnaire de modèles
Avantages : Installation simple, API OpenAI-compatible
Idéal pour : Prototypage rapide, devs full-stack
REST API Docker Multi-modèles
LM Studio
Type : GUI + API locale
Avantages : Interface graphique, téléchargement intégré
Idéal pour : Tests, démos, non-développeurs
GUI Windows/Mac OpenAI API
Installation et Configuration (Exemple Ollama)
# Installation Ollama (Linux/Mac)
curl -fsSL https://ollama.com/install.sh | sh
# Télécharger et lancer un modèle
ollama pull qwen3:7b
ollama run qwen3:7b
# Pour vision
ollama pull qwen3-vl
ollama run qwen3-vl "Décris cette image" --image photo.jpg
# Serveur API (compatible OpenAI)
ollama serve
# API disponible sur http://localhost:11434# Exemple d'intégration Python
import requests
response = requests.post('http://localhost:11434/api/generate', json={
'model': 'qwen3:7b',
'prompt': 'Explique le concept de quantification des LLM',
'stream': False
})
print(response.json()['response'])📊 Benchmarks Réels : Performance CPU vs GPU (Nov 2025)
Tests sur Qwen 3 (7B) – Q4_K_M
| Configuration | Tokens/Seconde | Latence 1er Token | Consommation | Coût Approx. |
|---|---|---|---|---|
| RTX 5090 (32GB) | 150-220 | 40-80ms | 575W | €2000 |
| RTX 4090 (24GB) | 120-180 | 50-100ms | 350W | €1600 |
| RTX 4060 Ti (16GB) | 60-90 | 100-150ms | 160W | €500 |
| Ryzen 9 7950X + 128GB | 18-30 | 200-400ms | 120W | €1200 |
| Threadripper PRO + 256GB | 25-50 | 150-300ms | 180W | €4500 |
| Apple M4 Max (128GB) | 45-80 | 70-130ms | 60W | €7500 |
| Apple M3 Ultra (192GB) | 50-90 | 60-120ms | 80W | €9500 |
Tests sur Llama 3.3 (70B) – Q4_K_M
| Configuration | Tokens/Seconde | RAM Utilisée | Faisabilité |
|---|---|---|---|
| RTX 5090 (32GB) – offload partiel | 55-85 | 32GB VRAM + 30GB RAM | ✅ Excellent |
| 2x RTX 5090 (64GB total) | 120-160 | 64GB VRAM | ✅ Optimal |
| RTX 4090 (24GB) – offload partiel | 45-70 | 24GB VRAM + 30GB RAM | ✅ Bon |
| Ryzen 9 + 128GB DDR5 | 5-10 | 48GB RAM | ⚠️ Lent mais viable |
| Threadripper + 256GB DDR5 | 8-15 | 48GB RAM | ✅ Production acceptable |
| Apple M4 Max (128GB) | 18-32 | 52GB RAM | ✅ Très bon |
| Apple M3 Ultra (192GB) | 22-38 | 52GB RAM | ✅ Excellent |
🎯 Analyse : Pour les modèles 7-14B, le CPU devient compétitif en coût-performance. Pour les 70B+, l’approche CPU reste viable mais nécessite accepter une latence 5-10x supérieure. Les architectures Apple M4 Max et M3 Ultra émergent comme les meilleurs compromis CPU-only grâce à leur bande passante mémoire exceptionnelle.
💼 Use Cases Métier Adaptés
✅ Scénarios Idéaux pour CPU-Only
✅ Excellents Use Cases
- Génération de contenu batch : Articles, fiches produits, emails (nuit)
- RAG documentaire : Q&A sur base de connaissances (latence 2-5s acceptable)
- Analyse de datasets : Classification, extraction d’entités sur CSV/JSON
- OCR + structuration : Traitement de factures, contrats, formulaires 4K
- Agents autonomes : Scripts long-running avec appels d’outils
- Fine-tuning : Petits modèles 7B avec QLoRA sur CPU (très lent mais faisable)
- Prototypage R&D : Tests de prompts, évaluation de modèles
❌ Cas Défavorables
- Chatbots temps réel : Les utilisateurs attendent <1s de réponse
- Streaming interactif : Code completion, suggestion en direct
- Génération d’images/vidéos : Stable Diffusion, DALL-E style (GPU requis)
- Transcription audio temps réel : Whisper sur CPU est 10-20x plus lent
- Déploiement multi-utilisateurs : Servir 100+ requêtes/s nécessite GPU scaling
Exemple Concret : Pipeline RAG en Production
# Architecture RAG optimisée CPU
# Composants :
# - Embedding : sentence-transformers (CPU OK)
# - Vector DB : Qdrant / Chroma (CPU)
# - LLM : Qwen 3 14B Q4_K_M (CPU)
from langchain.embeddings import HuggingFaceEmbeddings
from langchain.vectorstores import Chroma
from langchain.llms import LlamaCpp
from langchain.chains import RetrievalQA
# Embeddings sur CPU (rapide : 50-100 docs/s)
embeddings = HuggingFaceEmbeddings(
model_name="sentence-transformers/all-MiniLM-L6-v2"
)
# Vector store
vectorstore = Chroma(
persist_directory="./chroma_db",
embedding_function=embeddings
)
# LLM sur CPU (Qwen 3 14B)
llm = LlamaCpp(
model_path="qwen3-14b-instruct.Q4_K_M.gguf",
n_ctx=8192,
n_threads=16,
temperature=0.3
)
# Pipeline RAG
qa_chain = RetrievalQA.from_chain_type(
llm=llm,
chain_type="stuff",
retriever=vectorstore.as_retriever(search_kwargs={"k": 5})
)
# Requête (latence totale : 2-5s)
result = qa_chain.run("Quels sont les avantages de la quantification Q4 ?")
print(result)Performance mesurée sur Threadripper PRO 32 cores + 256GB :
- Embedding : 80 docs/seconde (CPU multi-thread)
- Recherche vectorielle : <50ms (Qdrant optimisé)
- Génération LLM : 25-35 tokens/s (acceptable pour Q&A async)
- Latence totale : 2-4 secondes → Parfait pour support client, FAQ interne
🔬 Considérations Avancées
Gestion du Contexte Long (128k+ tokens)
Avec beaucoup de RAM, vous pouvez exploiter des contextes massifs (équivalent à 200-300 pages de texte). Quelques modèles optimisés :
- Gemma 3 (1-27B) : Contexte 128k natif, multimodal
- Qwen 3 (7-235B) : 128k optimisé, excellent français
- Qwen 3 Max : Contexte 256k tokens
- Llama 3.3 (8-70B) : 128k via RoPE scaling
⚠️ Attention KV Cache : Un contexte de 128k tokens consomme 10-30 GB supplémentaires de RAM (selon le modèle). Calculez :
RAM modèle + (contexte × taille_cache_par_token). Pour 70B avec 128k contexte, prévoyez 60-80 GB RAM totale.
Optimisations Techniques Supplémentaires
| Technique | Gain Performance | Complexité | Usage |
|---|---|---|---|
| Flash Attention | +20-40% | Moyenne | Contextes 32k+, compilation avec LLAMA_FLASH_ATTN=1 |
| Huge Pages | +5-15% | Facile | Linux : echo madvise > /sys/kernel/mm/transparent_hugepage/enabled |
| NUMA Binding | +10-30% | Avancée | Serveurs multi-socket : numactl --cpunodebind=0 --membind=0 |
| CPU Governor | +5-10% | Facile | cpupower frequency-set -g performance |
| Speculative Decoding | +50-100% | Avancée | Petit modèle draft + gros modèle vérification (expérimental) |
Approche Hybride : CPU + GPU Modeste
Si vous acceptez une carte graphique milieu de gamme (RTX 4060 8GB, €300-400), vous débloquez :
- Offloading partiel : Premières couches sur GPU (rapides), reste sur CPU+RAM
- Préprocessing vision : Encodage d’images 4K accéléré GPU, LLM reste en CPU
- Parallel inference : GPU gère petits modèles 7B, CPU gère gros modèle 70B
# llama.cpp avec offload partiel
./main -m llama-3.3-70b.Q4_K_M.gguf \
-ngl 20 \ # 20 premières couches sur GPU (8GB)
-p "Votre prompt" \
-t 16 # 16 threads CPU pour le reste
# Résultat : ~25-35 tok/s (vs 5-10 en CPU pur)📈 Évolution et Tendances Novembre 2025
Nouveaux Modèles Sortis Récemment
- Qwen 3 Max (Alibaba, Sept 2025) : ~1T paramètres MoE, actuellement 3ème au LMArena, surpasse GPT-5 sur certains benchmarks
- Qwen 3 série complète (Sept-Oct 2025) : 0.6B, 1.7B, 4B, 8B, 14B, 32B, et 235B MoE (22B actifs)
- Qwen3-VL série (Oct 2025) : 2B, 4B, 8B, 32B, 235B – Le plus puissant VLM open-source
- Gemini 3 Pro (Google, Nov 2025) : Nouvelles capacités multimodales, Deep Think mode
- GPT-5.1 (OpenAI, Nov 2025) : Plus rapide et efficient que GPT-5
- Llama 3.3 (Meta) : Versions optimisées 8B/70B
- Claude Sonnet 4.5 (Anthropic, Sept 2025) : 77.2% sur SWE-bench Verified (record)
- Phi-4 Multimodal (Microsoft, 2025) : Vision, audio, texte unifié
Innovations Techniques
MoE Architecture
Qwen 3 Max (1T params) et Qwen 3 235B (22B actifs) démontrent que les Mixture-of-Experts permettent des modèles massifs exploitables sur CPU grâce à l’activation sélective.
Thinking Models
Qwen3-VL-Thinking, DeepSeek R1, Kimi-VL-Thinking : raisonnement explicite chain-of-thought intégré nativement. Performance 100% sur AIME 2025.
Contexte Extrême
Qwen 3 Max : 256k tokens. Gemini 2.5 Pro : 1M tokens (2M en bêta). Crucial pour RAG et analyse documentaire massive.
🎓 Ressources et Communautés
Documentation Technique
- llama.cpp GitHub :
github.com/ggerganov/llama.cpp– Doc complète, benchmarks - Hugging Face Hub : Recherche « GGUF » – Modèles quantisés prêts à l’emploi
- Ollama Library :
ollama.com/library– Catalogue modèles optimisés - LMSYS Chatbot Arena : Benchmarks communautaires, comparaisons qualité
- Qwen Research :
qwen.ai/research– Documentation Qwen 3 série
Communautés Actives
- Reddit r/LocalLLaMA : Discussions techniques, retours d’expérience CPU
- Reddit r/MachineLearning : Recherches académiques, nouveaux modèles
- Discord Ollama : Support temps réel, partage de configs
- GitHub Discussions llama.cpp : Issues techniques, optimisations avancées
✅ Checklist de Déploiement
Phase 1 : Évaluation
- ☐ Définir le use case (temps réel vs batch)
- ☐ Estimer le volume de traitement
- ☐ Calculer la latence acceptable (SLA)
- ☐ Budgétiser hardware (€3k-12k)
Phase 2 : Hardware
- ☐ Choisir architecture (x86 vs Apple)
- ☐ Dimensionner RAM (128-512 GB)
- ☐ Vérifier bande passante (Quad Channel)
- ☐ Prévoir stockage NVMe
Phase 3 : Logiciel
- ☐ Installer llama.cpp ou Ollama
- ☐ Télécharger modèles GGUF
- ☐ Benchmarker sur données réelles
- ☐ Optimiser (Flash Attention, etc.)
Phase 4 : Production
- ☐ Containeriser (Docker)
- ☐ Monitorer (CPU, RAM, Latence)
- ☐ Mettre en place queue system
- ☐ Documenter pour l’équipe
🏁 Conclusion : Quand Choisir CPU over GPU ?
✅ La stratégie CPU + RAM est pertinente si :
- Votre use case tolère 2-10 secondes de latence
- Vous traitez des contextes très longs (64k-128k tokens)
- Vous voulez éviter la dépendance NVIDIA et les coûts GPU
- Vous avez des contraintes de consommation électrique
- Vous privilégiez la qualité maximale (70B+) sur des volumes modérés
❌ Restez sur GPU si :
- Vous avez besoin de temps réel strict (<1s)
- Vous servez des centaines de requêtes simultanées
- Vous faites de la génération d’images/vidéos
- Vous entraînez/fine-tunez régulièrement
- Votre budget permet RTX 5090 pour un débit maximum
En résumé : L’inférence CPU avec quantification intelligente ouvre un nouveau paradigme pour déployer des LLM. Avec une configuration Threadripper PRO + 256GB DDR5 ou Mac Studio M4 Max + 128GB, vous pouvez faire tourner des modèles comme Qwen 3 (70B), Llama 3.3 (70B), ou même Qwen3-VL (235B) en production pour des use cases batch/asynchrones. C’est une alternative économiquement et écologiquement viable à l’escalade GPU, particulièrement pertinente pour les agences web, équipes R&D et entreprises qui valorisent le contrôle total de leur stack IA.
🚀 Prêts à déployer votre premier LLM sur CPU ?
Commencez par installer Ollama, téléchargez Qwen 3 7B ou Qwen3-VL 7B, et mesurez vos performances sur vos données réelles. La révolution de l’IA locale et maîtrisée commence maintenant.
Guide Technique LLM sur CPU
Dernière mise à jour : 24 Novembre 2025 | Sources : llama.cpp, Hugging Face, LMSYS Arena, Qwen Research, Reddit r/LocalLLaMA
