👋

Single Post

LLM Locaux : Oubliez les GPU à 2000€, Misez sur la RAM

Share

💡 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

📋 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 16

Comprendre la Quantification

FormatPrécisionRéduction MémoirePerte QualitéUsage Recommandé
Q2_K2 bits~75%Notable (5-10%)Tests uniquement
Q4_K_M4 bits~60%Minime (1-3%)⭐ Standard production
Q5_K_M5 bits~55%Négligeable (<1%)Qualité optimale
Q8_08 bits~40%Quasi-nulleBenchmarks, validation

✅ Recommandation : Pour un équilibre optimal entre qualité et performance, privilégiez Q4_K_M ou Q5_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.

ArchitectureCanaux RAMBande PassantePerf Relative (7B)
Intel Core i9 (DDR5-5600)Dual Channel~90 GB/s1x (baseline)
AMD Threadripper (DDR5-4800)Quad Channel~150 GB/s1.6x
AMD EPYC (DDR5-4800)Octo Channel~300 GB/s2.8x
Apple M4 MaxMémoire Unifiée~546 GB/s4-5x
Apple M3 UltraMémoire Unifiée~819 GB/s6-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èleParamètresRAM (Q4)Points FortsVitesse CPU
Phi-43.8B3-5 GBMultimodal natif, code40-60 tok/s
Gemma 3 (4B)4B3-4 GBMultilingue, multimodal35-55 tok/s
SmolLM21.7B2-3 GBUltra-léger, français60-80 tok/s
DeepSeek R11.5B2-3 GBMath, logique50-70 tok/s

Modèles Moyens Production (7-32B)

ModèleParamètresRAM (Q4/Q5)Points FortsVitesse CPU
Qwen 3 (7B)7B5-7 GB⭐ Meilleur multilingue18-30 tok/s
Mistral 7B7B5-7 GBCode, instructions15-30 tok/s
Llama 3.3 (11B)11B7-9 GBStable, Meta officiel25-35 tok/s
Qwen 3 (14B)14B9-11 GBOptimal code/texte20-35 tok/s
Qwen 3 (32B)32B18-22 GBQualité supérieure12-25 tok/s

Gros Modèles (70B-1T+) – Nécessite 128-512 GB RAM

ModèleParamètresRAM (Q4)QualitéVitesse CPU
Llama 3.3 (70B)70B40-48 GBExcellent5-10 tok/s
Qwen 3 (235B)235B total130-150 GBTop tier8-15 tok/s
Qwen 3 Max~1T (MoE)600-800 GB⭐ État de l’art3-7 tok/s
DeepSeek R1671B400-460 GBRaisonnement expert1-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èleParamètresRAM (Q4)CapacitésVitesse CPU
Phi-4 Multimodal4.2B5-10 GB⭐ OCR, tableaux20-40 tok/s
Gemma 3 (4B)4B4-8 GBMultimodal natif25-45 tok/s
Qwen3-VL (7B)7B6-15 GB4K natif, docs pro15-25 tok/s
Llama 3.2 Vision11B8-20 GBMulti-images, 4K10-20 tok/s
Qwen2.5-VL (72B)72B42-65 GB⭐ Meilleur VLM open5-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 :

  1. Décoder la vidéo en frames clés avec ffmpeg (1 fps ou détection de scène)
  2. Envoyer les frames à un VLM texte+image (Qwen3-VL, Phi-4)
  3. 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

ConfigurationTokens/SecondeLatence 1er TokenConsommationCoût Approx.
RTX 5090 (32GB)150-22040-80ms575W€2000
RTX 4090 (24GB)120-18050-100ms350W€1600
RTX 4060 Ti (16GB)60-90100-150ms160W€500
Ryzen 9 7950X + 128GB18-30200-400ms120W€1200
Threadripper PRO + 256GB25-50150-300ms180W€4500
Apple M4 Max (128GB)45-8070-130ms60W€7500
Apple M3 Ultra (192GB)50-9060-120ms80W€9500

Tests sur Llama 3.3 (70B) – Q4_K_M

ConfigurationTokens/SecondeRAM UtiliséeFaisabilité
RTX 5090 (32GB) – offload partiel55-8532GB VRAM + 30GB RAM✅ Excellent
2x RTX 5090 (64GB total)120-16064GB VRAM✅ Optimal
RTX 4090 (24GB) – offload partiel45-7024GB VRAM + 30GB RAM✅ Bon
Ryzen 9 + 128GB DDR55-1048GB RAM⚠️ Lent mais viable
Threadripper + 256GB DDR58-1548GB RAM✅ Production acceptable
Apple M4 Max (128GB)18-3252GB RAM✅ Très bon
Apple M3 Ultra (192GB)22-3852GB 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

TechniqueGain PerformanceComplexitéUsage
Flash Attention+20-40%MoyenneContextes 32k+, compilation avec LLAMA_FLASH_ATTN=1
Huge Pages+5-15%FacileLinux : echo madvise > /sys/kernel/mm/transparent_hugepage/enabled
NUMA Binding+10-30%AvancéeServeurs multi-socket : numactl --cpunodebind=0 --membind=0
CPU Governor+5-10%Facilecpupower frequency-set -g performance
Speculative Decoding+50-100%AvancéePetit 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

Written by

Image de Noah Davis

Noah Davis

Content Writer

Categories

Related Post