All glossary terms

Efficiency

Tokens per second per GPU

How many tokens one GPU emits per second, for one user or a batch. The core unit for comparing serving setups, valid when model, precision, and batch match.

Tokens per second per GPU is the serving stack's productivity number, and it has two faces. Per-user tokens per second is what the caller feels as typing speed. Aggregate tokens per second is what the operator sells, and the two are not the same: at batch 16, each user might see 40 tokens per second while the card emits 600 in aggregate, because the weight reads are shared across the whole batch.

For single-token decode the ceiling is simple to reason about. Each step must read every weight byte once, so tokens per second cannot exceed memory bandwidth divided by the size of the model. Batch scaling then multiplies that ceiling, because the same weight read serves many users at once, until KV cache reads and scheduler overhead eat the difference.

Use it for honest comparisons, and say the conditions out loud: tokens per second per GPU across an 8B fp8 model says nothing about a 70B fp16 setup, and prefill-heavy workloads measure differently from decode-heavy ones. The variants you may be asked to compare are time to first token (prefill speed), inter-token latency (decode speed), and aggregate throughput (fleet fitness).

On the fleet level, this number per card times the number of cards, divided by the hourly cost, gives tokens per dollar, the unit that actually decides rental choices. A card with half the tokens per second per GPU is only interesting if it costs more than half as much.

A worked example

A 70B model in 8-bit on one H100 (about 3.35 TB/s of memory bandwidth), counting weight traffic only; KV cache reads trim these numbers at long context.

  1. One user: 3.35 TB/s / 70 GB = 47.9 steps per second, so about 48 tokens per second.
  2. At batch 16 the weights are still read once per step: 47.9 x 16 = about 765 tokens per second in aggregate.
  3. Per-user speed stays near 48 until KV reads and scheduling overhead consume the slack.

One card, one model: 48 tokens per second for a single user, about 765 across a batch of 16 - batching reuses reads instead of repeating them.

Where this shows up

Test yourself

Related terms