n4nAI

Cheapest fast models: cost per token vs throughput

Analyze why cheapest fast models cost vs throughput isn't just per-token price: throughput and concurrency determine real workload cost. Practical ranking.

n4n Team5 min read1,001 words

Audio narration

Coming soon — every post will get a voice note here.

Optimizing for cheapest fast models cost vs throughput forces a tradeoff that most pricing pages obscure: the sticker price per token is only half the equation. A model that costs a tenth of a cent per token but processes 20 tokens per second will blow up your infrastructure bill compared to a slightly pricier model that sustains 200 tokens per second under concurrent load.

The false economy of price-per-token

Per-token pricing is the easiest number to compare, so it wins attention. But tokens are not delivered instantly. Every millisecond a request spends waiting for the first token, or trickling subsequent tokens, is time your application servers, workers, and users are blocked.

If you run a synchronous API that holds a connection open until generation completes, slow throughput translates directly into occupied sockets and memory. At scale, that means more replicas, bigger clusters, and higher cloud spend—costs that never appear on the model provider’s invoice.

Consider a simple workload: generate 500 output tokens per request. At $0.10 per million output tokens, the model charges $0.00005 per request. At $1.00 per million, it charges $0.0005. A 10x price difference. But if the cheap model runs at 25 tok/s and the expensive one at 250 tok/s, the cheap request takes 20 seconds, the expensive one takes 2 seconds.

Throughput defines real cost under load

Throughput (tokens/sec) and concurrency (simultaneous requests) together determine aggregate capacity. The relationship is not linear once you hit provider rate limits or self-hosted VRAM ceilings.

Queueing and concurrency

A single-stream benchmark is misleading. Real systems batch. Managed APIs multiplex behind the scenes; self-hosted vLLM or TensorRT-LLM servers batch aggressively. The relevant metric is aggregate tokens/sec across your peak concurrency, not the single-call number.

If a provider caps you at 10 requests per minute on a cheap tier, your effective throughput might be 10 × 500 tokens / 60s ≈ 83 tok/s regardless of raw model speed. A pricier tier with 1000 RPM shifts that ceiling dramatically.

def effective_throughput(rate_limit_rpm, tokens_per_req):
    return (rate_limit_rpm / 60.0) * tokens_per_req

# Cheap tier: 10 RPM, 500 tokens
print(effective_throughput(10, 500))  # 83.3 tok/s
# Paid tier: 1000 RPM
print(effective_throughput(1000, 500))  # 8333 tok/s

The per-token cost is irrelevant if you cannot get tokens out the door.

Concrete scenario: batch processing vs interactive

Workloads split into two archetypes:

  1. Offline batch: you have a queue of 1M summaries to run. Latency tolerance is hours. Here, pure per-token cost dominates because you can scale workers to match throughput and let jobs wait.
  2. Interactive: user-facing chat or agent loops where p95 latency under 2s matters. Here, throughput per request and tail latency govern how many users a single node can serve.

For batch, the cheapest fast models cost vs throughput debate tilts toward the absolute lowest $/token, provided you can parallelize. For interactive, a model with 5x higher $/token but 10x throughput may be cheaper overall because you need 1/10th the serving infrastructure.

Example cost model

Assume you pay $1.00/hr for a worker that can hold 50 concurrent connections. If model A yields 50 tok/s per connection and model B yields 500 tok/s per connection:

worker_cost_per_hr = 1.00
conns = 50
seconds_per_hr = 3600

def cost_per_1k_tokens(model_tok_s, price_per_1k):
    # tokens produced per hour by worker
    total_tok = model_tok_s * conns * seconds_per_hr
    cost = worker_cost_per_hr
    return cost / (total_tok / 1000), price_per_1k

# Model A: 50 tok/s, $0.01/1k (cheap)
# Model B: 500 tok/s, $0.05/1k (pricier)
print(cost_per_1k_tokens(50, 0.01))   # infra cost ~$0.0004/1k + $0.01 = $0.0104
print(cost_per_1k_tokens(500, 0.05))  # infra cost ~$0.00004/1k + $0.05 = $0.05004

In this toy case, model A still wins on total cost. But change worker cost to $10/hr (real GPU instance) and concurrency to 5, and the curve flips. The point: you must plug your own numbers.

Model candidates and their profiles

Without quoting exact live prices, the landscape groups roughly:

  • Small open-weight models (Llama 3 8B, Mistral 7B) served on your own GPUs: lowest $/token if you have spare capacity, highest throughput per GPU, but you eat ops burden.
  • Hosted small specialists (Claude 3 Haiku, Gemini 1.5 Flash, GPT-3.5-turbo): designed for low latency and high batch throughput. Per-token cost is low-to-moderate, not the absolute cheapest, but rate limits are generous on paid tiers.
  • Large general models (GPT-4o, Claude Opus, Llama 70B): 5–20x pricier per token, often slower per stream, used when quality justifies.

The “cheapest fast models” usually live in the middle row. They are not the absolute lowest $/token (that’s self-hosted tiny models), but they avoid the latency tax of the bottom tier.

Caching changes the math

Prompt caching (system prompts, RAG context) reduces billed input tokens. Providers that honor cache-control hints can turn a repeated 2k-token context into a few hundred cached tokens. If your traffic is repetitive, effective $/token drops sharply for any model, narrowing the gap between cheap and pricier tiers.

{
  "model": "gateway-model",
  "messages": [
    {"role": "system", "content": "long static instructions", "cache_control": {"type": "ephemeral"}}
  ]
}

A gateway that forwards those hints preserves the discount across backend providers.

Routing and fallback to protect throughput

Throughput collapses when a provider rate-limits you mid-traffic. Custom retry logic adds latency and complexity. If you front your calls with a gateway such as n4n.ai, automatic fallback when a provider is rate-limited or degraded keeps aggregate tokens flowing without code changes. That resilience is part of the real cheapest fast models cost vs throughput calculation: a 30-second outage on a single provider can force you to over-provision elsewhere.

Honoring client routing directives also lets you pin a workload to the cheapest model that meets a latency SLO, then fall back only when needed.

curl https://api.n4n.ai/v1/chat/completions \
  -H "Authorization: Bearer $KEY" \
  -d '{"model":"auto","messages":[{"role":"user","content":"summarize"}]}'

The auto route selects from 240+ models based on your constraints, not a static config.

Tradeoffs: quality, context, caching

Cheap and fast often means smaller weights. For classification, extraction, or routing, that’s fine. For nuanced reasoning, a slightly slower model may save you retries that cost more than the token difference.

Context window matters: a model cheap per token but limited to 8k context forces you to truncate RAG results, hurting task success. Failed tasks cost engineering time and user trust—unmeasured in $/token.

Decisive takeaway

Stop ranking models by the per-token line item alone. For interactive systems, compute effective cost as (model $/token) + (infra $/hour ÷ aggregate tok/s at your concurrency). Benchmark your own traffic shape. In most user-facing cases, a mid-priced high-throughput model like a hosted Haiku-class or Flash-class endpoint beats the rock-bottom per-token option once you account for replicas and latency SLAs. For batch, self-hosted small models win if you already run GPUs.

The cheapest fast models cost vs throughput sweet spot is almost never the absolute cheapest per token—it’s the one that maximizes tokens delivered per dollar of total ownership under your load. Measure, then route accordingly.

Tagsprice-performancethroughputcost-per-token

Written by

n4n Team

The team building n4n — a single OpenAI-compatible API in front of 240+ models, with automatic fallback, load balancing and pay-per-token metering.

More from n4n Team →

All price-performance rankings posts →