Scenario¶
The problem a run is given: a model, the cluster it may use, the traffic it serves, the coefficient sets that price it, and the engine release it runs. Everything in it is fixed for the run. It names catalog and registry entries rather than containing them.
kind: Scenario
name: deepseek-v3-on-h200
model: deepseek-v3
coefficients:
- cost-model-primitives
- cost-model-collectives
- cost-model-host-overheads
- cost-model-attention
- cost-model-recurrent
engine_version: "0.29.0"
workload:
shape: summarization
cluster:
hardware: h200
fabric: ib-400g
nodes: 4
gpus_per_node: 8
storage:
- cpu_dram
Keys¶
| Key | Type | Required | Meaning |
|---|---|---|---|
kind |
string | yes | Always Scenario. |
name |
string | yes | The scenario's identity. |
model |
string | yes | A model directory under models/ in the catalog. |
coefficients |
list of strings | yes | Coefficient sets in the registry, named by file, at least one. How a cost model combines them is under Selecting an entry. |
engine_version |
string | yes | The exact release string of the engine the run describes, such as 0.29.0. Selects the rules pack. |
workload |
mapping | no | The traffic, as a shape, a trace or a replay. See Workload. Omitted for a question about capacity alone. |
routing |
mapping | no | Pins expert-parallel routing imbalance for the run, by a routing-profile set in the registry or an inline value. See Scenario pin. Omitted, the workload and the registry's default sets decide, else evenly loaded. |
acceptance |
mapping | no | Pins speculative acceptance for the run, by a profile set in the registry or an inline value. See Scenario pin. Omitted, the workload and the registry decide. |
cluster |
mapping | yes | The hardware available, below. |
cluster¶
| Key | Type | Required | Meaning |
|---|---|---|---|
hardware |
string | yes | A chip under hardware/ in the catalog. Every node carries it. |
fabric |
string | if nodes > 1 |
A fabric under networks/ in the catalog. Cross-node cost comes from it. |
nodes |
integer | yes | Node count, at least 1. |
gpus_per_node |
integer | yes | GPUs per node, at least 1. |
gpus_per_rack |
integer | no | GPUs per rack, where a rack boundary is a different link from a node boundary. A multiple of gpus_per_node. |
storage |
list of strings | no | Storage classes from the catalog's devices/storage.yaml that the cluster provides. If any are listed, a deployment's offload tiers must use them. |
Checks¶
A scenario is invalid if
kindis notScenario, orname,modelorengine_versionis empty;coefficientsis empty;cluster.hardwareis empty, ornodesorgpus_per_nodeis less than 1;gpus_per_rackis set and is not a multiple ofgpus_per_node;- the cluster has more than one node and names no
fabric; - a
storageentry is empty or appears twice; workloadis present and is not a valid binding.acceptanceis present and is not a valid pin.
Whether the names resolve is checked by ValidateAgainstCatalog, not by Validate; see
Validation.
Source: spec/scenario.