metrale_bench/benchmarks/serve_matrix/
schema.rs1use crate::params::{ParamKind, ParamSpec, ParamValue};
11
12pub fn specs() -> Vec<ParamSpec> {
14 vec![
15 ParamSpec::new(
16 "include",
17 "Model filter",
18 "Case-insensitive substring of the HF id. `all` runs every checkpoint the box can serve.",
19 ParamKind::Text,
20 ParamValue::Text("all".into()),
21 ),
22 ParamSpec::new(
23 "max_seq_len",
24 "Max sequence length",
25 "Context each round is served with. Must fit the long-context probe plus its output.",
26 ParamKind::Int {
27 min: 2048,
28 max: 262_144,
29 },
30 ParamValue::Int(32_768),
31 ),
32 ParamSpec::new(
33 "long_ctx_tokens",
34 "Long-context probe",
35 "Prompt size for the needle-in-a-haystack recall probe. 0 turns it off.",
36 ParamKind::Int {
37 min: 0,
38 max: 131_072,
39 },
40 ParamValue::Int(16_384),
41 ),
42 ParamSpec::new(
43 "tps_tokens",
44 "Throughput budget",
45 "Output tokens the throughput probe asks for. Too few and the reply arrives in one SSE delta, leaving decode unmeasurable.",
46 ParamKind::Int { min: 16, max: 4096 },
47 ParamValue::Int(256),
48 ),
49 ParamSpec::new(
50 "probe_budget",
51 "Probe output tokens",
52 "Output budget for the codegen and tool-call probes.",
53 ParamKind::Int { min: 32, max: 4096 },
54 ParamValue::Int(512),
55 ),
56 ParamSpec::new(
57 "speculative",
58 "Speculative decoding",
59 "Serve each round with MTP on. Off by default: a checkpoint with no MTP head falls back to single-token decode and reports the baseline's numbers under a +MTP label.",
60 ParamKind::Bool,
61 ParamValue::Bool(false),
62 ),
63 ParamSpec::new(
64 "request_timeout_s",
65 "Request timeout",
66 "Seconds before a single probe request is abandoned.",
67 ParamKind::Int { min: 10, max: 3600 },
68 ParamValue::Int(300),
69 ),
70 ParamSpec::new(
71 "update_baselines",
72 "Update baselines",
73 "Record this run's tok/s as the new bar instead of gating against it. Deliberate refresh only — review the numbers first.",
74 ParamKind::Bool,
75 ParamValue::Bool(false),
76 ),
77 ]
78}