DynoSim Replay CLI Reference
aisimulate predict --stack dynamo evaluates one concrete workload and deployment configuration
through the Dynamo simulation stack. AISimulate owns the traffic and engine schema. The ai-dynamo
package supplies the Dynamo runner and the optional router and planner configuration adapters.
For an end-to-end workflow, see Run a DynoSim Simulation. To search configuration domains, see Sweep DynoSim Configurations.
The former Replay online mode has no replacement in the unified AISimulate CLI yet. aisimulate predict and aisimulate recommend are offline-only. The separate python3 -m dynamo.mocker
command remains available for launching live workers but does not provide replay orchestration.
Command
YAML prediction configuration. Prediction files contain concrete values and reject search
domains, presets, optimization, and optimizer.
Execution stack. Set this option to dynamo to load the Dynamo runner and the Router and Planner
adapters registered by ai-dynamo.
Override a schema-valid configuration path after loading the YAML file. Repeat the option for multiple overrides. Values are parsed as YAML, and later assignments win. Sequence indexes are not supported.
Directory for prediction.json and optional per-request output.
Replace known AISimulate output files in an existing nonempty output directory. Unrelated files are preserved.
Standard-output format.
Allowed values: table jsonWrite one record per request to requests.jsonl.
Configuration Sections
The YAML document uses these top-level sections:
Unknown fields are rejected. predict accepts only concrete values. Use aisimulate recommend for
choices, range, or preset domains.
Dynamo Prediction Example
Traffic Rules
traffic contains source, load, and stop mappings.
- Omitting the entire section creates 100 independent synthetic requests at concurrency 10, with 1,024 input tokens and 128 output tokens per request.
source.type: syntheticcreates independent requests withinput_tokensandoutput_tokens.source.type: synthetic-sessioncreates ordered multi-turn sessions.source.type: tracereads one or more paths. Supported formats includemooncake,mooncake-delta,agentic_mooncake,applied_compute_agentic, anddynamo.load.type: concurrencykeeps a fixed number of requests or sessions active.load.type: constant_rateschedules evenly spaced arrivals fromrequests_per_secondorsessions_per_second.load.type: poissonuses the matching rate with exponential inter-arrival times and an optionalseed, which defaults to 42.load.type: trace_timestampspreserves trace timing and accepts a positivespeedup.stop.requestsapplies to independent requests.stop.sessionsapplies to session sources.stop.requests_per_load_unitandstop.sessions_per_load_unitderive the count from the concrete concurrency or arrival rate.stop.max_virtual_time_secondsis a soft virtual-time cutoff. Requests admitted before the cutoff may finish afterward.
For a Dynamo request trace, omit traffic.source.block_size; AISimulate derives it from the trace
records and rejects mixed block sizes. Dynamo format accepts multiple trace shards. Other formats
accept exactly one path, and their block size defaults to 512 when omitted.
mooncake-delta and agentic_mooncake require aggregated engine mode.
agentic_mooncake also requires trace_timestamps and rejects the virtual-time cutoff.
applied_compute_agentic requires concurrency load.
With the Dynamo stack, omit planner or set planner.policy: disabled for mooncake-delta,
agentic_mooncake, and Dynamo traces that carry agent_context records.
Engine and Adapter Rules
engine.mode: aggregatedrequiresengine.workers.aggregated.engine.mode: disaggregatedrequiresengine.workers.prefill,engine.workers.decode, andengine.kv_transfer.aisimulate predictandaisimulate recommendcurrently support TensorRT-LLM only in aggregated mode. This is an offline simulation limitation; Dynamo runtime deployments support TensorRT-LLM disaggregated serving.- Each
parallelismmapping is concrete and containsreplicas,tensor,pipeline,attention_data,moe_tensor, andmoe_expert. engine.context_lengthdefaults tomax, which AISimulate resolves from the model’s Hugging Face configuration. Default KV block sizes are 64 for vLLM, 1 for SGLang, and 32 for TensorRT-LLM.- Scheduler defaults are 8,192 batched tokens for every role and 256 sequences for aggregated and decode workers. Prefill workers default to one sequence.
timing.type: defaultuses the AIConfigurator forward-pass model shipped in theaisimulatewheel.fixedrequires bothprefill_msanddecode_ms;polynomialselects the built-in polynomial model.router.policy: kv_routerrequires more than one routable worker. Setrouter.prefill_load_model.typetononeoraic.planner.policyisdisabledorenabled. When enabled,planner.max_num_gpuslimits the Planner runtime budget; it is distinct from recommendation candidate constraints.evaluation.slaaccepts eithere2e_msalone orttft_msanditl_mstogether. The two forms are mutually exclusive.
Overrides
--set accepts dot-separated, schema-valid paths. The field does not need to be present in the
input YAML:
An override cannot create an unknown field. Override a complete mapping when changing a tagged
configuration shape, such as traffic.source.
Output
The output directory contains:
prediction.json preserves the Dynamo runner report, including summary metrics and available
Planner diagnostics. requests.jsonl is present only with --capture-per-request. --format
changes standard output but not durable files.
The command exits with 0 on success, 1 for execution failure, 2 for CLI or configuration
errors, and 130 when interrupted.