The four metrics, and why one number is never enough
TTFT — time to first token. Queue time plus prefill. Scales with prompt length (roughly linearly, with a quadratic attention term at long context) and with how much other work is ahead of you. This is what determines whether an interface feels responsive.
TPOT / ITL — time per output token. The steady-state gap between tokens once streaming has started. Set by decode, so it is set by bandwidth. Roughly independent of context length, and degrades gently with batch size. Human reading is around 5–8 tokens/second, so anything under ~150 ms/token feels adequate and anything under ~30 ms feels instant.
End-to-end latency. TTFT + TPOT × output_tokens. What actually matters to someone waiting for a complete answer, and dominated by the second term for any substantial output.
Throughput. Total output tokens per second across all concurrent requests. This is what sets your cost per million tokens, and it is the only one of the four that your finance team cares about.
The reason a single number is meaningless is that these move in opposite directions:
batch size 1 -> 256
throughput ▲▲▲▲▲▲▲▲▲ up ~100x or more
TPOT ▼ slightly worse
TTFT ▼▼▼▼ much worse (queueing + prefill contention)
A system advertising "20,000 tokens/second" at batch 256 may be delivering 10 tokens/second to each user. Both numbers are honest; only one of them is relevant to any given question.
Two further points that separate real measurement from marketing:
Percentiles, not means. Latency distributions in serving are heavily right-skewed — a mean TPOT of 30 ms is compatible with a p99 of 400 ms if a few requests get preempted or stuck behind long prefills. Report p50, p95, p99. A mean alone hides exactly the behaviour users complain about.
Goodput, not throughput. If you have an SLO — say, TTFT under 500 ms and TPOT under 50 ms — then tokens delivered outside that SLO are worth nothing. Goodput counts only requests that met their SLO. A system can have excellent throughput and terrible goodput by running at a batch size that violates latency targets for everyone. Optimizing throughput without an SLO constraint is optimizing the wrong thing, and it is a common way for benchmarks to mislead.
REMEMBERTTFT, TPOT, end-to-end latency and throughput are separate quantities that trade against each other through batch size.