We buy the servers we test with our own money. Some links are affiliate links; they never change a verdict. Disclosure · How we test

CPU vs GPU for LLM work comes down to one question: is the CPU fast enough for the way you use the model? On our Hetzner CX33, a 4 vCPU cloud server for 10.27 € a month, Llama 3.2 3B generated 13.5 tokens/s with no GPU. That is faster than most people read. A GPU only pays off when you need bigger models, many users at once or near-instant answers.

This matters now because small open models got good enough for real tasks, and GPU rental is billed by the second, so "just rent a GPU" sounds cheap until it runs all month. Below are our CPU measurements translated into everyday terms, and the point where a GPU starts to make sense.

Verdict

For one person chatting with a 1B to 3B model, or for overnight batch jobs, a 4 vCPU CPU server like the Hetzner CX33 is enough: it generated 13.5 tokens/s with Llama 3.2 3B. Rent a GPU when you need 8B+ models with fast replies or several users at the same time.

Tested in the Lab Hetzner CX23, CX33, CX43, CAX11, CAX21 · Nov 2026

This page sits in our self-hosted LLM section. For the raw benchmark detail per server, see Ollama CPU performance.

What we measured on CPU

We ran Ollama natively, CPU only, on five Hetzner Cloud servers in Helsinki: three x86 plans (CX23, CX33, CX43) and two ARM Ampere plans (CAX11, CAX21). Each model wrote a 256-token answer at temperature 0. Models were Llama 3.2 1B, Llama 3.2 3B and Llama 3.1 8B in the default 4-bit (q4) quantization from the Ollama library. Quantization shrinks the model weights so they fit in less RAM, at a small cost in quality.

Two speeds matter. Generation tokens/s is how fast the answer is written. A token is a piece of a word. Prompt tokens/s is how fast the model reads your input before it starts answering.

ServerModelGeneration
tokens/s
Prompt
tokens/s
Load timeRAM used (system)Note
Hetzner CX232 vCPU · 4 GB · x86_64Llama 3.2 1B10.3454.03.5 s2,001 MiB
Hetzner CX232 vCPU · 4 GB · x86_64Llama 3.2 3B5.8325.28.8 s3,002 MiB
Hetzner CX232 vCPU · 4 GB · x86_64Llama 3.1 8Bdid not run–––OOM-killed after ~50 s: Ollama fit check reported it would leave 1698 MiB free,
Hetzner CX334 vCPU · 8 GB · x86_64Llama 3.2 1B23.21,322.82.0 s2,205 MiB
Hetzner CX334 vCPU · 8 GB · x86_64Llama 3.2 3B13.5776.53.7 s3,068 MiB
Hetzner CX334 vCPU · 8 GB · x86_64Llama 3.1 8B6.3258.610.0 s5,941 MiB
Hetzner CX438 vCPU · 15 GB · x86_64Llama 3.2 1B37.51,910.91.7 s2,293 MiB
Hetzner CX438 vCPU · 15 GB · x86_64Llama 3.2 3B21.21,161.33.7 s3,196 MiB
Hetzner CX438 vCPU · 15 GB · x86_64Llama 3.1 8B9.7447.47.9 s6,023 MiB
Hetzner CAX112 vCPU · 4 GB · aarch64Llama 3.2 1B15.0835.54.8 s2,203 MiB
Hetzner CAX112 vCPU · 4 GB · aarch64Llama 3.2 3B6.5376.46.0 s3,214 MiB
Hetzner CAX112 vCPU · 4 GB · aarch64Llama 3.1 8Bdid not run–––llama-server process has terminated: exit status 1: ggml_aligned_malloc: insuffi
Hetzner CAX214 vCPU · 8 GB · aarch64Llama 3.2 1B26.81,427.13.2 s2,315 MiB
Hetzner CAX214 vCPU · 8 GB · aarch64Llama 3.2 3B12.2664.15.2 s3,282 MiB
Hetzner CAX214 vCPU · 8 GB · aarch64Llama 3.1 8B5.7226.512.3 s5,796 MiB

Measured by AI Hosting Lab on 2026-11-05 · 5 servers · method · raw data

CX235.8CX3313.5CX4321.2CAX116.5CAX2112.2
Llama 3.2 3B: tokens/s (higher is better) · x86 ARM

Two gaps in the table are worth knowing. Llama 3.1 8B did not run on the 4 GB CAX11: Ollama stopped with "insufficient memory (attempted to allocate 4402.48 MB)". On the 4 GB CX23 it failed too: the kernel OOM killer stopped it after about 50 s, although Ollama's fit check had said it would fit.

What these numbers mean in practice

Reading speed: the chat test

An average adult reads English non-fiction silently at 238 words per minute, according to a 2019 meta-analysis by Marc Brysbaert. Google's token documentation gives a rule of thumb of 60 to 80 English words per 100 tokens. Llama's tokenizer is not identical, so treat this as approximate. Put together, a model that streams about 5 to 7 tokens/s keeps pace with a typical reader.

Measured speedRoughly in words per minute (60–80 words per 100 tokens)Feels like
Llama 3.2 3B on CX23: 5.8 tokens/sabout 210–280Close to reading speed. Usable, you will notice waiting.
Llama 3.1 8B on CX33: 6.3 tokens/sabout 230–300Just keeps up with a reader.
Llama 3.2 3B on CX33: 13.5 tokens/sabout 490–650Faster than you read. Comfortable for chat.
Llama 3.2 1B on CX43: 37.5 tokens/sabout 1,350–1,800Text appears in a burst.

The word ranges are our arithmetic: tokens/s × 60 × 0.6 to 0.8.

Seconds per answer: the "waiting for it" test

Streaming hides some of the wait, but tools that need the full answer (an n8n workflow, an API call, a bot that replies in one message) wait for the last token. For our 256-token answers, divide 256 by the measured speed:

  • Llama 3.2 3B on CX23 (5.8 tokens/s): about 44 seconds.
  • Llama 3.2 3B on CX33 (13.5 tokens/s): about 19 seconds.
  • Llama 3.2 3B on CX43 (21.2 tokens/s): about 12 seconds.
  • Llama 3.1 8B on CX43 (9.7 tokens/s): about 26 seconds.
  • Llama 3.1 8B on CAX21 (5.7 tokens/s): about 45 seconds.

That is fine for a background job and too slow for a support widget where a visitor expects a reply in a few seconds.

Long prompts: the part most CPU tests skip

Prompt reading is faster than writing, but it scales with input length. Our test prompt was short. If you paste a long document, or a retrieval step adds pages of context, the model reads all of it before the first word appears. At the measured prompt speed of 776.5 tokens/s for Llama 3.2 3B on the CX33, a 2,000-token input would take around 2.6 seconds; at 258.6 tokens/s for Llama 3.1 8B on the same server, around 7.7 seconds. We have not measured long prompts directly, and speed can drop as the context grows, so read these as best cases.

Batch jobs: where CPU shines

For work nobody waits for (tagging support tickets overnight, summarising RSS items, classifying rows), speed matters less than cost per day. Running nonstop at the measured 13.5 tokens/s, the CX33 would write about 1.17 million tokens a day with Llama 3.2 3B. That is a lot of short summaries for 10.27 € a month. We work out the cost per token on our cost per million tokens page.

x86 vs ARM on CPU inference

The ARM servers are close but not ahead. Llama 3.2 3B ran at 12.2 tokens/s on the CAX21 (4 vCPU ARM, 12.69 €) against 13.5 tokens/s on the CX33 (4 vCPU x86, 10.27 €). The 2 vCPU ARM CAX11 beat the 2 vCPU x86 CX23 with the 1B model (15 vs 10.3 tokens/s), but they were nearly level with the 3B (6.5 vs 5.8 tokens/s). More detail is in Ollama on ARM.

CPU or GPU: comparison

CPU cloud server (our Lab)Rented GPU (not yet tested by us)
Price modelFlat monthly price, e.g. 10.27 € for the CX33Hourly, billed per second on RunPod
Model sizeUp to 8B in 8 GB RAM in our testsLimited by VRAM (GPU memory): 24 GB on an RTX 4090, 80 GB on an A100 or H100
Speed with 3B model5.8 to 21.2 tokens/s measuredNot measured by us yet
Several users at onceRequests share the same few cores; we measured one at a timeBuilt for parallel requests
Always-on costSame price whether busy or idlePays per hour, so 24/7 gets expensive

Option 1: CPU server

Best for: one user or a small team, 1B to 3B models, batch jobs, keeping data on a server you control. Main drawback: 8B models answer at around reading speed at best (9.7 tokens/s on the 8 vCPU CX43), and anything larger is out of reach on these sizes. Skip it if: you need replies in under five seconds or serve many people at the same time.

Option 2: rented GPU

Best for: models above 8B, many concurrent users, long-document work, short bursts of heavy batch work where per-second billing helps. Main drawback: leaving it on all month costs far more than a CPU server. Skip it if: your workload fits a 3B model and nobody is waiting on the answer.

GPU prices we checked today

These are list prices from RunPod's official pricing page, opened on 5 November 2026 (the page says "Updated November 4, 2026"). The Pods cards appear to show Secure Cloud prices; the FAQ on the same page gives lower "from" prices on Community Cloud for A100 and H100. Prices are in US dollars.

GPU (VRAM)Pods price per hourCommunity Cloud, from30 days nonstop at the Pods price
RTX A5000 (24 GB)$0.27–$194.40
L4 (24 GB)$0.59–$424.80
RTX 4090 (24 GB)$0.89–$640.80
A100 PCIe (80 GB)$1.79$1.19$1,288.80
H100 PCIe (80 GB)$2.89$1.99$2,080.80
H100 SXM (80 GB)$3.99$2.69$2,872.80

The last column is our arithmetic (hourly price × 24 × 30). Storage and network can add to the bill. We also tried to open Vultr's official pricing page for its cloud GPUs today, but it refused our request, so we left Vultr prices out rather than copy them from a third party. You can check them yourself on Vultr's pricing page.

The useful comparison: the cheapest GPU on that list, run 24/7, costs about 19 times the CX33's 10.27 € monthly price (different currencies, so this is a rough ratio). A GPU wins on speed. It only wins on cost when you either use it hard or switch it off between jobs. If you want to try one for a short batch run, RunPod bills per second.

We have not measured any GPU in the Lab yet. Tokens/s for the GPUs above are not on this page on purpose. GPU tests are scheduled, and this page will get the numbers when they exist.

When a GPU is worth it

  • You need a model above 8B. Our 8 GB servers topped out at Llama 3.1 8B, which used 5,941 MiB of system RAM on the CX33. Bigger models need more memory than these plans have.
  • Several people use it at once. Our numbers are for one request at a time. A CPU shares its cores between requests, so each user waits longer.
  • Answers must arrive in seconds. The fastest 3B result we measured still took about 12 seconds for 256 tokens.
  • You work with long documents. Prompt reading on CPU adds seconds per thousand tokens, as shown above.

Ollama itself supports NVIDIA GPUs with compute capability 5.0 or newer, AMD through ROCm, and Apple through Metal, so the same tool runs on both sides. Your setup stays the same when you move.

When CPU is enough

  • A private assistant for yourself on a 1B or 3B model.
  • Automations that call a model and can wait half a minute, such as n8n workflows that summarise or classify.
  • Overnight batch jobs where cost per day matters more than seconds per answer.
  • Keeping data in-house on a cheap server instead of sending it to an API.

Before you pick a size, check memory: a model that does not fit in RAM does not run at all, as the CAX11 showed with the 8B model.

Next step: enter your models and apps into our VPS RAM calculator to see which CPU server fits before you spend anything on a GPU.

Hetzner prices on this page include 21% VAT, as charged to our Czech (EU consumer) account by the Hetzner API on 2026-11-05. Without VAT (businesses, most buyers outside the EU): CX23 5.49 €, CX33 8.49 €, CX43 15.99 €, CAX11 5.99 €, CAX21 10.49 € per month.

FAQ

Can an LLM run without a GPU?

Yes. Ollama runs models on the CPU alone. On our Hetzner CX33 (4 vCPU, 8 GB) Llama 3.2 3B generated 13.5 tokens/s and Llama 3.1 8B generated 6.3 tokens/s with no GPU at all.

How many tokens per second do I need for a chatbot?

For one person reading along, roughly 5 to 7 tokens/s keeps up with an average adult reading speed of 238 words per minute (Brysbaert 2019), using Google's rule of thumb of 60 to 80 English words per 100 tokens. More users or longer answers need more.

When is a GPU worth paying for?

When you need models above 8B parameters, many users at once, long prompts such as document search, or answers in a couple of seconds. Those are the cases where our CPU numbers start to hurt.

Have you tested GPU servers?

Not yet. This page uses our measured CPU results and GPU list prices from RunPod's official pricing page checked on 5 November 2026. GPU measurements are scheduled and this page will be updated.

Sources

  1. RunPod, GPU Pricing (2026)
  2. Ollama, Hardware support: GPU (2026)
  3. Brysbaert, How many words do we read per minute? Journal of Memory and Language (2019)
  4. Google, Understand and count tokens (2026)
  5. Modular, CPU vs GPU vs TPU (2026)