revert(moe): revert #3738 SM90 CUTLASS MoE backend (+ dependents #4025, #4080) on release-v0.6.17 - #4411
Conversation
…e helpers (flashinfer-ai#4025)" This reverts commit c83607a.
…S MoE backend for SM90 (flashinfer-ai#3738)" This reverts commit 5823159. Reverted to unblock the 0.6.17 release after a critical crash was reported from a vLLM user and escaped QA. The proper fix is expected in 0.6.18; the same revert is being applied to release-v0.6.16 separately. Conflicts resolved so that later work on this branch survives intact -- this reverts flashinfer-ai#3738 only, not the features layered on top of it: * flashinfer/fused_moe/core.py: kept profile_ids / workspace_buffer and the CUDA-device guard (flashinfer-ai#4057 and follow-ups), dropped only use_wfp4afp8_humming and its plumbing. * flashinfer/fused_moe/__init__.py: kept cutlass_fused_moe_workspace_size (flashinfer-ai#4057) and restored the two interleave_moe_*_for_sm90_mixed_gemm exports, which flashinfer-ai#3738 had moved from core to prepare. * flashinfer/fused_moe/prepare.py: dropped the SM90 Humming docstring and the now-unused functools/struct imports; kept the TrtllmBf16Config wording added after flashinfer-ai#3738. Verified: * no `wfp4afp8_humming` / `Humming` references remain anywhere in flashinfer/, csrc/ or tests/; * every cutlass_kernels/ and cutlass_backend/ source matches the pre-flashinfer-ai#3738 parent except two files whose residual differences are fully attributable to later commits -- the binding to flashinfer-ai#4057 and one std::remove_reference_t line in moe_gemm_tma_ws_launcher.inl to the SM107 work (flashinfer-ai#4122/flashinfer-ai#4280) -- both of which correctly survive; * every relative import in fused_moe/__init__.py resolves; * pre-commit (mypy, ruff check, ruff format) passes. NOT verified: nothing was executed on a GPU -- no CUDA toolchain or torch on the machine this was prepared on. CI is the gate. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
✅ Silicon validation — the revert fixes the reported crashValidated by A/B contrast on B300 / sm103 ( Same node, same container, same editable install — only the commit differs:
Baseline reproduces the reported signature exactlyDies at the first tactic of With the revert, autotuning completesBoth GEMMs sweep all 21 tactics and the call returns. The Method notes
This supersedes the "no GPU validation" caveat in the PR description, which I have updated. Independent corroborationCross-checked against the parallel 0.6.16 revert ( 🤖 Generated with Claude Code |
Cross-validation against the parallel 0.6.16 revert — closing summaryThe equivalent revert for Agreed — the C++ half is corroborated. The reverted Diverged — all in the Python layer, all now resolved or assigned:
On the last point, for the record of why this PR keeps #4057: it shipped in v0.6.16, v0.6.16.post1, v0.6.16.post2 and every 0.6.17 rc, and is exported in Combined with the silicon result above (baseline 🤖 Generated with Claude Code |
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
📌 Description
Reverts #3738 (
5823159c) and its two dependents onrelease-v0.6.17, to unblock the release after a critical crash reported by a vLLM user that escaped QA.This is a release-unblocking revert, not a judgement on the feature. The proper fix is expected in 0.6.18. The same revert is being applied to
release-v0.6.16separately by another engineer — note #3738 shipped in v0.6.16 and v0.6.16.post2, so 0.6.17 is not the first release carrying it.Why three commits
#3738 cannot be reverted alone — two later commits are built on it:
2475121fgetProfilerWorkspacesin code #3738 reworked (thequant_1 && … && quant_6assert)c83607a9core→prepare5823159cReverted newest-first. #4080 and #4025 reverted with zero conflicts; #3738 conflicted in 3 files.
Conflict resolution — later work is preserved
This reverts #3738 only, not the features layered on top of it:
core.py— keptprofile_ids/workspace_bufferand the CUDA-device guard (feat(moe): support caller-owned CUTLASS MoE workspace #4057 and follow-ups); dropped onlyuse_wfp4afp8_hummingand its plumbing.__init__.py— keptcutlass_fused_moe_workspace_size(feat(moe): support caller-owned CUTLASS MoE workspace #4057); restored the twointerleave_moe_*_for_sm90_mixed_gemmexports, which move back tocoreonce perf: optimize MXFP4xBF16 & INT4xFP8 and add MXFP4xFP8 CUTLASS MoE backend for SM90 #3738 is gone.prepare.py— dropped the SM90 Humming docstring and the then-unusedfunctools/structimports; kept theTrtllmBf16Configwording added after perf: optimize MXFP4xBF16 & INT4xFP8 and add MXFP4xFP8 CUTLASS MoE backend for SM90 #3738.Net: 47 files, +1701 / -10557 — a near-exact mirror of #3738's +10546 / -1704, the delta being the later features deliberately kept.
✅ Verification
wfp4afp8_humming/Hummingreference remains anywhere inflashinfer/,csrc/ortests/.cutlass_kernels/andcutlass_backend/source matches the pre-perf: optimize MXFP4xBF16 & INT4xFP8 and add MXFP4xFP8 CUTLASS MoE backend for SM90 #3738 parent except two files, and both residuals are fully attributable to later commits that correctly survive:flashinfer_cutlass_fused_moe_binding.cu→ feat(moe): support caller-owned CUTLASS MoE workspace #4057 (caller-owned workspace; 16 workspace-API references retained)std::remove_reference_t<…>line inmoe_gemm_tma_ws_launcher.inl→ SM107 work (Adds SM107 support #4122 / SM 107 Reland + Merge Back from v0.6.16 Release Branch #4280)fused_moe/__init__.pyresolves (AST-checked).py_compilepasses on all touched Python files.pre-commit(clang-format, mypy, ruff check, ruff format) passes.✅ GPU-validated — see the validation comment. A/B contrast on B300 / sm103 with the reporter's repro, same node / container / install, only the commit differing:
4e1206b3(branch head, unreverted)FAIL_IN_AUTOTUNE— dies at gemm1 tactic 1/2157d74695(this PR)PASS— gemm1 21/21, gemm2 21/21The
without autotunecontrol passes on both builds, isolating the autotuned path.Still not run: the MoE unit-test suites. CI remains the gate for regression coverage; this validates the specific reported crash only.
Reviewer notes
core.pyconflict resolutions, since that is where perf: optimize MXFP4xBF16 & INT4xFP8 and add MXFP4xFP8 CUTLASS MoE backend for SM90 #3738 and feat(moe): support caller-owned CUTLASS MoE workspace #4057 interleaved in the same parameter lists.🤖 Generated with Claude Code