Docs · explanation

How benchmarks work

What denv measures (speed, throughput and cost), exactly how each is computed, and why every result is a recipe you can deploy and reproduce.

A benchmark result answers one question: on this workload, how fast, how much, and how cheaply does this model run on this GPU with this engine setup? Every result is produced by a recipe, and that recipe is what you deploy.

The three measurements

Measurement What it answers Reported as
Speed How fast does one request feel? Time to first token (p50, p99), output tokens per second per request, inter-token latency
Throughput How much work does one GPU do? Output tokens per second per GPU, and input tokens per second per GPU, at the latency target
Cost What does a token cost to produce? USD per million output tokens and per million input tokens, plus a blended figure for the workload's input/output mix

Speed

Measured per request, from the client side, over a streaming connection:

  • Time to first token (TTFT): from sending the request to receiving the first output token.
  • Output speed: output tokens divided by the time from first to last token.
  • Inter-token latency (ITL): the gap between consecutive output tokens.

Reported at p50 and p99 for each concurrency level, because speed falls as more requests share a GPU.

Throughput

Concurrency is raised step by step. At each step, throughput is the total output tokens per second across all requests, divided by the number of GPUs the recipe uses (for a disaggregated recipe, prefill and decode GPUs together).

The headline number is throughput at the latency target: the highest throughput reached while p99 TTFT and p99 ITL stay within the target you choose. A setup that is fast at one request but collapses under load scores low here.

Cost

cost per million output tokens = GPU price per hour ÷ (output tokens per second per GPU × 3600) × 1,000,000
  • GPU price per hour is the provider's public on-demand list price for that GPU on the run date, per GPU. Each result records the price and the provider it came from.
  • Throughput is the throughput at the latency target, so cost reflects a deployment that meets the target, not one pushed past it.
  • Input cost is computed the same way from input tokens per second per GPU.
  • Blended cost weights input and output by the workload's measured mix.

On your own hardware, reserved capacity or committed spend, your price is different. denv bench run uses your fleet's price, and denv bench get shows the price any published result assumed.

Workloads

Speed and throughput depend on the shape of the traffic, so results are reported per workload:

Workload Shape
chat Short prompts, medium answers, many concurrent users
agent Long, growing conversations with tool calls and a large shared prefix
rag Long prompts with retrieved context, short answers
coding Long prompts with code context, long answers, strict latency
batch Throughput first, latency relaxed

A workload is defined by input and output lengths, arrival timing and prefix reuse. Shapes and prompts are published.

What a result contains

Field Meaning
Recipe Model, engine version, hardware, topology, arguments and API adapter, pinned by version
Workload and target The traffic shape and the latency target used for throughput and cost
Speed TTFT, output speed and ITL at p50 and p99, per concurrency level
Throughput Tokens per second per GPU per concurrency level, and at the target
Cost Per million output, input and blended tokens, with the GPU price and source used
Provenance Date, GPU count, engine and driver versions, run id, and the command to reproduce it

Ranking

denv bench ranks results that meet your latency target by --rank cost (default), --rank throughput, or --rank speed. Results that miss the target are listed after, marked.

Reproducing a result

denv bench get bench_7Qk2
denv bench run --recipe deepseek-v4.1-flash/deepinfer@3 --target my-fleet --workload agent

On your own GPUs with your own traffic shape and price:

denv bench run --recipe deepseek-v4.1-flash/deepinfer@3 --target my-fleet --traffic shape.jsonl

shape.jsonl holds lengths and timing per request, not contents.

What benchmarks do not measure

Benchmarks measure speed, throughput and cost, not output quality. Quality is checked when you deploy: golden prompts and parity with the model's official API run as gates before a release takes traffic.

Independence

denv does not sell GPUs or tokens, and recipes run on published engines. Methods, workload shapes and recipes are public, and any result can be reproduced with one command.

From result to deployment

denv deploy --from-bench bench_7Qk2 --target aws-prod

This creates a release from the result's recipe, so what runs is what was measured. From there it is an ordinary release: it goes through stages, can be optimized on your traffic, and rolls back on its own.