Zenaique

In benchmarks, tokens per second measures what exactly?

Flashcard·Easy·4.0 · 0·~30s·Asked atArize AiDatadog·Relevant atOpenAI
Attempt it
TL;DR

T/s is generated tokens per second, but it splits into two metrics: single-stream T/s (one request's decode rate, user-facing) and system T/s (aggregate across all in-flight requests, capacity-facing).

Memory aid
Sign in to see the mnemonic that makes this stick.
Easy to grasp

Picture a chef plating dishes. Single-stream T/s asks how many bites this one diner gets per second. System T/s asks how many bites the whole restaurant serves per second across every diner at once. With one diner, both numbers are the same. With sixty-four diners, the kitchen sends out hundreds of bites per second across the room, even though any one diner is still getting bites at roughly their normal pace, maybe a bit slower. So if a vendor brags '4,000 T/s on H100', they are probably counting the whole restaurant. If your chat reply feels slow at 30 T/s, you are measuring your one plate. Both are real; they just answer different questions, and you have to know which the benchmark is reporting.

Concept explanation~2 min read

Everything you need to truly understand this topic: intuition, mechanics, step by step explanation, code, formulas, and worked example. Click to expand.

Tokens-per-second is the most widely-quoted and most commonly misread inference benchmark. The number on a vendor's marketing page and the number you measure in production can differ by an order of magnitude, and both can be technically correct. Understanding why requires distinguishing two distinct metrics that share the name.

This deep dive defines single-stream T/s and system T/s precisely, walks through why they diverge under batching, gives concrete numbers for representative hardware and models, and ends with the benchmarking hygiene that production teams use to compare systems honestly.

Two metrics, one name

T/s as a unit means 'tokens generated per wall-clock second'. The ambiguity is the scope of aggregation. The two canonical interpretations are single-stream and system, and they answer different questions.

Single-stream T/s measures one request in isolation. You send one prompt, the model decodes it, and you divide the output token count by the wall-clock decode time. Mathematically this is 1 / TPOT, where TPOT (time per output token) is the steady-state time between successive token emissions. Single-stream T/s captures user-perceived speed: it is the rate at which the chat UI fills in for one user.

System T/s measures the server's total productivity across all concurrent requests. You time a window during which many requests are in flight, count the total output tokens emitted across all of them, and divide by the window length. System T/s is what feeds cost per token calculations: every token the server emits contributes to revenue and consumes GPU time, so summing them gives the productivity figure.

The relationship between the two is simple in concept: system T/s equals single-stream T/s times the average concurrency, minus the per-request slowdown that batching introduces. At batch size 1, the two are equal. At batch size 128, system T/s is roughly 50-80x single-stream T/s, depending on how aggressively the model and engine support batching.

The practical implication: when a benchmark reports 'X T/s', the first question to ask is which metric. A 70B model at 50 T/s is plausible single-stream; a 70B model at 4,000 T/s is plausible system. Mixing them up leads to nonsensical conclusions like 'Groq is 80x faster than H100' or 'H100 is 80x faster than Groq', both of which are wrong.

Why batching makes them diverge
Representative numbers for H100
Benchmark hygiene
T/s in 2026: hardware shifts and what to watch
Sign in to unlock the full deep dive.

Situations where this technique stops working.

Sign in to see when this approach fails.

2–4 min · Everything important, quickly.

Sign in to see the quick scan of the deep dive.

Real products, models, and research that use this idea.

  • Groq's LPU architecture publishes single-stream T/s benchmarks like '300 T/s on Llama 3 70B', targeting per-request speed at the cost of aggregate throughput.
  • vLLM and TGI on H100 publish system T/s benchmarks like '4,000 T/s on Llama 3 70B' at batch sizes of 128 in-flight requests.
Sign in to see more production examples.

What an interviewer would ask next. Try answering before peeking at the approach.

QWhy does single-stream T/s on a 70B model max out around 50 T/s on H100?
A

Decode is HBM-bandwidth-bound. Each step reads ~70 GB of weights (FP8) from HBM with 3.35 TB/s bandwidth, giving ~50 reads per second. Add KV cache reads and per-token overhead, and theoretical max sits in the 45-55 T/s range. Quantizing to FP4 on B200 or shrinking the model lifts this ceiling.

2 more follow-ups an interviewer would ask next. Sign in to reveal them.

Red flags & common mistakes

The phrases that signal junior thinking. Click to expand.

Most common mistake

Comparing one vendor's single-stream T/s to another's system T/s without normalizing. Both numbers are called 'T/s' and they are not the same thing.

Sign in to see all red flags and common mistakes.

60 second bullets to scan on the way to the call.

  • Define T/s as generated tokens per wall-clock second.

  • Distinguish single-stream T/s from system T/s in scope.

Sign in to unlock the revision sheet.

Primary sources. Browse if you want the original framing.

Similar questions

Same topic, related formats. Practice these next.

4 curated
Next question
What is the KV cache in transformer inference?
Flashcard·Easy