Docs · how to

Choose a model and GPU

Use benchmark results to pick the model, GPU and engine setup with the best speed, throughput and cost for your workload, then check it fits your fleets.

Every benchmark result is a recipe measured on one workload: a model, an engine version, a GPU and a topology. Choosing a setup means choosing a result, then checking it fits the GPUs you can get.

1. Rank results for your workload

denv bench --workload agent --latency p99<1.5s
#  MODEL                GPU          RECIPE                           TTFT P99  TOK/S  TOK/S/GPU  $/M OUT
1  deepseek-v4.1-flash  gb200-nvl72  deepseek-v4.1-flash/deepinfer@3  …         …      …          …
2  deepseek-v4.1-flash  h200         deepseek-v4.1-flash/sglang@2     …         …      …          …
3  glm-5.3              mi355x       glm-5.3/vllm@2                   …         …      …          …
Flag Use it to
--workload Match your traffic shape: chat, agent, rag, coding or batch.
--latency Set the target every ranked result must meet, such as p99<1.5s for time to first token.
--model Compare setups for one model family, or leave it out to compare models.
--hardware Limit to GPUs you have or can get, such as --hardware h100.
--rank cost (default), throughput or speed.

Results that miss the latency target are listed after the ranked ones, marked. Benchmarks measure speed, throughput and cost only; how they are computed is in How benchmarks work.

2. Read the result

denv bench get 1

Check:

Field Question to ask
speed Does p99 time to first token and output speed hold at the concurrency you expect?
throughput How many GPUs will your peak load need at this throughput per GPU?
cost Which GPU price did it assume? On your own hardware or reserved capacity, yours is different.
recipe Which engine version, topology and arguments produced the numbers?

3. Check it fits your fleets

denv fleet list
FLEET        PROVIDER  HARDWARE      DOMAIN   FREE GPUS
gb200-rack   own       gb200-nvl72   72       144
h200-use1    aws       h200          8        32

The HARDWARE column is what recipes match on (Hardware). A recipe's topology must fit your domain size: a 64-GPU decode pool needs a 72-GPU domain, not an 8-GPU server. If you have no fleet with that hardware, denv offers --hardware <id> shows where you can get it.

4. Confirm on your own GPUs

Published results use public GPU prices and standard workload shapes. Re-run the top candidates on your fleet, with your price and your traffic shape:

denv bench run --recipe deepseek-v4.1-flash/sglang@2 --target h200-use1 --traffic shape.jsonl

5. Deploy it

denv deploy --from-bench 1 --target gb200-rack

Or reference the recipe in a release you manage in denv.yaml:

release:
  model: ds-flash
  weights: hf://deepseek-ai/DeepSeek-V4.1-Flash-1017@c41a7e2
  recipe: deepseek-v4.1-flash/deepinfer@3

Override a few fields

If one or two things differ, such as a newer engine patch or more prefill replicas, override them in the release. The recipe stays the same; the release records the difference.

release:
  recipe: deepseek-v4.1-flash/deepinfer@3
  overrides:
    engine: { version: 0.1.3 }
  topology:
    mode: disaggregated
    prefill: { gpus: 4, replicas: 3 }
    decode: { gpus: 64, replicas: 1 }

An override changes what was measured, so benchmark the release on your fleet before relying on the published numbers.

Serve the same weights on different hardware

A stage can serve from fleets with different hardware by giving each fleet its own recipe, for example the top result on your racks and the second on rented H200s:

stages:
  - name: prod-us
    fleets: [gb200-rack, h200-use1]
    recipes: { h200-use1: deepseek-v4.1-flash/sglang@2 }

Two engines serving the same weights should give the same answers; parity checks confirm it at deploy time.

When to write your own recipe

  • No result covers your hardware or your model.
  • You serve your own fine-tune with a different chat template.
  • You have tuned arguments you want to reuse across releases.

See Write a recipe, then benchmark it with denv bench run. For what each engine supports, see Engines.