Apply should_use_dp_reduce_scatterv guard to remaining MoE models (follow-up to #23731) (#23732)

Co-authored-by: Byron Hsu <byronhsu@noreply.github.com>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-authored-by: Kangyan-Zhou <zky314343421@gmail.com>
This commit is contained in:
Byron Hsu
2026-04-25 20:36:16 -07:00
committed by GitHub
co-authored by Byron Hsu Claude Opus 4.7 Kangyan-Zhou
parent 71029abd64
commit ba4e9d2ac2
13 changed files with 59 additions and 12 deletions
+2
View File
@@ -58,6 +58,7 @@ from sglang.srt.layers.logits_processor import LogitsProcessor
from sglang.srt.layers.moe import (
get_deepep_mode,
get_moe_a2a_backend,
should_use_dp_reduce_scatterv,
should_use_flashinfer_cutlass_moe_fp4_allgather,
)
from sglang.srt.layers.moe.ep_moe.layer import get_moe_impl_class
@@ -386,6 +387,7 @@ class BailingMoESparseMoeBlock(nn.Module):
and not should_allreduce_fusion
and not use_reduce_scatter
and not should_use_flashinfer_cutlass_moe_fp4_allgather()
and not should_use_dp_reduce_scatterv()
):
final_hidden_states = tensor_model_parallel_all_reduce(final_hidden_states)
return final_hidden_states.view(num_tokens, hidden_size)
@@ -34,6 +34,7 @@ from sglang.srt.layers.linear import (
RowParallelLinear,
)
from sglang.srt.layers.logits_processor import LogitsProcessor
from sglang.srt.layers.moe import should_use_dp_reduce_scatterv
from sglang.srt.layers.moe.ep_moe.layer import DeepEPMoE, get_moe_impl_class
from sglang.srt.layers.moe.fused_moe_triton.layer import FusedMoE
from sglang.srt.layers.moe.topk import TopK
@@ -347,7 +348,12 @@ class BailingMoE(nn.Module):
if self.num_shared_experts > 0:
final_hidden_states = final_hidden_states + shared_output
if self.tp_size > 1 and not use_reduce_scatter and not should_allreduce_fusion:
if (
self.tp_size > 1
and not use_reduce_scatter
and not should_allreduce_fusion
and not should_use_dp_reduce_scatterv()
):
final_hidden_states = tensor_model_parallel_all_reduce(final_hidden_states)
return final_hidden_states
+3
View File
@@ -85,6 +85,7 @@ from sglang.srt.layers.logits_processor import LogitsProcessor
from sglang.srt.layers.moe import (
get_moe_a2a_backend,
get_moe_runner_backend,
should_use_dp_reduce_scatterv,
should_use_flashinfer_cutlass_moe_fp4_allgather,
)
from sglang.srt.layers.moe.ep_moe.layer import get_moe_impl_class
@@ -655,6 +656,7 @@ class DeepseekV2MoE(nn.Module):
and not should_allreduce_fusion
and not use_reduce_scatter
and not should_use_flashinfer_cutlass_moe_fp4_allgather()
and not should_use_dp_reduce_scatterv()
):
final_hidden_states = tensor_model_parallel_all_reduce(final_hidden_states)
return final_hidden_states
@@ -744,6 +746,7 @@ class DeepseekV2MoE(nn.Module):
and not should_allreduce_fusion
and not use_reduce_scatter
and not should_use_flashinfer_cutlass_moe_fp4_allgather()
and not should_use_dp_reduce_scatterv()
):
final_hidden_states = tensor_model_parallel_all_reduce(final_hidden_states)
return final_hidden_states
+6 -2
View File
@@ -47,7 +47,7 @@ from sglang.srt.layers.linear import (
RowParallelLinear,
)
from sglang.srt.layers.logits_processor import LogitsProcessor, LogitsProcessorOutput
from sglang.srt.layers.moe import get_moe_a2a_backend
from sglang.srt.layers.moe import get_moe_a2a_backend, should_use_dp_reduce_scatterv
from sglang.srt.layers.moe.ep_moe.layer import get_moe_impl_class
from sglang.srt.layers.moe.fused_moe_triton import FusedMoE
from sglang.srt.layers.moe.topk import TopK
@@ -300,7 +300,11 @@ class ExaoneMoESparseMoEBlock(nn.Module):
if shared_output is not None:
final_hidden_states = final_hidden_states + shared_output
if self.tp_size > 1 and not use_reduce_scatter:
if (
self.tp_size > 1
and not use_reduce_scatter
and not should_use_dp_reduce_scatterv()
):
final_hidden_states = tensor_model_parallel_all_reduce(final_hidden_states)
return final_hidden_states.view(num_tokens, hidden_dim)
+3
View File
@@ -61,6 +61,7 @@ from sglang.srt.layers.linear import (
from sglang.srt.layers.logits_processor import LogitsProcessor
from sglang.srt.layers.moe import (
get_moe_a2a_backend,
should_use_dp_reduce_scatterv,
should_use_flashinfer_cutlass_moe_fp4_allgather,
)
from sglang.srt.layers.moe.ep_moe.layer import get_moe_impl_class
@@ -598,6 +599,7 @@ class Glm4MoeSparseMoeBlock(nn.Module):
and not should_allreduce_fusion
and not use_reduce_scatter
and not should_use_flashinfer_cutlass_moe_fp4_allgather()
and not should_use_dp_reduce_scatterv()
):
final_hidden_states = tensor_model_parallel_all_reduce(final_hidden_states)
return final_hidden_states
@@ -632,6 +634,7 @@ class Glm4MoeSparseMoeBlock(nn.Module):
and not should_allreduce_fusion
and not use_reduce_scatter
and not should_use_flashinfer_cutlass_moe_fp4_allgather()
and not should_use_dp_reduce_scatterv()
):
final_hidden_states = tensor_model_parallel_all_reduce(final_hidden_states)
return final_hidden_states
+7 -4
View File
@@ -34,6 +34,7 @@ from sglang.srt.layers.linear import (
RowParallelLinear,
)
from sglang.srt.layers.logits_processor import LogitsProcessor
from sglang.srt.layers.moe import should_use_dp_reduce_scatterv
from sglang.srt.layers.moe.fused_moe_triton.layer import FusedMoE
from sglang.srt.layers.moe.topk import TopK
from sglang.srt.layers.quantization.base_config import QuantizationConfig
@@ -191,10 +192,11 @@ class HYV3MoEFused(nn.Module):
hidden_states=hidden_states, topk_output=topk_output
)
if self.ep_size > 1:
skip_post_reduce = should_use_dp_reduce_scatterv()
if self.ep_size > 1 and not skip_post_reduce:
final_hidden_states = moe_expert_parallel_all_reduce(final_hidden_states)
if self.tp_size > 1:
if self.tp_size > 1 and not skip_post_reduce:
final_hidden_states = moe_tensor_model_parallel_all_reduce(
final_hidden_states
)
@@ -222,10 +224,11 @@ class HYV3MoEFused(nn.Module):
current_stream.wait_stream(self.alt_stream)
final_hidden_states = final_hidden_states + shared_output
if self.ep_size > 1:
skip_post_reduce = should_use_dp_reduce_scatterv()
if self.ep_size > 1 and not skip_post_reduce:
final_hidden_states = moe_expert_parallel_all_reduce(final_hidden_states)
if self.tp_size > 1:
if self.tp_size > 1 and not skip_post_reduce:
final_hidden_states = moe_tensor_model_parallel_all_reduce(
final_hidden_states
)
+10 -2
View File
@@ -55,7 +55,11 @@ from sglang.srt.layers.linear import (
RowParallelLinear,
)
from sglang.srt.layers.logits_processor import LogitsProcessor
from sglang.srt.layers.moe import get_deepep_mode, get_moe_a2a_backend
from sglang.srt.layers.moe import (
get_deepep_mode,
get_moe_a2a_backend,
should_use_dp_reduce_scatterv,
)
from sglang.srt.layers.moe.ep_moe.layer import get_moe_impl_class
from sglang.srt.layers.moe.fused_moe_triton.layer import FusedMoE
from sglang.srt.layers.moe.token_dispatcher import DeepEPDispatcher
@@ -379,7 +383,11 @@ class LLaDA2MoeSparseMoeBlock(nn.Module):
if self.num_shared_experts > 0:
final_hidden_states = final_hidden_states + shared_output
if self.tp_size > 1 and not use_reduce_scatter:
if (
self.tp_size > 1
and not use_reduce_scatter
and not should_use_dp_reduce_scatterv()
):
final_hidden_states = tensor_model_parallel_all_reduce(final_hidden_states)
return final_hidden_states.view(num_tokens, hidden_size)
+6 -1
View File
@@ -39,6 +39,7 @@ from sglang.srt.layers.linear import (
ReplicatedLinear,
RowParallelLinear,
)
from sglang.srt.layers.moe import should_use_dp_reduce_scatterv
from sglang.srt.layers.moe.fused_moe_triton import FusedMoE
from sglang.srt.layers.moe.topk import TopK
from sglang.srt.layers.quantization.base_config import QuantizationConfig
@@ -145,7 +146,11 @@ class Llama4MoE(nn.Module):
out_aD = routed_out + shared_out
if self.tp_size > 1 and not use_reduce_scatter:
if (
self.tp_size > 1
and not use_reduce_scatter
and not should_use_dp_reduce_scatterv()
):
out_aD = tensor_model_parallel_all_reduce(out_aD)
return out_aD
@@ -51,6 +51,7 @@ from sglang.srt.layers.logits_processor import LogitsProcessor
from sglang.srt.layers.moe import (
get_moe_a2a_backend,
get_moe_runner_backend,
should_use_dp_reduce_scatterv,
should_use_flashinfer_cutlass_moe_fp4_allgather,
)
from sglang.srt.layers.moe.ep_moe.layer import DeepEPMoE, get_moe_impl_class
@@ -302,6 +303,7 @@ class MiMoV2MoE(nn.Module):
and not should_allreduce_fusion
and not use_reduce_scatter
and not should_use_flashinfer_cutlass_moe_fp4_allgather()
and not should_use_dp_reduce_scatterv()
):
final_hidden_states = tensor_model_parallel_all_reduce(final_hidden_states)
+2
View File
@@ -61,6 +61,7 @@ from sglang.srt.layers.linear import (
from sglang.srt.layers.logits_processor import LogitsProcessor
from sglang.srt.layers.moe import (
get_moe_a2a_backend,
should_use_dp_reduce_scatterv,
should_use_flashinfer_cutlass_moe_fp4_allgather,
)
from sglang.srt.layers.moe.ep_moe.layer import get_moe_impl_class
@@ -556,6 +557,7 @@ class MiniMaxM2MoE(nn.Module):
and not should_allreduce_fusion
and not use_reduce_scatter
and not should_use_flashinfer_cutlass_moe_fp4_allgather()
and not should_use_dp_reduce_scatterv()
):
final_hidden_states = tensor_model_parallel_all_reduce(final_hidden_states)
+6 -1
View File
@@ -39,7 +39,10 @@ from sglang.srt.layers.linear import (
RowParallelLinear,
)
from sglang.srt.layers.logits_processor import LogitsProcessor, LogitsProcessorOutput
from sglang.srt.layers.moe import should_use_flashinfer_cutlass_moe_fp4_allgather
from sglang.srt.layers.moe import (
should_use_dp_reduce_scatterv,
should_use_flashinfer_cutlass_moe_fp4_allgather,
)
from sglang.srt.layers.moe.ep_moe.layer import get_moe_impl_class
from sglang.srt.layers.moe.fused_moe_triton.layer import FusedMoE
from sglang.srt.layers.moe.topk import TopK
@@ -375,6 +378,7 @@ class SarvamMoESparseMoeBlock(nn.Module):
and not should_allreduce_fusion
and not use_reduce_scatter
and not should_use_flashinfer_cutlass_moe_fp4_allgather()
and not should_use_dp_reduce_scatterv()
):
final_hidden_states = tensor_model_parallel_all_reduce(final_hidden_states)
return final_hidden_states.view(num_tokens, hidden_dim)
@@ -418,6 +422,7 @@ class SarvamMoESparseMoeBlock(nn.Module):
and not should_allreduce_fusion
and not use_reduce_scatter
and not should_use_flashinfer_cutlass_moe_fp4_allgather()
and not should_use_dp_reduce_scatterv()
):
final_hidden_states = tensor_model_parallel_all_reduce(final_hidden_states)
+3 -1
View File
@@ -34,6 +34,7 @@ from sglang.srt.layers.linear import (
from sglang.srt.layers.logits_processor import LogitsProcessor
from sglang.srt.layers.moe import (
get_moe_a2a_backend,
should_use_dp_reduce_scatterv,
should_use_flashinfer_cutlass_moe_fp4_allgather,
)
from sglang.srt.layers.moe.ep_moe.layer import get_moe_impl_class
@@ -160,12 +161,13 @@ class SDARMoeSparseMoeBlock(nn.Module):
topk_output = self.topk(hidden_states, router_logits)
out = self.experts(hidden_states, topk_output) # (T, H)
# TP all-reduce (unless fused / reduce_scatter / fp4 allgather path)
# TP all-reduce (unless fused / reduce_scatter / fp4 allgather / dp reduce_scatterv path)
if (
self.tp_size > 1
and not should_allreduce_fusion
and not use_reduce_scatter
and not should_use_flashinfer_cutlass_moe_fp4_allgather()
and not should_use_dp_reduce_scatterv()
):
out = tensor_model_parallel_all_reduce(out)
+2
View File
@@ -31,6 +31,7 @@ from sglang.srt.layers.linear import (
from sglang.srt.layers.logits_processor import LogitsProcessor
from sglang.srt.layers.moe import (
get_moe_a2a_backend,
should_use_dp_reduce_scatterv,
should_use_flashinfer_cutlass_moe_fp4_allgather,
)
from sglang.srt.layers.moe.ep_moe.layer import get_moe_impl_class
@@ -237,6 +238,7 @@ class Step3p5MoEMLP(nn.Module):
and not should_allreduce_fusion
and not use_reduce_scatter
and not should_use_flashinfer_cutlass_moe_fp4_allgather()
and not should_use_dp_reduce_scatterv()
):
final_hidden_states = tensor_model_parallel_all_reduce(final_hidden_states)