Add no_combine support to cutlass_moe_fp4 (#25688)

Co-authored-by: Hanming Lu <69857889+hanming-lu@users.noreply.github.com>
This commit is contained in:
Lianmin Zheng
2026-05-18 15:59:55 -07:00
committed by GitHub
co-authored by Hanming Lu
parent 878e6b8886
commit 745abd6cc0
2 changed files with 4 additions and 0 deletions
@@ -359,6 +359,7 @@ def cutlass_moe_fp4(
topk_ids: torch.Tensor,
params: CutlassMoEParams,
apply_router_weight_on_input: bool = False,
no_combine: bool = False,
):
"""
MoE implementation for FP4 Inputs
@@ -492,6 +493,8 @@ def cutlass_moe_fp4(
del int_fp4, int_blockscale
c2 = shuffle_rows(c2, c_map, (m_a * num_topk, params.hidden_size))
c2 = c2.view(m_a, num_topk, params.hidden_size)
if no_combine:
return c2.to(out_dtype)
if not apply_router_weight_on_input:
c2 = c2 * topk_weights.view(m_a, num_topk, 1).to(out_dtype)
return c2.sum(dim=1).to(out_dtype)
@@ -2175,6 +2175,7 @@ class ModelOptNvFp4FusedMoEMethod(FusedMoEMethodBase):
topk_ids=topk_ids,
params=layer.cutlass_moe_params,
apply_router_weight_on_input=moe_runner_config.apply_router_weight_on_input,
no_combine=moe_runner_config.no_combine,
).to(x.dtype)
# Scale by routed_scaling_factor is fused into select_experts.
return StandardCombineInput(hidden_states=output)