Skip to content

feat(simulator): expand topology and workload exploration - #272

Merged
jiangkuaixue123 merged 5 commits into
vllm-project:simulatorfrom
ShwStone:simulator
Aug 26, 2026
Merged

feat(simulator): expand topology and workload exploration#272
jiangkuaixue123 merged 5 commits into
vllm-project:simulatorfrom
ShwStone:simulator

Conversation

@ShwStone

Copy link
Copy Markdown
Contributor

Purpose

Extend the experimental DeepSeek-V4-Flash prefill simulator introduced in #269 so AFD and merged deployments can be compared across equal-die topologies, independent batching policies, chunked FIFO waves, and burst-preserving production-like length traces.

This also checks in the normalized analytic profiles and prompt-free MoonConv arrival/length fixtures so a fresh clone can use the WebUI without installing msModeling or downloading prompt token IDs.

Issue

Scope

  • In scope:
    • Simulator-only scheduling, workload, profile, HTTP, and WebUI changes.
    • Independent AFD and merged max-batch/chunk controls and DPLB policies.
    • FIFO wave estimators using token sum or token-square work.
    • Equal-die dynamic topology selection and profile composition/reuse.
    • Canvas/LOD timeline rendering for large event sets.
    • QPS-scaled MoonConv V4 traces that preserve zero-gap bursts.
    • Checked-in 64K analytic profiles for 16/24/32/40/48-die comparisons.
  • Out of scope:
    • Production AFD runtime behavior changes.
    • Decode, KV-transfer, capacity/eviction, EPLB, or real expert skew.
    • GPU/NPU execution or msModeling calibration against hardware.

Implementation Notes

  • The experimental scheduler configuration is intentionally breaking: the shared policy and batch-token fields are replaced by architecture-specific AFD and merged settings.
  • Current-runtime policy models AFD as round-robin on the present async engine path and merged as vLLM queue-aware DPLB.
  • Chunked requests retain FIFO order; unstarted waves are not arbitrarily reordered.
  • AFD DP replication reuses per-DP msModeling points when TP and FFN EP are unchanged. Merged TP/global-EP changes use independently generated profiles.
  • Every comparison validates equal physical die budgets from profile topology metadata.
  • scaled_trace preserves all relative intervals and simultaneous bursts, rescales the complete cycle to the configured mean QPS, and repeats the cycle across long warmup/measurement windows.
  • MoonConv fixtures contain only arrival_time_ms and input_length. Source revision, hashes, ODC-By attribution, and exclusions are documented under simulator/data/README.md.
  • No vLLM checkout, compatibility shim, monkey patch, or plugin runtime class is changed.

Test Plan

  • python -m ruff check simulator
  • python -m unittest discover -s simulator/tests -v
  • Load every checked-in profile and validate its AFD/merged die budget.
  • Start the HTTP server with all profiles and smoke each newly added topology.
  • Replay MoonConv formal_0 at target 4 QPS with 32K chunking.

Test Result

  • Ruff: passed.
  • Simulator unit tests: 47 passed.
  • Profiles: all 9 checked-in JSON bundles loaded; all equal-die checks passed.
  • Dynamic topology API: 6 AFD choices and 8 merged choices returned; all three newly requested pairings completed simulation smoke tests.
  • MoonConv 4-QPS smoke: 284 generated arrivals, including 255 preserved zero-gap arrivals; 249 requests landed in the 60-second measured window. Finite-window offered QPS was 4.15 because burst boundaries are preserved; each complete repeated cycle averages exactly 4 QPS.
  • GPU/NPU E2E: not run because this PR changes only the dependency-free analytic simulator.

Docs Impact

  • Files updated: simulator/README.md, simulator/profiles/README.md, and simulator/data/README.md.
  • The docs cover topology budgets, device/die terminology, scheduler semantics, scaled trace behavior, profile generation/reuse, dataset provenance, and WebUI operation.

Essential PR Checklist
  • Purpose is clear and linked to public context when possible.
  • Scope is bounded.
  • Compatibility with vLLM v0.26.0 is considered.
  • No changes are made to the vLLM source checkout.
  • Plugin-owned classes or explicit dotted class paths are preferred over monkey patches; this PR changes no runtime classes.
  • No compat shim or monkey patch is added.
  • Imports remain CPU-safe; the simulator uses the standard library at runtime.
  • Validation evidence is included, including the GPU/NPU skip reason.
  • Documentation impact is stated.

Preserve Mooncake burst shapes while scaling their mean arrival rate, repeat trace windows across long simulations, and publish prompt-free DeepSeek V4 Flash arrival/length fixtures.

Signed-off-by: ShwStone <HaowenShi@outlook.com>
Add independent AFD and merged batching controls, FIFO wave estimators, runtime-aligned DP policies, topology-derived parallel sizes, equal-die validation, and reusable profile composition.

Signed-off-by: ShwStone <HaowenShi@outlook.com>
Serve independently selectable equal-die AFD and merged profiles, expose built-in scaled traces, and replace the SVG timeline with an indexed Canvas renderer for large simulations.

Signed-off-by: ShwStone <HaowenShi@outlook.com>
Check in the normalized 64K topology matrix and smoke grid so users can launch the simulator without a local msModeling installation; continue ignoring raw Chrome traces.

Signed-off-by: ShwStone <HaowenShi@outlook.com>
Let GitHub collapse checked-in trace CSV and analytic profile JSON while keeping the artifacts directly available to users.

Signed-off-by: ShwStone <HaowenShi@outlook.com>
Copilot AI lite review requested due to automatic review settings August 26, 2026 09:51

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@jiangkuaixue123
jiangkuaixue123 merged commit 1d4338b into vllm-project:simulator Aug 26, 2026
1 check passed
jiangkuaixue123 pushed a commit that referenced this pull request Aug 27, 2026
## Summary

- allow `constant` and `poisson` arrivals to use a timestamped CSV as a
length pool
- default timestamped CSV uploads to continuous `scaled_trace` mode
- document the selection semantics and add regression coverage

Follow-up to #272.

## Validation

- `.venv/bin/python -m ruff check simulator`
- `.venv/bin/python -m unittest discover -s simulator/tests -v` (48
tests)
- live HTTP smoke: MoonConv formal-0 lengths with Poisson arrivals at 4
QPS

Signed-off-by: ShwStone <shwstone@users.noreply.github.com>

Signed-off-by: ShwStone <HaowenShi@outlook.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants