Configuration
Start with the complete quick-start example, then change the sections you need. The YAML reference contains the full configuration.
| Section | Purpose |
|---|---|
server |
Local model and fixed vLLM flags, or a native vLLM YAML file |
tune |
vLLM flags to search |
env / tune_env |
Fixed / tunable server environment variables |
benchmark |
Backend, workloads, repeats, and request-failure policy |
optimization |
Objective, sampler, budget, and performance targets |
execution |
Process controls and optional parallel workers |
analysis |
Drift checks and optional fresh finalist validation |
logging / timeouts |
Verbosity and startup/benchmark limits |
Model and server
server.model points to an existing local directory; models are not downloaded.
Other server entries become fixed vLLM flags. Use tune for values to vary:
server:
model: /models/qwen
gpu-memory-utilization: 0.8
enforce-eager: true
tune:
max-num-seqs:
values: [8, 16, 32]
env:
CUDA_VISIBLE_DEVICES: "0"
To reuse native vLLM YAML, set server.config: ./vllm-config.yaml.
That path is relative to the experiment file. An inline server.model
overrides the native model; fixed flags, tuned values, and runtime assignments
override corresponding native settings through command-line arguments.
See native configuration and LMCache.
Unknown vLLM flags are allowed so new upstream options remain usable. Hyphens and underscores identify the same flag; defining both spellings in one section is rejected. Tuned settings override fixed aliases. Environment names are case-sensitive.
Fixed value rendering
Scalars emit flag/value pairs; lists emit one flag followed by all values.
true emits a flag, false its --no- form, and null omits it.
See the server reference for examples.
Tunable arguments and environment
Use values: [...] for strings, numbers, booleans, or null.
Numeric searches may instead use inclusive min, max, and step.
tune_env uses the same forms; environment values are converted to strings.
Quote numeric-looking fixed values such as "0".
Parallel local trials
Execution is sequential by default. Parallel trials require explicit, non-overlapping GPU workers and a port range. The CLI assigns each worker's GPU visibility and port; do not configure these yourself in parallel mode. Each trial's tensor-parallel size must fit a worker.
Sequential runs use port 8000 unless overridden by server.port or tuning.
Fixed server settings run first as the baseline unless disabled.
Benchmark runs
| Backend | Workload fields | Guide |
|---|---|---|
| GuideLLM (default) | profile, constraints, data |
Benchmarking |
| vLLM Bench Serve | args |
Complete example |
Every named run tests the same server configuration. The default is four
measured repeats, all required for ranking, with no discarded warmups.
Repeats and errors explains min_repeats,
warmups, adaptive budgets, and fresh finalist validation.
Benchmark-run constraints control GuideLLM execution, such as request counts.
To set latency or throughput limits for optimization, use
optimization.constraints.
Request failure policy
The default benchmark.max_failure_percentage: 0 excludes workloads with errored
or incomplete requests from ranking. Set a percentage from 0 to 100 to allow
up to that inclusive limit,
or accept_any_request_failures: true to ignore the percentage.
At least one successful request and a usable metric are always required;
request-count runs must also supply their expected total.
See repeats and errors.
Logging and timeouts
Timeouts accept numeric seconds or durations such as 30s, 15m, and 1h.
Omitted benchmark timeouts are derived from GuideLLM duration limits, use a
one-hour cap for request-only GuideLLM runs, or default to 180 seconds for
vLLM Bench Serve. The literal auto is invalid.
Use --verbose or logging.level: DEBUG to stream logs. Per-trial logs are
always saved. Failed-request details, when available, are saved beside raw JSON
as failed_requests.json.
After benchmarks, execution.drain_grace allows vLLM to become idle (default
15 seconds, must be positive). Missing request metrics or a busy server after
that window fails the trial. Other process controls are in the
execution reference.
vllm-opt validate -c experiment.yaml checks configuration and constructed
commands before a run is created. GPU capacity, model weights, and upstream
flag support are checked only by actual execution.