Skip to content

tune(sm90): refine small-M indexed MoE residency with work guards - #143

Open
Andrew88Lin wants to merge 3 commits into
vllm-project:mainfrom
Andrew88Lin:users/ac/sm90-a8-indexed-upstream-20261014
Open

Andrew88Lin wants to merge 3 commits into
vllm-project:mainfrom
Andrew88Lin:users/ac/sm90-a8-indexed-upstream-20261014

Conversation

@Andrew88Lin

@Andrew88Lin Andrew88Lin commented Oct 14, 2026 •

Copy link
Copy Markdown

Summary

Refine small-M W4A8 indexed MoE scheduling on SM90:

  • Cap FP32 grouped-input-scale M proposals at 64.
  • Allow a third CTA only with two full work waves; long reductions also require at least 25% estimated tile filling.
  • Keep sparse workloads on main's schedules. One-/two-token W2 now uses main's exact configuration and cubin.

Only humming/tune/sm90_policies.py changes; no CUDA or test changes.

Performance

H200 vs main f921223, FP8 g128 x MXFP4 g32, 384 experts/top-k 6, unpacked-K.
W13: N1280/K5120; W2: N5120/K640.

GEMM Input tokens Hot speedup Cold speedup
W13 128 1.061-1.073x 1.061-1.069x
W13 512 1.103-1.116x 1.087-1.102x
W2 4/8/16/32/64/128 1.119-1.201x 1.084-1.190x

Ranges span uniform/skew routing and independent runs. Large-M schedules are unchanged; no end-to-end gain is claimed.

Full benchmark, confidence intervals and CSV.

Validation

  • 68 workload points, 52 independently repeated; 240 full-output checks passed.
  • 123 tests passed, 134 skipped, including 27 temporary boundary checks not included in the PR.
  • Ruff checks passed. No material regression observed within the measured H200 matrix.

Port the H200 A8 indexed MoE policy from
andrewchen_microsoft/humming#2 to the current upstream candidate framework.
Apply the measured CTA bounds before routed-wave selection, preserve sparse
grid and specialized prefill behavior, and add regression coverage.

Signed-off-by: Andrew Chen <andrewchen@microsoft.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

We don't need to add those tests.

@Andrew88Lin Andrew88Lin Oct 15, 2026 •

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

Removed the added tests in 73e928d; the PR only changes the policy file.

Remove the test additions as requested in review. Preserve all existing tests and leave the optimization policy unchanged.

Signed-off-by: Andrew Chen <andrewchen@microsoft.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@jinzhen-lin

Copy link
Copy Markdown
Collaborator

The speedup in your introduction are based on a comparison with version 0.1.15. However, Humming has made several optimizations for H200 over the past few months. Could you provide the full benchmark results comparing against the latest main branch?

@Andrew88Lin

Andrew88Lin commented Oct 15, 2026 •

Copy link
Copy Markdown
Author

Superseded by the guarded update 07aee2e. Current results and validation are summarized in the PR description.

Require enough output waves before adding a third CTA. Preserve two-CTA schedules for sparse long reductions using existing pipeline and padded-work estimates. Keep the guard independent of GPU names, models and exact token counts.

Signed-off-by: Andrew Chen <andrewchen@microsoft.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@Andrew88Lin Andrew88Lin changed the title tune(sm90): bound indexed grouped-scale tiles and CTA residency tune(sm90): refine small-M indexed MoE residency with work guards Oct 15, 2026
@Andrew88Lin

Copy link
Copy Markdown
Author

The speedup in your introduction are based on a comparison with version 0.1.15. However, Humming has made several optimizations for H200 over the past few months. Could you provide the full benchmark results comparing against the latest main branch?

updated, could you help to review it when you get a chance? @jinzhen-lin

This branch has not been deployed

No deployments
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.

2 participants