The short answer:
You can run quantized Qwen models on CPU alone. Small models (roughly 1B–4B) can feel usable for interactive work on a modern multi-core machine with enough RAM. Mid-size models (7B–9B) become slower but remain practical for batch jobs, offline processing, or occasional use. Larger models are possible if system RAM is sufficient, but generation speed usually drops into the “wait for it” range. CPU-only is a valid path when privacy, cost, or hardware constraints rule out a GPU—not a universal substitute for one.
Who This Is For
This guide is for developers whose machines lack a useful discrete GPU, who are working on a laptop with only integrated graphics, or who want to understand the real trade-offs before buying hardware. It assumes you have already seen the size, quantization, and VRAM planning articles and now need the CPU-specific picture.
Why CPU Inference Is Different
GPUs are designed for the kind of parallel matrix work that language models do. CPUs are more general-purpose. The result is lower tokens-per-second for the same model size and quantization.
On CPU the practical limits are usually:
System RAM — the model weights and KV cache live here
Memory bandwidth — how fast the CPU can feed data to the cores
Core count and efficiency — more cores help up to a point; past that, bandwidth becomes the bottleneck
Quantization — smaller quantized models are far more practical than larger or higher-precision ones
Ollama, llama.cpp, and similar tools will automatically fall back to CPU when no suitable GPU is detected. You do not need special flags for basic use.

When CPU-Only Makes Sense
CPU inference is a reasonable choice in these situations:
You have no discrete GPU (or a very weak one) and do not want to buy hardware yet
Privacy or offline requirements rule out cloud APIs
The workload is low-volume or batch-oriented (summarization overnight, offline document processing, occasional coding help)
You are prototyping or learning and prefer to start with the machine you already own
You are on a laptop or edge device where a discrete GPU is not an option
Cost matters more than interactive speed (a quiet CPU machine versus a power-hungry GPU box)
It is usually the wrong primary path when:
You need fluid, multi-turn chat with mid-size or larger models throughout the day
Latency-sensitive interactive coding assistance is the main use case
You plan to serve multiple concurrent users
You already have (or can easily obtain) a GPU that can run the same model far more comfortably
What to Expect by Model Size
These are orientation ranges for quantized models on a modern multi-core desktop or laptop CPU with adequate RAM. Actual speed depends heavily on CPU generation, RAM speed, thread count, quantization, and context length.
Size class | Typical experience on modern CPU | Practical notes |
|---|---|---|
0.5B–2B | Often interactive | Good for simple tasks, classification, light chat |
3B–4B | Usable for chat and light work | Sweet spot for many CPU-only laptops |
7B–9B | Noticeably slower; still usable for short interactions or batch | Needs solid RAM; patience required for long answers |
14B+ | Slow for interactive chat; better for offline/batch | Feasible if RAM allows; not a daily interactive driver for most people |
30B+ dense | Very slow generation | Mostly experimental or heavily quantized batch use |
Apple Silicon changes the picture because of high memory bandwidth and unified memory. The same model that feels sluggish on a typical x86 laptop CPU can feel far more responsive on an M-series Mac.
Practical Tips for Better CPU Results
Prefer smaller models and solid quantizations.
A well-chosen 3B–4B model at Q4 often delivers a better experience than a struggling 7B or 14B. Quality per second of waiting time matters more than raw parameter count.
Watch RAM, not just core count.
The model must fit in system memory without heavy swapping. Once the OS starts paging, speed collapses. Leave headroom for the operating system and other applications.
Thread count has diminishing returns.
Using more CPU threads helps up to a point. Beyond that, memory bandwidth becomes the limit and extra threads can even hurt. Experiment rather than assuming “all cores” is optimal.
Keep context moderate.
Long context increases both memory use and the amount of work per token. Start with shorter contexts and increase only when the task requires it.
Batch when possible.
CPU inference is often more pleasant for non-interactive jobs (summarizing a folder of files, generating offline reports, running evaluation scripts) than for real-time chat.
Use the tools you already know.
Ollama will run on CPU with no extra configuration. llama.cpp gives finer control if you later want to tune threads, batch sizes, or offloading behavior.

Hybrid Approaches
You do not have to choose pure CPU or pure GPU forever.
Run small models fully on CPU for always-on or privacy-sensitive work.
Use a GPU (local or cloud) only for the larger models or latency-critical sessions.
On machines with limited VRAM, keep most layers on GPU and offload the rest to system RAM (hybrid offloading). This is still GPU-assisted, not pure CPU, but it can make an otherwise impossible model usable.
Measure the actual experience on your workload before deciding the hybrid is “good enough.”
Honest Expectations
CPU-only Qwen will not match the responsiveness of the same model on a capable GPU. For many developers that is acceptable because the alternative is “no local model at all” or “send everything to a remote API.”
The useful question is not “Is CPU as fast as GPU?” It is “Is this fast enough for the job I need to do, on the hardware I already have, with the privacy and cost constraints I actually face?”
If the answer is yes for a small or mid-size quantized model, you have a working local setup. If the answer is no, the data from a real CPU test is the best justification for adding a GPU later.
Looking Ahead
Later articles will cover measuring real memory and speed on your own machine and turning a working local endpoint into something your applications can call reliably. Whether you stay on CPU or eventually move to a GPU, the same principles apply: start with a model that fits, measure what matters for your task, and only then optimize.
Make it run. Make it useful.
No comments yet — be the first to share a thought.