Skip to main content

study-config

Configuration Reference

Full reference for all ExperimentConfig fields. All fields except model are optional and have sensible defaults.

Config identity and hashing. Each experiment carries three config hashes: the declared hash digests the fields you wrote in the YAML config (user intent); the resolved hash digests the config after the engine applies its own defaults and normalisation (what the run actually uses); and the observed hash digests the config as the live library reports it after construction (the resolved and observed hashes project the same values at present). The declared hash and the resolved/observed hashes form two separate hash families that never intersect. The mode_section is the active serving mode's slice of that identity - in server mode the traffic spec (minus the post-hoc SLO bounds), the warmup protocol, and the inter-level cooldown; in offline mode the warmup block - so a rate or warmup sweep produces distinct hashes while two runs differing only in SLO bounds deduplicate together.

Sections:

Top-Level Fields

FieldTypeDefaultDescription
taskTaskConfig(see section)Task configuration: model, dataset, workload shape
engineEngine(see section)Inference engine
serving_mode'offline''server'(required)
measurementMeasurementConfig(see section)Measurement methodology: baseline, energy sampling (mode-invariant)
sampling_preset'deterministic''standard''creative'
transformersTransformersSectionNonenull
vllmConfigNonenull
tensorrtConfigNonenull
serverServerSectionNonenull
offlineOfflineSectionNonenull
passthrough_kwargsdictNonenull

Baseline (baseline:)

FieldTypeDefaultDescription
enabledbooleantrueEnable baseline power measurement
duration_secondsnumber30.0Baseline measurement duration in seconds
strategy'cached''validated''fresh'
cache_ttl_secondsnumber7200.0How long a cached baseline remains valid before re-measurement, in seconds. Only used with strategy='cached' or 'validated'.
validation_intervalinteger5Re-validate baseline every N experiments. Only used with strategy='validated'.
drift_thresholdnumber0.1Power drift threshold (fraction) to trigger re-measurement. Only used with strategy='validated'.

Offline Mode (offline:)

FieldTypeDefaultDescription
warmupWarmupConfig(see section)Offline warmup phase configuration (prompt-loop convergence + thermal floor).

Offline Warmup (offline.warmup:)

FieldTypeDefaultDescription
enabledbooleantrueEnable warmup phase
n_promptsinteger5Number of full-length warmup prompts in fixed mode
thermal_floor_secondsnumber60.0Minimum seconds to wait after warmup before measuring (thermal stabilisation). Minimum 30s enforced.
convergence_detectionbooleanfalseEnable CV-based adaptive convergence (governed by min_prompts, max_prompts, cv_threshold, window_size)
cv_thresholdnumber0.05CV target for convergence (only used when convergence_detection=True)
max_promptsinteger20Maximum warmup prompts when CV mode is on (safety cap)
window_sizeinteger3Sliding window size for CV calculation (3 balances responsiveness and stability)
min_promptsinteger5Minimum prompts before checking convergence (warm start)

Server Mode (server:)

FieldTypeDefaultDescription
trafficTrafficConfig(see section)Online-serving traffic specification (rate, arrival, window, concurrency, slo).
warmupServerWarmupConfig(see section)Server warmup protocol (convergence-composite gate by default, fixed-duration opt-out). A declared measurement-protocol knob, so it joins the config identity in both hash families (projected into the mode_section).
cooldown_secondsnumber0.0Inter-level cooldown in seconds: idle pause the window manager applies AFTER a rate level closes and BEFORE the next level in a rate sweep. Default 0 (no pause). A declared measurement-protocol knob, so it joins the config identity in both hash families (it is projected into the resolved/observed mode_section).

Server Warmup (server.warmup:)

FieldTypeDefaultDescription
mode'composite''fixed'composite
timeout_secondsnumber900.0Composite-mode failsafe: hard upper bound on convergence gating. At the timeout the harness proceeds and stamps convergence: timed_out in the result (never hangs, never silently passes). Ignored in fixed mode.
duration_secondsnumber300.0Fixed-mode warmup duration in seconds (the floor rule default). 60s is a citable convenience floor, not a thermal-equilibrium claim; 0 skips warmup traffic entirely. Ignored in composite mode.

Server Traffic (server.traffic:)

FieldTypeDefaultDescription
ratenumber(required)Request arrival rate in requests per second (scalar). A rate sweep is written as a study-level list axis (server.traffic.rate: [2, 10]) and expanded to independent per-window configs before hashing.
arrival'poisson''gamma'poisson
burstinessnumberNonenull
window_secondsnumberNonenull
window_requestsintegerNonenull
ramp_exclusion_secondsnumber30.0Pre-stable ramp excluded from the measured span, in seconds (an absolute duration; the default is grounded in the minimum-window-duration study). The measured span STARTS this many seconds after load begins and is excluded PROSPECTIVELY (never trimmed retroactively). 0 disables ramp exclusion. A measurement-methodology knob, so it joins the config identity like the other traffic fields (only slo is excluded).
concurrency_capintegerNonenull
sloSloConfigNonenull
seedintegerNonenull

Server Traffic SLO (server.traffic.slo:)

FieldTypeDefaultDescription
ttft_msnumberNonenull
tpot_msnumberNonenull
percentilenumber0.99Tail quantile both ttft_ms and tpot_ms are evaluated at (shared). Default 0.99.

Transformers Engine (transformers:)

FieldTypeDefaultDescription
engine_paramsEngineParamsNonenull
sampling_paramsSamplingParamsNonenull
llem_executionTransformersLlemExecutionNonenull

Transformers Engine Params (transformers.engine_params:)

FieldTypeDefaultDescription
dtypeanyNonenull
attn_implementationanyNonenull
load_in_4bitanyNonenull
load_in_8bitanyNonenull
bnb_4bit_compute_dtypeanyNonenull
bnb_4bit_quant_typeanyNonenull
bnb_4bit_use_double_quantanyNonenull
use_cachebooleanNonenull
cache_implementationstringNonenull
num_beamsintegerNonenull
early_stoppingbooleanstringNone
length_penaltynumberNonenull
no_repeat_ngram_sizeintegerNonenull
prompt_lookup_num_tokensintegerNonenull
device_mapanyNonenull
max_memoryanyNonenull
low_cpu_mem_usageanyNonenull
tp_plananyNonenull
tp_sizeanyNonenull

Transformers Sampling Params (transformers.sampling_params:)

FieldTypeDefaultDescription
temperaturenumberNonenull
do_samplebooleanNonenull
top_kintegerNonenull
top_pnumberNonenull
repetition_penaltynumberNonenull
min_pnumberNonenull
min_new_tokensintegerNonenull

Transformers Execution Knobs (transformers.llem_execution:)

FieldTypeDefaultDescription
batch_sizeintegerNonenull
torch_compilebooleanNonenull
torch_compile_modestringNonenull
torch_compile_backendstringNonenull
allow_tf32booleanNonenull
autocast_enabledbooleanNonenull
autocast_dtype'float16''bfloat16'None

vLLM Engine (vllm:)

FieldTypeDefaultDescription
engine_paramsEngineParamsNonenull
sampling_paramsSamplingParamsNonenull

vLLM Engine Params (vllm.engine_params:)

FieldTypeDefaultDescription
dtype'auto''half''float16'
gpu_memory_utilizationnumberNone0.9
cpu_offload_gbnumberNone0
block_sizeintegerNonenull
kv_cache_dtype'auto''float16''bfloat16'
enforce_eagerbooleanNonefalse
enable_chunked_prefillbooleanNonenull
max_num_seqsintegerNonenull
max_num_batched_tokensintegerNonenull
max_model_lenintegerNonenull
tensor_parallel_sizeintegerNone1
pipeline_parallel_sizeintegerNone1
distributed_executor_backendanyNonenull
enable_prefix_cachingbooleanNonenull
quantizationanyNonenull
speculative_configSpeculativeConfigNonenull
offload_group_sizeintegerNone0
offload_num_in_groupintegerNone1
offload_prefetch_stepintegerNone1
offload_paramsanyNone[]
disable_custom_all_reducebooleanNonefalse
kv_cache_memory_bytesintegerNonenull
compilation_configCompilationConfigNonenull
attentionanyNonenull
beam_searchanyNonenull

vLLM Sampling Params (vllm.sampling_params:)

FieldTypeDefaultDescription
temperaturenumberNone1.0
top_kintegerNone0
top_pnumberNone1.0
repetition_penaltynumberNone1.0
min_pnumberNone0.0
min_tokensintegerNone0
presence_penaltynumberNone0.0
frequency_penaltynumberNone0.0
ignore_eosbooleanNonefalse
nintegerNone1

TensorRT-LLM Engine (tensorrt:)

FieldTypeDefaultDescription
engine_paramsEngineParamsNonenull
sampling_paramsSamplingParamsNonenull

TensorRT-LLM Engine Params (tensorrt.engine_params:)

FieldTypeDefaultDescription
max_batch_sizeintegerNonenull
tensor_parallel_sizeintegerNone1
pipeline_parallel_sizeintegerNone1
max_input_lenintegerNonenull
max_seq_lenintegerNonenull
max_num_tokensintegerNone8192
dtypestringNoneauto
fast_buildbooleanNonefalse
backend'pytorch''trt'None
quant_configanyNonenull
kv_cache_configanyNonenull
scheduler_configanyNonenull

TensorRT-LLM Sampling Params (tensorrt.sampling_params:)

FieldTypeDefaultDescription
temperaturenumberNonenull
top_kintegerNonenull
top_pnumberNonenull
repetition_penaltynumberNonenull
min_pnumberNonenull
min_tokensintegerNonenull
nintegerNone1
ignore_eosbooleanNonefalse

Sweep-Axis Range Shorthands

An independent sweep axis (sweep: entry mapping to a list of scalars) may be written as one of three compact range shorthands instead of an explicit list. Each expands to a plain list at load time, so the two forms are interchangeable.

ShorthandMeaningExampleExpands to
{min: a, max: b, num: n}n evenly spaced values, endpoints inclusive{min: 0, max: 8, num: 5}[0, 2, 4, 6, 8]
{log: {min: a, max: b, num: n}}n log-spaced values (min > 0), endpoints inclusive{log: {min: 1, max: 100, num: 3}}[1, 10, 100]
{pow2: {min: a, max: b}}ascending powers of two within [a, b]{pow2: {min: 4, max: 32}}[4, 8, 16, 32]

Values stay integers when all bounds are integers and every produced value is integral; otherwise they are floats (rounded to kill binary-float noise). A mapping that matches none of these shapes is rejected at load time. To sweep a literal mapping value, set it in the base config or use a group entry (list of dicts).