What Is the Cheapest Architecture for Deep Learning Inference
A client called me two weeks ago, furious. They'd just gotten their cloud bill for a recommendation model that does about 40 million inferences a month. Six thousand dollars. For a model that runs in 8 milliseconds. "Nishaant," he said, "my old CPU box did this for $300 a month. What changed?"
What changed is that they'd moved to A100s because someone told them GPUs were "required for AI." Nobody ran the math. And this is the single most common mistake I see in production AI right now — in 2026, when the GPU rental market is tighter and weirder than it's been in years.
So let me answer the question directly: what is the cheapest architecture for deep learning inference depends almost entirely on your model size, your batch profile, and your latency budget. There is no universal answer. Anyone who tells you "GPUs are always cheaper" or "CPUs are always cheaper" hasn't shipped a real system.
Here's how to figure out which one wins for you — with real numbers, real hardware, and the trade-offs nobody puts on the sales slide.
The wrong question everyone asks first
Most people start with "GPU or CPU?" That's the wrong frame. The right frame is: what does one inference cost me at my actual traffic pattern?
Cost per inference isn't a hardware spec. It's a derived number — throughput divided by hourly cost, adjusted for utilization. A GPU that costs $2/hour and serves 10,000 inferences/sec at full load is cheaper per inference than a CPU that costs $0.10/hour and serves 50/sec. But only if you actually keep that GPU busy.
And that's the trap. Most inference workloads aren't busy. They're spiky, low-volume, or latency-sensitive in a way that prevents batching.
When I benchmarked this for SIVARO clients through 2025 and into 2026, the pattern that emerged was consistent: for anything under roughly 50 queries per second, CPUs win on cost. Above that, GPUs win — sometimes by 10x. The crossover move is violent, not gradual, and it depends on model size more than anything else.
GPU architecture cost per inference comparison: the numbers that matter
Let me give you the actual comparison table I use with clients. These are real rental prices as of Q3 2026 from the major providers, roughly normalized per hour of compute.
| Architecture | Typical hourly cost | Throughput (7B model, batched) | Cost per 1M inferences |
|---|---|---|---|
| CPU (16 vCPU, e.g. c7i) | $0.35 | ~120 tok/s | ~$0.81 |
| T4 (16GB) | $0.35 | ~800 tok/s | ~$0.12 |
| L4 (24GB) | $0.70 | ~2,400 tok/s | ~$0.08 |
| A10G (24GB) | $1.00 | ~3,100 tok/s | ~$0.09 |
| A100 40GB | $2.50 | ~8,500 tok/s | ~$0.08 |
| H100 (80GB) | $4.50 | ~15,000 tok/s | ~$0.08 |
| Apple M-series (local) | amortized | varies wildly | ~$0.00 at margin |
Read that table carefully. The per-inference cost converges around $0.08-0.12 per million for anything from a T4 up to an H100. The H100 isn't cheaper per inference than the L4. It's faster. Those are different things.
This is the thing that trips up almost every client conversation I have. People buy the H100 thinking they're getting efficiency. They're getting speed. If your traffic is steady and you can saturate either card, buy the cheaper card and more of them — you'll spend less per inference. You buy the H100 for latency, for large models that won't fit elsewhere, or for traffic so high that rack space and power become the real constraints.
I wrote a longer internal doc on this for the team, but the short version: GPU architecture cost per inference comparison almost always favors the smallest card that fits your model and hits your latency SLA.
python
# Rough cost-per-inference model I actually use
def cost_per_million_inferences(
hourly_cost: float,
throughput_per_sec: float,
utilization: float = 0.7,
) -> float:
effective_throughput = throughput_per_sec * utilization
inferences_per_hour = effective_throughput * 3600
cost = (hourly_cost / inferences_per_hour) * 1_000_000
return round(cost, 4)
# Example: L4 at 70% utilization
print(cost_per_million_inferences(0.70, 2400, 0.7))
# Output: 0.1157
That utilization parameter is where dreams die. If you set it to 0.05 because your traffic is spiky, every GPU looks terrible. Which brings me to the real answer.
GPU architecture vs CPU architecture for AI: when each one actually wins
I keep coming back to this because the industry keeps getting it wrong. Let me be blunt about where each one belongs.
CPUs win when:
- You're doing under ~30-50 QPS
- Your model is small (under 1B params, or a distilled classifier)
- Latency isn't brutal — 50-100ms is fine
- You can use quantized models (ONNX Runtime, llama.cpp, Intel's OpenVINO)
- Your traffic is unpredictable and you can't justify a GPU sitting idle
GPUs win when:
- You're above the crossover point and staying there
- You need consistent low latency under load
- Batching is possible (this is the killer feature)
- Your model doesn't fit in CPU memory comfortably
- You're serving large language models above ~2B params
The middle zone — 30 to 80 QPS on a mid-size model — is where I've lost the most sleep. It's genuinely close, and the answer flips based on how spiky your traffic is.
Here's the honest positioning: for most startups and mid-market companies in 2026, the cheapest architecture for deep learning inference is a quantized model on a CPU with good batching, until you hit roughly 50 QPS per replica. Then you move to an L4 or T4. You don't jump to an H100 until you've got a fleet of smaller cards already maxed out.
The architecture nobody mentions: serverless inference
AWS SageMaker, Google Vertex, and a dozen newer players will bill you per inference or per millisecond. No idle cost. Sounds perfect for spiky workloads.
It's not. Let me show you why.
Serverless inference in 2026 typically runs $0.00002 to $0.0001 per inference for small models, plus cold-start penalties you can't control. At 10 million inferences a month, that's $200 to $1,000. Sounds cheap.
But the cold starts are brutal. I've measured 8-15 second cold starts on serverless endpoints running 7B models. For a chat product, that's unusable. For a batch job, it's fine. For anything user-facing with an expectation of sub-second response, serverless is a trap unless you're paying for provisioned concurrency — at which point you're back to paying for idle hardware.
My position: serverless inference is the cheapest option for genuinely unpredictable, low-volume, latency-tolerant work. It's the most expensive option for everything else, because you're paying a premium for elasticity you'll never use.
The cheapest option for most people: quantized models on your existing hardware
Here's the contrarian take. Most people reading this don't need a GPU at all. They need to quantize their model and run it on a CPU.
I've moved three client workloads from GPU fleets back to CPUs in the last 18 months by doing exactly this. A 7B model at INT8 quantization runs at ~40 tokens/sec on a modern 16-core CPU. At 4-bit, closer to 80. For a recommendation or classification model, that's often enough.
bash
# Quantize a model with llama.cpp — actual command I use
./quantize ./models/llama-7b-f16.gguf \
./models/llama-7b-q4_k_m.gguf \
Q4_K_M
# Serve it with continuous batching on CPU
./llama-server -m ./models/llama-7b-q4_k_m.gguf \
-c 4096 \
-t 16 \
--host 0.0.0.0 \
--port 8080
That's it. No CUDA, no driver hell, no GPU quota fights. On a $0.35/hour CPU instance, you can serve a surprising amount of traffic.
The trade-off is latency. You won't get 20ms responses. You'll get 200-400ms. If your product can tolerate that — and a lot of products can — you just cut your inference bill by 80%.
Batching: the thing that changes every number
I've been sitting on this section because it's the most important thing in this entire article.
Batching is how GPUs become cheap. A GPU running one inference at a time wastes 95% of its silicon. A GPU running 32 inferences in a batch is 10-20x more efficient per inference than the same GPU running one at a time.
This is why my table above assumes batched throughput. If you're not batching, your GPU cost-per-inference is garbage — often worse than CPU.
The problem: batching requires either concurrent traffic or a willingness to add latency. If you have steady concurrent load, batch. If you don't, you can use continuous batching (vLLM, TensorRT-LLM, TGI all support it) which interleaves requests dynamically. Continuous batching is the single biggest efficiency unlock in production LLM serving since 2023, and it's still underused.
python
# vLLM continuous batching — the config I ship by default
from vllm import LLM, SamplingParams
llm = LLM(
model="meta-llama/Llama-3.1-8B-Instruct",
quantization="awq",
max_model_len=4096,
gpu_memory_utilization=0.90,
enable_prefix_caching=True,
)
sampling = SamplingParams(temperature=0.7, max_tokens=256)
outputs = llm.generate(prompts, sampling)
If you take one thing from this article: batching is not optional for cheap GPU inference. Without it, you're paying 10x more per inference than you need to.
The real-world decision tree
Let me give you the actual flowchart I use with clients. No theory, just decisions.
Step one: measure your QPS at peak and at median. If peak is 10x median, you're spiky and CPUs or serverless win. If peak is 2x median, you're steady and GPUs win.
Step two: measure your model's memory footprint. If it fits in 2GB quantized, you're in CPU territory or a T4. If it needs 20GB, you're in L4/A10 territory. If it needs 60GB+, you need an A100 or H100 and the conversation is over.
Step three: check your latency SLA. Under 50ms p99? GPU. Under 500ms? CPU is viable if you quantize.
Step four: calculate cost per inference for your three top candidates using the formula above. Pick the cheapest that hits your SLA.
That's it. It's not glamorous. But I've used this exact framework on 14 client engagements in the last two years, and it's never pointed me wrong.
The hardware that actually wins in 2026
If you're buying or renting today, here's where I'd put my money.
For sub-1B models at any scale: CPU with INT8 quantization, or Apple Silicon for on-device work. The M4 and M5 chips are absurd for this — 100+ tokens/sec on a 7B 4-bit model with basically no power draw. If you're doing on-prem, this is transformative.
For 7-13B models with steady traffic: L4 or A10G. The L4 is the single best price/performance card for inference in 2026 — I've been recommending it for 18 months and the numbers keep holding.
For 30-70B models: A100 80GB or H100 with AWQ or FP8 quantization. This is where the H100's cost actually pays off, because at these sizes the smaller cards can't hold the model without sharding.
For spiky, low-volume, latency-tolerant work: Serverless (Bedrock, Vertex, or one of the newer players like Modal or Baseten). Perfect fit. Don't overthink it.
For extreme batch work where you control the schedule: Spot instances. I've run jobs on $0.20/hour A100 spots that would have cost $2.50/hour on-demand. 90% savings if you can tolerate interruption. For batch inference, you can.
FAQ
Is a GPU always faster than a CPU for inference?
No. For very small models (under ~100M params), a modern CPU with AVX-512 is often competitive with a GPU, because the overhead of moving data to and from GPU memory dominates. For large models, GPUs win decisively.
What's the cheapest architecture for deep learning inference at scale?
At scale (above ~50 QPS per replica), the cheapest is a fleet of mid-tier GPUs with continuous batching and quantized models. An L4 running AWQ-quantized models at 70% utilization costs roughly $0.08-0.12 per million inferences. Nothing beats that on a per-inference basis.
Can I run inference on a $5/month VPS?
For a tiny model, yes. People run quantized BERT-class models on 2GB VPS instances. For anything in the LLM range, no.
Does quantization hurt accuracy?
INT8 is nearly lossless. 4-bit (Q4_K_M, AWQ, GPTQ) loses maybe 1-3% on most benchmarks. FP8 is essentially lossless. In production, 4-bit is almost always the right choice — the accuracy hit is dwarfed by the cost savings.
Should I use ONNX Runtime, TensorRT, or native PyTorch for inference?
TensorRT wins on NVIDIA hardware for latency. ONNX Runtime is the most portable. vLLM wins for LLMs specifically. I use vLLM for LLMs and ONNX Runtime for everything else.
Is it worth buying GPUs instead of renting?
Only if you have steady, predictable utilization above 60% and you're planning to keep the workload for 2+ years. Below that, renting wins.
What about NPUs and TPUs?
Google's TPUs are great if you're already in GCP and serving a supported model. NPUs (Intel, Qualcomm) are improving fast but the tooling is still painful in 2026. Not ready for most production use.
How much does batching actually save?
On a 7B model, going from batch size 1 to batch size 16 is roughly a 10x improvement in throughput per GPU. That's not a typo. It's why batching matters more than hardware choice for most workloads.
What I actually tell clients
The cheapest architecture for deep learning inference isn't a piece of hardware. It's a discipline: quantize your model, batch your requests, measure cost per inference at your real utilization, and pick the smallest hardware that hits your SLA.
Most teams skip the discipline and buy the best hardware. Then they pay 10x more than they need to.
I've watched this happen at companies from 5-person startups to public enterprises in 2026. The pattern is identical. Somebody with authority decides "we need GPUs for AI," nobody calculates cost per inference, and six months later the bill is a problem.
Don't be that team. Run the numbers first. You'll probably find that the cheapest architecture for what is the cheapest architecture for deep learning inference question is smaller, cheaper, and slower than you expected — and perfectly adequate for what your users actually need.
Nishaant Dixit — Founder of SIVARO. Building data infrastructure and production AI systems since 2018. Built systems processing 200K events/sec.