localaiforum
Connexion
Guide › Le matériel

Inférence sur CPU uniquement

L'inférence sur CPU seul est viable, et les chiffres sont moins déprimants que la légende le dit — pourvu que vous compreniez que c'est le même jeu de bande passante que le décodage GPU, joué avec un dixième du tuyau. Un bureau moderne à DDR5 double canal dispose de ~80–100 GB/s de bande passante mémoire. C'est tout votre budget ; rien dans les cœurs CPU eux-mêmes ne le change beaucoup.

La formule, appliquée

tok/s de décodage ≈ bande passante effective (GB/s) ÷ taille du modèle (GB)

La DDR5-5600 double canal déplace ~90 GB/s sur le papier ; disons 60–80 GB/s effectifs une fois que cœurs et préchargeurs prennent leur part. Un modèle 8B Q4 fait ~5 GB, donc :

90 GB/s ÷ 5 GB ≈ 18 tok/s de plafond théorique → 8–14 tok/s en pratique.

Ce n'est pas un bug — c'est la même arithmétique qu'un gros GPU dédié, avec un dixième de la bande passante.

À quoi vous attendre selon le matériel

Plateforme Bande passante approx. Décodage 8B Q4 Impression
Laptop, DDR4 double canal 40–50 GB/s 5–8 tok/s lisible, démarrage lent
Laptop, DDR5 double canal 60–80 GB/s 8–12 tok/s chat utilisable
Bureau, DDR5 double canal 80–100 GB/s 10–16 tok/s agréable pour ≤8B
Threadripper/EPYC, quadruple canal+ 200–460 GB/s 30–80 tok/s vraiment bien
Serveur bi-socket 400+ GB/s 60–100 tok/s presque un GPU en RAM

Paliers de confort sur un bureau double canal :

  • Agréable : chat et aide au code 7–8B Q4 à 10+ tok/s.
  • Utilisable : 13–14B Q4 à ~5–8 tok/s. On attend, mais pas éternellement.
  • Patience : 24–32B Q4 à ~2–4 tok/s. Des lots de nuit, pas du chat.
  • Surtout pas : 70B Q4 sous 1 tok/s en double canal. Stations quad-canal uniquement, et même là, réfléchissez à deux fois.

La sortie de secours : le délestage partiel

Si un petit GPU est présent, llama.cpp répartit les couches entre CPU et GPU — disons 20 couches sur 32 sur une carte 8 GB. La fraction résidente GPU tourne à la bande passante VRAM, le reste à la bande passante RAM, donc la vitesse atterrit entre les deux extrêmes. Cela bat chaque mode pur quand les poids ne tiennent nulle part entiers, et cela bat de regarder un « full GPU offload » s'agiter dans la mémoire partagée.

Le préremplissage est la vraie douleur

Le décodage attire toute l'attention, mais c'est le préremplissage qui fait mal au CPU : il est limité par le calcul, et un CPU de bureau n'a qu'une petite fraction des FLOPs d'un GPU. Un prompt de 4,000 jetons sur un modèle 8B peut coûter des dizaines de secondes avant le premier jeton. Les pipelines façon RAG à gros contextes injectés le paient sur chaque requête. Atténuations : gardez les prompts courts, donnez au préremplissage en lot plus de threads qu'au décodage, et traitez l'indexation comme un coût unique (voir RAG).

Options pratiques

# threads de décodage = cœurs physiques ; le préremplissage en lot peut utiliser les cœurs logiques aussi
llama-server -m qwen2.5-7b-instruct-q4_k_m.gguf -c 8192 -t 8 --threads-batch 16

# machine multi-socket : entrelacer la mémoire entre nœuds NUMA
numactl --interleave=all ./llama-server -m model.gguf -t 32

# quel SIMD a ce CPU ? AVX2 est le plancher ; AVX-512 aide le préremplissage
lscpu | grep -o 'avx[0-9a-z_]*' | sort -u
  • -t réglé sur les cœurs physiques bat habituellement les comptes logiques/SMT pour le décodage ; benchmarkz les deux sur votre machine, le point de bascule dépend de la charge.
  • AVX2 est la base partout ; AVX-512 (Zen 4/5, Xeon récents) donne de vrais gains de préremplissage. llama.cpp détecte le support à la compilation.
  • Sur les machines multi-socket, l'épinglage NUMA peut valoir 20%+ — la mémoire sur le socket distant est de la mémoire lente.
  • La DDR4 de laptop porte à peu près la moitié de la bande passante de la DDR5 de bureau. Même formule, constante pire : attendez 5–8 tok/s là où le bureau donne 12.

Quand le CPU seul est vraiment la bonne réponse

  • Embeddings et indexation RAG — le débit compte, la latence non ; quelques heures de vectorisation de fragments la nuit, c'est gratuit.
  • Mini-modèles dans des scripts — classificateurs, extracteurs et rerankers 0.5–3B répondent en dizaines de millisecondes même sur CPU.
  • Tâches de fond en lot — résumer le backlog à 3 tok/s pendant votre sommeil ; personne ne regarde le flux.
  • Essayer avant d'acheter — valider qu'une famille de modèles fait le travail avant de s'engager dans l'achat d'un GPU.

Si le chat interactif est l'objectif et qu'un GPU est disponible, mettez le modèle dessus. Utilisez premier lancement pour avancer aujourd'hui, et vitesse pour comprendre ce que signifient les chiffres que vous voyez.

Voir aussi : premier lancement · vitesse · RAG