Run LLM on CPU 2026: Models

🖥 Hardware 2026-08-11 · Updated 2026-10-19 4 min read

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> --verbose and 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

  1. Keep prompts short - prefill is the expensive part.
  2. Cap output length with -n.
  3. Use dual-channel memory; bandwidth is the whole game.
  4. Close heavy background apps - there is no headroom.
  5. 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

Related Articles
2026-10-22
Ollama in Docker With a GPU: The Compose Block, the Env Defaults, and the VRAM Math Behind Silent CPU Offload
2026-08-13
Wan 2.2 Guide 2026: Alibaba's Open Video Model and How It Compares on a Single GPU
2026-08-01
Codex CLI on Windows 2026: Complete Setup Guide (OpenAI's Coding Agent)
2026-08-17
Best AI Interview Practice Tool in Seattle 2026: 6 Tools for Amazon and Microsoft Rounds
2026-08-12
Unsloth Tutorial 2026: Fine-Tune LLMs 2x Faster on One GPU, Step by Step With Real Code
2026-09-10
South Korean government pays for everyone to use AI for free: 512 NVIDIA B200s in place, testing starts in September

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.

💬 Comments (0)

No comments yet. Be the first!

Login to comment