Modeled features#
One-pager
What: the map of what InferaSim actually models, grouped by concern, with the flag that controls each. Why: the task pages show the common paths; this page is so nothing is invisible. Cost: none — almost everything here defaults to the engine’s or the model’s own behaviour.
inferasim inference --help is the authoritative list (133 flags). This page
groups them by what question they answer, so you can find the lever without
reading all of it. For what is deliberately not modeled, see
Boundaries and verification.
Most of these only need setting when you are modelling a deployment that differs from the default. The ones that change an answer most often are marked ⚑.
Two projections#
--inference-mode {performance,memory,both} selects which runs; the default is
both.
Projection |
Reports |
|---|---|
|
TTFT, ITL/TPOT, throughput, interactivity, step latency, comm breakdown |
|
weights, KV cache, activation working set, total per-GPU HBM, and whether the recipe fits |
Memory is analytical at every parallelism and is never calibrated by a measurement — see Memory is outside the calibration loop.
Serving model#
Flag |
Meaning |
|---|---|
|
|
If you are comparing against a number from a real server, you want
continuous. static is for isolating decode from interference.
Model architecture and attention#
Feature |
Flags |
|---|---|
Data-parallel attention (MLA) ⚑ |
|
Sliding-window / local attention |
|
Native sparse attention |
|
Attention kernel library |
|
KV sizing horizon |
|
Parallelism#
Feature |
Flags |
|---|---|
Core shape ⚑ |
|
Attention DP |
|
Multi-node target |
|
Pipeline scheduling |
|
Precision#
Four independent dtype axes, because real deployments mix them:
Flag |
What it governs |
|---|---|
|
resident weight precision — sizes the whole checkpoint |
|
KV-cache precision, so it sets KV footprint and therefore concurrency |
|
the non-expert linears: attention projections and the dense MLP |
|
expert grouped-GEMM compute precision |
|
precision activations are cast to before each low-precision GEMM (a memory-bound cast cost) |
Sizing a 4-bit checkpoint at 4 bits while streaming it at 8 is the classic
error here, which is why the linear and expert precisions are separable from
--weight-dtype.
Mixture of experts#
Flag |
Meaning |
|---|---|
|
routing imbalance: hottest-rank / mean token load. |
|
extra replicated expert slots (EPLB) that reduce realized imbalance |
|
Zipf exponent of the router’s popularity law, which sets how many distinct experts a decode step touches — the weight-bandwidth term |
|
measured router coverage as JSON: how many distinct experts the real router reaches per step, versus what independent per-token routing predicts |
Speculative decoding#
Flag |
Meaning |
|---|---|
|
draft tokens proposed per verify step ( |
|
expected per-token acceptance in [0,1] |
|
draft forward cost per proposed token, as a fraction of one target decode step. Default |
Speculation is a regime-defining parameter, so a recipe that turns it on needs its own anchor — see Regimes.
Collectives and communication#
Flag |
Meaning |
|---|---|
|
|
|
force |
|
force |
|
fraction of collective time hidden behind compute, [0,1], default |
|
time multipliers (<1 = a fused or overlapped speedup) |
|
ROCm quick-reduce: low-latency quantized all-reduce for small messages |
|
hides part of the TP all-reduce behind the norm |
|
DeepEP async all-to-all overlapped with compute |
|
SyncFree MoE stage 1–3 (fused router, +DeepEP+grouped, +fused act); auto-enables DeepEP |
The report’s exposed-communication breakdown is what tells you whether any of this is worth reaching for.
Scheduler, graphs and step overheads#
Flag |
Meaning |
|---|---|
|
scheduler per-step token budget; oversized steps split |
|
per-request per-step prefill allowance, which decides how many steps a prompt takes |
|
capture preset; sets per-step overhead and mixed-batch penalty unless those are given explicitly |
|
extra cost fraction for mixed prefill+decode steps |
|
admission granularity in decode steps — how long a finished prefill waits to join a decode batch |
|
fixed per-step host/launch overhead; CUDA graphs reduce it |
|
the launch-bound decode floor in pure-simulate mode; disabled by graph capture |
|
minimum time a kernel holds the device regardless of data touched — not cancelled by graph capture |
|
fused RMSNorm / RoPE / quant / KV-store kernels that cut per-step launch overhead |
|
GEMM simulation backend, used only in |
Cudagraph mode is regime-defining. So is the attention backend.
KV cache and memory#
Flag |
Meaning |
|---|---|
|
per-GPU HBM; bounds what fits and the max concurrency |
|
fraction of HBM the engine may claim (vLLM |
|
paged-KV page size in tokens; context rounds up to whole blocks, inflating KV bytes |
|
declared prefix reuse on the analytical path |
|
host DRAM per GPU as a second KV tier (TRT-LLM native / SGLang HiCache |
|
host↔device bandwidth for that tier (PCIe 5 x16 ≈ 64; a coherent host link ≈ 900) |
The offload tier is priced analytically as a bounded allowance plus its transfer bandwidth. The DES has one device-resident tier — see Boundaries.
Host-side costs on the latency path#
These exist because a client-measured TTFT is not the forward pass. Quoting a measured number against a projection that omits them is how a model reads systematically early.
Flag |
Meaning |
|---|---|
|
fixed per-request host cost on the TTFT path: accept, parse, admit, prefix lookup, KV allocation, stream open |
|
per-prompt-token server-side tokenization, inside the TTFT clock |
|
per-output-token detokenize + stream, added to ITL/TPOT and e2e but not throughput |
|
output tokens buffered per flush — the client’s first token only arrives after the first flush |
|
a measured prefill rate and the two prompt lengths it was fit over. A rate without its span is meaningless, so the span is required alongside it. |
|
logits post-processing cost; top-k adds a partial sort, top-p a threshold+renormalize, temperature a fused scale |
Discrete-event simulator#
Beyond the common flags on Simulation runs and Fleet and routing:
Flag |
Meaning |
|---|---|
|
the engine does not co-schedule prefill with decode: a prefill batch carries one request and the whole token budget |
|
cap on new sequences entering one prefill step ( |
|
total KV token-slot pool; admission reserves full ISL+OSL per request, so shortage head-of-line blocks |
|
legacy alias for |
|
fraction of requests, in completion order, excluded from the reported distribution (default |
|
RNG seed for arrivals and acceptance sampling (default |
|
write per-step batch-composition records and a packing summary to a JSON path |
--des-dump-steps is the one to use when you disbelieve a latency number: it
shows what was in every step.
Disaggregation#
Each pool takes its own full shape, not just its own TP:
Flag |
Meaning |
|---|---|
|
enable separate prefill/decode pools |
|
prefill pool shape |
|
decode pool shape |
|
per-pool attention-DP degree, since deployments commonly run DP attention on one pool only |
|
KV-transfer engine preset (sets link bandwidth and latency) |
|
override that preset |
See Disaggregated serving, including what this path does not model.
Calibration#
Flag |
Meaning |
|---|---|
|
|
|
directory of warmup measurements; the closest same-regime anchor calibrates this projection |
|
use one specific anchor artifact |
|
write the anchor artifact |
|
extra artifacts at other |
|
a sharded artifact whose measured decode step defines the hardware latency floor |
|
how many GPUs the warmup measures on |
|
what to serve while measuring, under which engine, and how many layers to chain per timing stack |
|
override the compute clock from the hardware profile |
Cost#
Flag |
Meaning |
|---|---|
|
prices projected throughput as cost per million tokens, charging the whole replica |
Workload shape#
Set on every run, and used in the examples throughout these pages:
Flag |
Meaning |
|---|---|
|
the experiment YAML |
|
prompt and generation lengths in tokens |
|
sequences per decode forward — not a cap on serving concurrency, which is |
|
resident sequences, i.e. the operating point |
Accepted aliases#
Alias |
Canonical |
|---|---|
|
|
|
|
|
|
|
|
|
|
--profile-only and --save-profiling exist but have suppressed help; they are
internal profiling plumbing rather than modelling knobs.
Next steps#
Vary any of these automatically instead of by hand: Tuning agent.
What none of them can fix: Boundaries and verification.