Run LLM on CPU 2026: Models
No GPU and no appetite for cloud bills, but you still want local models. What runs on CPU, how fast, and when is it actually worth it?
📜 Table of Contents
Run LLM on CPU 2026: Models, Speeds and Setup for Machines Without a GPU
CPU inference is genuinely viable, within limits. llama.cpp and Ollama both run GGUF models without a GPU; whether it is usable depends on how fast you need it.
On the speed numbers: tokens-per-second figures in this article are typical community reports for the listed hardware, gathered from public benchmarks and user posts — not a controlled measurement on a single machine. Real throughput varies with quantisation, context length, batch size and whatever else is using your GPU. Measure your own with
ollama run <model> --verboseand read the eval rate at the end.
Why CPU works, and why it is slow
Every generated token streams the whole weight set from memory. GPUs do this with thousands of lanes and high-bandwidth VRAM; a CPU has dozens of cores and roughly an order of magnitude less bandwidth. Speed is basically memory bandwidth ÷ weight size, which is why quantization pays off so directly on CPU: halve the weights, roughly double tokens per second.
Prefill (processing your prompt) is compute-bound and hurts CPU far more, so "read a long document then answer" feels much worse than short question, short answer.
What runs, and how fast
Ranges below depend on CPU generation, memory channels and thread count - treat them as orders of magnitude:
| Model size | Quant | RAM | 8-core CPU | Good for |
|---|---|---|---|---|
| 1-3B | Q4 | 2-4GB | 30-60 tok/s | Classification, extraction, rewriting |
| 7-8B | Q4 | 5-8GB | 8-15 tok/s | Chat, drafts, medium summaries |
| 13-14B | Q4 | 9-12GB | 4-7 tok/s | Better quality, needs patience |
| 32B | Q4 | 20-24GB | 1-3 tok/s | Background batch jobs only |
| 70B | Q4 | 40GB+ | under 1 tok/s | Not practical |
People read roughly 5-8 characters per second. At ~10 tok/s a 7B Q4 model outpaces reading speed and daily chat feels fine. At 5 tok/s you notice the wait. At 32B it becomes fire-and-forget.
Three levers, in order of payoff
Model size dominates: 7B is four to six times slower than 1.5B, and many tasks are solved by 1.5B. Start small, upgrade only if quality fails.
Quantization: use Q4_K_M on CPU. Halving weights nearly doubles speed and the quality cost is acceptable for most work. Drop to Q3 only under memory pressure; avoid Q2.
Threads and instruction sets: llama.cpp uses AVX2/AVX512 where available and builds with those enabled. Set threads to physical core count - hyperthreads usually add scheduling overhead.
Start with Ollama
ollama pull qwen3:1.5b
ollama run qwen3:1.5b
Without a GPU, Ollama runs on CPU automatically. Add --verbose to see tokens per second.
Fine control with llama.cpp
git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp && cmake -B build && cmake --build build --config Release -j
./build/bin/llama-cli -m qwen3-8b-Q4_K_M.gguf -t 8 -c 4096 -n 256 -p "Write a short product blurb"
| Flag | Purpose | CPU advice |
|---|---|---|
-t |
Threads | Physical cores |
-c |
Context length | As needed; larger costs RAM |
-ngl |
Layers offloaded to GPU | 0 for pure CPU |
--mlock |
Lock memory against paging | On when RAM allows |
-ctk/-ctv |
KV cache quant type | q8_0 for long contexts |
-n |
Max tokens generated | Match answer length |
--mlock matters: if the OS pages the model out, speed collapses to unusable. Locking prevents that at the cost of reserving the memory.
Measure your own speed
llama.cpp prints eval time and prompt eval time; divide by token count. Keep the model file, prompt length and thread count fixed or the comparison is meaningless. Test both a short prompt (generation speed) and a ~2000-token prompt (prefill speed) - the latter is usually the real bottleneck.
When CPU makes sense
Yes: strict privacy, overnight batch jobs over hundreds of documents, learning how inference works, occasional use that does not justify a GPU.
No: real-time multi-turn chat, long-document Q&A, multiple concurrent users, anything at 32B and above.
Five ways to make CPU tolerable
- Keep prompts short - prefill is the expensive part.
- Cap output length with
-n. - Use dual-channel memory; bandwidth is the whole game.
- Close heavy background apps - there is no headroom.
- Schedule batch work overnight.
FAQ
Does integrated graphics help? Some iGPUs are usable through llama.cpp's acceleration backends; results vary. Try raising -ngl and measure.
Is loud fan noise normal? Yes. CPU inference is sustained full load; laptops heat up and may throttle. Cap threads or improve cooling.
Enough RAM but still slow? Check memory channels, paging to disk, and thread count. Those three explain most cases.
Can a CPU run 70B? It loads, at under one token per second. Only viable for overnight offline jobs.
Note: speeds are empirical ranges and vary with CPU, memory configuration and software version. Measure on your own machine.
Related
Written by our editorial team; tools listed here are tested or verified against public sources. Links point to official sites or GitHub repos for reference only — no paid placements.