From fd04edef3e62c8dec19cddd76253c0fc6d56ab62 Mon Sep 17 00:00:00 2001 From: Wentao Ye <44945378+yewentao256@users.noreply.github.com> Date: Tue, 11 Aug 2026 15:44:26 -0400 Subject: [PATCH] [Refactor] Delete dead code in models (#51838) Signed-off-by: yewentao256 --- vllm/lora/layers/fused_moe.py | 4 ---- .../layers/fused_moe/runner/moe_runner.py | 4 ---- .../fused_moe/runner/moe_runner_interface.py | 5 ----- vllm/model_executor/models/AXK1.py | 18 +++------------ vllm/model_executor/models/afmoe.py | 6 ----- vllm/model_executor/models/deepseek_v2.py | 18 +++------------ vllm/model_executor/models/ernie45_moe.py | 5 ----- vllm/model_executor/models/exaone_moe.py | 6 ----- vllm/model_executor/models/glm4_moe.py | 6 ----- vllm/model_executor/models/hunyuan_v1.py | 6 ----- vllm/model_executor/models/hy_v3.py | 5 ----- vllm/model_executor/models/interns1_pro.py | 6 ----- vllm/model_executor/models/interns2_mobius.py | 15 ++++--------- vllm/model_executor/models/laguna.py | 6 ----- vllm/model_executor/models/lfm2_moe.py | 6 ----- vllm/model_executor/models/mimo_v2.py | 6 ----- vllm/model_executor/models/mixtral.py | 6 ----- vllm/model_executor/models/nemotron_h.py | 6 ----- vllm/model_executor/models/openpangu.py | 6 ----- vllm/model_executor/models/qwen3_moe.py | 22 +++---------------- vllm/model_executor/models/qwen3_next.py | 20 +++-------------- vllm/model_executor/models/step3p5.py | 19 +++------------- vllm/models/deepseek_v4/amd/model.py | 19 +++++----------- vllm/models/deepseek_v4/nvidia/model.py | 19 +++++----------- vllm/models/deepseek_v4/xpu/model.py | 18 +++++---------- 25 files changed, 34 insertions(+), 223 deletions(-) diff --git a/vllm/lora/layers/fused_moe.py b/vllm/lora/layers/fused_moe.py index 3027fe6430..e47bc79bf4 100644 --- a/vllm/lora/layers/fused_moe.py +++ b/vllm/lora/layers/fused_moe.py @@ -466,10 +466,6 @@ class FusedMoEWithLoRA(BaseLayerWithLoRA): def runner(self) -> MoERunner: return self.base_layer - @property - def is_internal_router(self) -> bool: - return self.base_layer.is_internal_router - @classmethod def can_replace_layer( cls, diff --git a/vllm/model_executor/layers/fused_moe/runner/moe_runner.py b/vllm/model_executor/layers/fused_moe/runner/moe_runner.py index 92b559f95f..aaf9ba6142 100644 --- a/vllm/model_executor/layers/fused_moe/runner/moe_runner.py +++ b/vllm/model_executor/layers/fused_moe/runner/moe_runner.py @@ -311,10 +311,6 @@ class MoERunner(MoERunnerInterface): def shared_experts(self) -> SharedExperts | None: return self._shared_experts - @property - def is_internal_router(self) -> bool: - return self.gate is not None - # TODO(bnell): Temporary hack. Get rid of this. def _replace_quant_method(self, quant_method: FusedMoEMethodBase): self.routed_experts._replace_quant_method(quant_method) diff --git a/vllm/model_executor/layers/fused_moe/runner/moe_runner_interface.py b/vllm/model_executor/layers/fused_moe/runner/moe_runner_interface.py index 199a98f4a0..d579b18156 100644 --- a/vllm/model_executor/layers/fused_moe/runner/moe_runner_interface.py +++ b/vllm/model_executor/layers/fused_moe/runner/moe_runner_interface.py @@ -45,11 +45,6 @@ class MoERunnerInterface(PluggableLayer, ABC): def shared_experts(self) -> SharedExperts | None: raise NotImplementedError - @property - @abstractmethod - def is_internal_router(self) -> bool: - raise NotImplementedError - @property @abstractmethod def _quant_method(self) -> FusedMoEMethodBase: diff --git a/vllm/model_executor/models/AXK1.py b/vllm/model_executor/models/AXK1.py index a95b701baf..6000e62828 100644 --- a/vllm/model_executor/models/AXK1.py +++ b/vllm/model_executor/models/AXK1.py @@ -108,7 +108,6 @@ class AXK1MoE(nn.Module): self.routed_scaling_factor = getattr(config, "routed_scaling_factor", 1.0) self.ep_group = get_ep_group().device_group - self.ep_rank = get_ep_group().rank_in_group self.ep_size = self.ep_group.size() assert config.n_routed_experts is not None assert config.num_experts_per_tok is not None @@ -148,11 +147,6 @@ class AXK1MoE(nn.Module): self.n_physical_experts = self.n_logical_experts + self.n_redundant_experts self.n_local_physical_experts = self.n_physical_experts // self.ep_size - self.physical_expert_start = self.ep_rank * self.n_local_physical_experts - self.physical_expert_end = ( - self.physical_expert_start + self.n_local_physical_experts - ) - self.is_rocm_aiter_moe_enabled = rocm_aiter_ops.is_fused_moe_enabled() self.is_fusion_moe_shared_experts_enabled = ( rocm_aiter_ops.is_fusion_moe_shared_experts_enabled() @@ -210,15 +204,9 @@ class AXK1MoE(nn.Module): if self.is_sequence_parallel: hidden_states = sequence_parallel_chunk(hidden_states) - if self.experts.is_internal_router: - final_hidden_states = self.experts( - hidden_states=hidden_states, router_logits=hidden_states - ) - else: - router_logits, _ = self.gate(hidden_states) - final_hidden_states = self.experts( - hidden_states=hidden_states, router_logits=router_logits - ) + final_hidden_states = self.experts( + hidden_states=hidden_states, router_logits=hidden_states + ) if self.is_sequence_parallel: final_hidden_states = tensor_model_parallel_all_gather( diff --git a/vllm/model_executor/models/afmoe.py b/vllm/model_executor/models/afmoe.py index 6ffc571674..808775e35f 100644 --- a/vllm/model_executor/models/afmoe.py +++ b/vllm/model_executor/models/afmoe.py @@ -71,7 +71,6 @@ class AfmoeMoE(nn.Module): self.route_norm = config.route_norm self.ep_group = get_ep_group().device_group - self.ep_rank = self.ep_group.rank() self.ep_size = self.ep_group.size() self.n_routed_experts: int = config.num_experts self.n_shared_experts: int = config.num_shared_experts @@ -103,11 +102,6 @@ class AfmoeMoE(nn.Module): self.n_physical_experts = self.n_logical_experts + self.n_redundant_experts self.n_local_physical_experts = self.n_physical_experts // self.ep_size - self.physical_expert_start = self.ep_rank * self.n_local_physical_experts - self.physical_expert_end = ( - self.physical_expert_start + self.n_local_physical_experts - ) - self.shared_experts = None # Shared experts if config.num_shared_experts > 0: diff --git a/vllm/model_executor/models/deepseek_v2.py b/vllm/model_executor/models/deepseek_v2.py index f076b4fb3f..254763706c 100644 --- a/vllm/model_executor/models/deepseek_v2.py +++ b/vllm/model_executor/models/deepseek_v2.py @@ -293,7 +293,6 @@ class DeepseekV2MoE(nn.Module): self.routed_scaling_factor = getattr(config, "routed_scaling_factor", 1.0) self.ep_group = get_ep_group().device_group - self.ep_rank = get_ep_group().rank_in_group self.ep_size = self.ep_group.size() self.n_routed_experts: int = config.n_routed_experts self.n_shared_experts: int = config.n_shared_experts @@ -329,11 +328,6 @@ class DeepseekV2MoE(nn.Module): self.n_physical_experts = self.n_logical_experts + self.n_redundant_experts self.n_local_physical_experts = self.n_physical_experts // self.ep_size - self.physical_expert_start = self.ep_rank * self.n_local_physical_experts - self.physical_expert_end = ( - self.physical_expert_start + self.n_local_physical_experts - ) - self.is_rocm_aiter_moe_enabled = rocm_aiter_ops.is_fused_moe_enabled() self.is_fusion_moe_shared_experts_enabled = ( rocm_aiter_ops.is_fusion_moe_shared_experts_enabled() @@ -409,15 +403,9 @@ class DeepseekV2MoE(nn.Module): if self.is_sequence_parallel and not already_sequence_parallel: hidden_states = sequence_parallel_chunk(hidden_states) - if self.experts.is_internal_router: - final_hidden_states = self.experts( - hidden_states=hidden_states, router_logits=hidden_states - ) - else: - router_logits, _ = self.gate(hidden_states) - final_hidden_states = self.experts( - hidden_states=hidden_states, router_logits=router_logits - ) + final_hidden_states = self.experts( + hidden_states=hidden_states, router_logits=hidden_states + ) if self.is_sequence_parallel and not already_sequence_parallel: final_hidden_states = tensor_model_parallel_all_gather( diff --git a/vllm/model_executor/models/ernie45_moe.py b/vllm/model_executor/models/ernie45_moe.py index 6cc6a056fd..89f0b32c66 100644 --- a/vllm/model_executor/models/ernie45_moe.py +++ b/vllm/model_executor/models/ernie45_moe.py @@ -129,7 +129,6 @@ class Ernie4_5_MoeMoE(nn.Module): self.moe_num_shared_experts = getattr(config, "moe_num_shared_experts", None) self.ep_group = get_ep_group().device_group - self.ep_rank = get_ep_group().rank_in_group self.ep_size = self.ep_group.size() self.n_routed_experts: int = config.moe_num_experts self.n_shared_experts: int = self.moe_num_shared_experts @@ -143,10 +142,6 @@ class Ernie4_5_MoeMoE(nn.Module): self.n_logical_experts = self.n_routed_experts self.n_physical_experts = self.n_logical_experts + self.n_redundant_experts self.n_local_physical_experts = self.n_physical_experts // self.ep_size - self.physical_expert_start = self.ep_rank * self.n_local_physical_experts - self.physical_expert_end = ( - self.physical_expert_start + self.n_local_physical_experts - ) self.has_shared_experts = getattr(config, "moe_num_shared_experts", 0) > 0 if self.tp_size > config.moe_num_experts: diff --git a/vllm/model_executor/models/exaone_moe.py b/vllm/model_executor/models/exaone_moe.py index 0d7da9232d..e942bf62ed 100644 --- a/vllm/model_executor/models/exaone_moe.py +++ b/vllm/model_executor/models/exaone_moe.py @@ -76,7 +76,6 @@ class ExaoneMoe(nn.Module): self.routed_scaling_factor = config.routed_scaling_factor self.ep_group = get_ep_group().device_group - self.ep_rank = self.ep_group.rank() self.ep_size = self.ep_group.size() self.n_routed_experts = config.num_experts @@ -113,11 +112,6 @@ class ExaoneMoe(nn.Module): self.n_physical_experts = self.n_logical_experts + self.n_redundant_experts self.n_local_physical_experts = self.n_physical_experts // self.ep_size - self.physical_expert_start = self.ep_rank * self.n_local_physical_experts - self.physical_expert_end = ( - self.physical_expert_start + self.n_local_physical_experts - ) - if getattr(config, "num_shared_experts", 0) > 0: intermediate_size = config.moe_intermediate_size * config.num_shared_experts self.shared_experts = ExaoneMoeGatedMLP( diff --git a/vllm/model_executor/models/glm4_moe.py b/vllm/model_executor/models/glm4_moe.py index 615df7cef3..6272db2a90 100644 --- a/vllm/model_executor/models/glm4_moe.py +++ b/vllm/model_executor/models/glm4_moe.py @@ -127,7 +127,6 @@ class Glm4MoE(nn.Module): self.routed_scaling_factor = config.routed_scaling_factor self.ep_group = get_ep_group().device_group - self.ep_rank = get_ep_group().rank_in_group self.ep_size = self.ep_group.size() self.n_routed_experts: int = config.n_routed_experts self.n_shared_experts: int = config.n_shared_experts @@ -160,11 +159,6 @@ class Glm4MoE(nn.Module): self.n_physical_experts = self.n_logical_experts + self.n_redundant_experts self.n_local_physical_experts = self.n_physical_experts // self.ep_size - self.physical_expert_start = self.ep_rank * self.n_local_physical_experts - self.physical_expert_end = ( - self.physical_expert_start + self.n_local_physical_experts - ) - # AITER fused shared-expert (FSE) gate; mirrors the deepseek_v2.py # pattern (see Glm4MoE / MoERunner wiring there). self.is_rocm_aiter_moe_enabled = rocm_aiter_ops.is_fused_moe_enabled() diff --git a/vllm/model_executor/models/hunyuan_v1.py b/vllm/model_executor/models/hunyuan_v1.py index af26b39ee0..ef7c748519 100644 --- a/vllm/model_executor/models/hunyuan_v1.py +++ b/vllm/model_executor/models/hunyuan_v1.py @@ -372,7 +372,6 @@ class HunYuanSparseMoeBlock(nn.Module): self.tp_size = get_tensor_model_parallel_world_size() self.ep_group = get_ep_group().device_group - self.ep_rank = get_ep_group().rank_in_group self.ep_size = self.ep_group.size() self.n_routed_experts = config.num_experts @@ -408,11 +407,6 @@ class HunYuanSparseMoeBlock(nn.Module): self.n_redundant_experts = eplb_config.num_redundant_experts self.n_physical_experts = self.n_logical_experts + self.n_redundant_experts self.n_local_physical_experts = self.n_physical_experts // self.ep_size - self.physical_expert_start = self.ep_rank * self.n_local_physical_experts - self.physical_expert_end = ( - self.physical_expert_start + self.n_local_physical_experts - ) - self.gate = ReplicatedLinear( config.hidden_size, config.num_experts, diff --git a/vllm/model_executor/models/hy_v3.py b/vllm/model_executor/models/hy_v3.py index f75fbb0041..a4f4a558ec 100644 --- a/vllm/model_executor/models/hy_v3.py +++ b/vllm/model_executor/models/hy_v3.py @@ -134,7 +134,6 @@ class HYV3MoEFused(nn.Module): super().__init__() self.tp_size = get_tensor_model_parallel_world_size() self.ep_group = get_ep_group().device_group - self.ep_rank = get_ep_group().rank_in_group self.ep_size = self.ep_group.size() self.n_routed_experts = config.num_experts if self.tp_size > config.num_experts: @@ -153,10 +152,6 @@ class HYV3MoEFused(nn.Module): self.n_redundant_experts = eplb_config.num_redundant_experts self.n_physical_experts = self.n_logical_experts + self.n_redundant_experts self.n_local_physical_experts = self.n_physical_experts // self.ep_size - self.physical_expert_start = self.ep_rank * self.n_local_physical_experts - self.physical_expert_end = ( - self.physical_expert_start + self.n_local_physical_experts - ) self.gate = GateLinear( config.hidden_size, config.num_experts, diff --git a/vllm/model_executor/models/interns1_pro.py b/vllm/model_executor/models/interns1_pro.py index 935abb04ed..378177a557 100644 --- a/vllm/model_executor/models/interns1_pro.py +++ b/vllm/model_executor/models/interns1_pro.py @@ -144,7 +144,6 @@ class InternS1ProMoeSparseMoeBlock(nn.Module): self.tp_size = get_tensor_model_parallel_world_size() self.ep_group = get_ep_group().device_group - self.ep_rank = get_ep_group().rank_in_group self.ep_size = self.ep_group.size() self.n_routed_experts = config.num_experts @@ -165,11 +164,6 @@ class InternS1ProMoeSparseMoeBlock(nn.Module): self.n_physical_experts = self.n_logical_experts + self.n_redundant_experts self.n_local_physical_experts = self.n_physical_experts // self.ep_size - self.physical_expert_start = self.ep_rank * self.n_local_physical_experts - self.physical_expert_end = ( - self.physical_expert_start + self.n_local_physical_experts - ) - # For custom routing function self.n_groups = getattr(config, "router_n_groups", -1) diff --git a/vllm/model_executor/models/interns2_mobius.py b/vllm/model_executor/models/interns2_mobius.py index 2e884002c4..e13de751e6 100644 --- a/vllm/model_executor/models/interns2_mobius.py +++ b/vllm/model_executor/models/interns2_mobius.py @@ -127,17 +127,10 @@ class InternS2MobiusMetaMoeBlock(nn.Module): if self.is_sequence_parallel and not already_sequence_parallel: hidden_states = sequence_parallel_chunk(hidden_states) - if self.experts.is_internal_router: - final_hidden_states = self.experts( - hidden_states=hidden_states, - router_logits=hidden_states, - ) - else: - router_logits, _ = self.gate(hidden_states) - final_hidden_states = self.experts( - hidden_states=hidden_states, - router_logits=router_logits, - ) + final_hidden_states = self.experts( + hidden_states=hidden_states, + router_logits=hidden_states, + ) if self.is_sequence_parallel and not already_sequence_parallel: final_hidden_states = tensor_model_parallel_all_gather( diff --git a/vllm/model_executor/models/laguna.py b/vllm/model_executor/models/laguna.py index 3fcf03b7e6..9431f9a0ec 100644 --- a/vllm/model_executor/models/laguna.py +++ b/vllm/model_executor/models/laguna.py @@ -132,7 +132,6 @@ class LagunaMoE(nn.Module): self.tp_size = get_tensor_model_parallel_world_size() self.ep_group = get_ep_group().device_group - self.ep_rank = self.ep_group.rank() self.ep_size = self.ep_group.size() self.n_routed_experts = config.num_experts @@ -160,11 +159,6 @@ class LagunaMoE(nn.Module): self.n_logical_experts = self.n_routed_experts self.n_physical_experts = self.n_logical_experts + self.n_redundant_experts self.n_local_physical_experts = self.n_physical_experts // self.ep_size - self.physical_expert_start = self.ep_rank * self.n_local_physical_experts - self.physical_expert_end = ( - self.physical_expert_start + self.n_local_physical_experts - ) - # Router gate self.gate = ReplicatedLinear( config.hidden_size, diff --git a/vllm/model_executor/models/lfm2_moe.py b/vllm/model_executor/models/lfm2_moe.py index 44bf55917e..966a458dea 100644 --- a/vllm/model_executor/models/lfm2_moe.py +++ b/vllm/model_executor/models/lfm2_moe.py @@ -106,7 +106,6 @@ class Lfm2MoeSparseMoeBlock(nn.Module): self.routed_scaling_factor = config.routed_scaling_factor self.ep_group = get_ep_group().device_group - self.ep_rank = get_ep_group().rank_in_group self.ep_size = self.ep_group.size() self.n_routed_experts = config.num_experts @@ -126,11 +125,6 @@ class Lfm2MoeSparseMoeBlock(nn.Module): self.n_physical_experts = self.n_logical_experts + self.n_redundant_experts self.n_local_physical_experts = self.n_physical_experts // self.ep_size - self.physical_expert_start = self.ep_rank * self.n_local_physical_experts - self.physical_expert_end = ( - self.physical_expert_start + self.n_local_physical_experts - ) - self.gate = ReplicatedLinear( config.hidden_size, config.num_experts, diff --git a/vllm/model_executor/models/mimo_v2.py b/vllm/model_executor/models/mimo_v2.py index 30ddd5eb12..8df6a4c0e8 100644 --- a/vllm/model_executor/models/mimo_v2.py +++ b/vllm/model_executor/models/mimo_v2.py @@ -127,7 +127,6 @@ class MiMoV2MoE(nn.Module): self.tp_size = get_tensor_model_parallel_world_size() self.ep_group = get_ep_group().device_group - self.ep_rank = get_ep_group().rank_in_group self.ep_size = self.ep_group.size() self.n_routed_experts = config.n_routed_experts @@ -154,11 +153,6 @@ class MiMoV2MoE(nn.Module): self.n_physical_experts = self.n_logical_experts + self.n_redundant_experts self.n_local_physical_experts = self.n_physical_experts // self.ep_size - self.physical_expert_start = self.ep_rank * self.n_local_physical_experts - self.physical_expert_end = ( - self.physical_expert_start + self.n_local_physical_experts - ) - dtype = getattr(config, "moe_router_dtype", "float32") self.gate_dtype = str_dtype_to_torch_dtype(dtype) self.gate = nn.Linear( diff --git a/vllm/model_executor/models/mixtral.py b/vllm/model_executor/models/mixtral.py index 991729354b..f9b452f47f 100644 --- a/vllm/model_executor/models/mixtral.py +++ b/vllm/model_executor/models/mixtral.py @@ -92,7 +92,6 @@ class MixtralMoE(nn.Module): self.hidden_size = hidden_size self.ep_group = get_ep_group().device_group - self.ep_rank = get_ep_group().rank_in_group self.ep_size = self.ep_group.size() # Expert Parallelism Load balancing settings. @@ -105,11 +104,6 @@ class MixtralMoE(nn.Module): self.n_redundant_experts = parallel_config.eplb_config.num_redundant_experts self.n_physical_experts = self.n_logical_experts + self.n_redundant_experts self.n_local_physical_experts = self.n_physical_experts // self.ep_size - self.physical_expert_start = self.ep_rank * self.n_local_physical_experts - self.physical_expert_end = ( - self.physical_expert_start + self.n_local_physical_experts - ) - # Gate always runs at half / full precision for now. self.gate = ReplicatedLinear( diff --git a/vllm/model_executor/models/nemotron_h.py b/vllm/model_executor/models/nemotron_h.py index d68a619eb2..6c7b253063 100644 --- a/vllm/model_executor/models/nemotron_h.py +++ b/vllm/model_executor/models/nemotron_h.py @@ -136,7 +136,6 @@ class NemotronHMoE(nn.Module): self.routed_scaling_factor = config.routed_scaling_factor self.ep_group = get_ep_group().device_group - self.ep_rank = self.ep_group.rank() self.ep_size = self.ep_group.size() self.n_routed_experts: int = config.n_routed_experts self.n_shared_experts: int = config.n_shared_experts @@ -166,11 +165,6 @@ class NemotronHMoE(nn.Module): self.n_physical_experts = self.n_logical_experts + self.n_redundant_experts self.n_local_physical_experts = self.n_physical_experts // self.ep_size - self.physical_expert_start = self.ep_rank * self.n_local_physical_experts - self.physical_expert_end = ( - self.physical_expert_start + self.n_local_physical_experts - ) - if config.n_shared_experts is None or config.n_shared_experts == 0: self.shared_experts = None else: diff --git a/vllm/model_executor/models/openpangu.py b/vllm/model_executor/models/openpangu.py index 348c0578f3..3557bdd0a5 100644 --- a/vllm/model_executor/models/openpangu.py +++ b/vllm/model_executor/models/openpangu.py @@ -142,7 +142,6 @@ class OpenPanguMoE(nn.Module): self.routed_scaling_factor = config.routed_scaling_factor self.ep_group = get_ep_group().device_group - self.ep_rank = self.ep_group.rank() self.ep_size = self.ep_group.size() self.n_routed_experts: int = config.n_routed_experts self.n_shared_experts: int = config.n_shared_experts @@ -176,11 +175,6 @@ class OpenPanguMoE(nn.Module): self.n_physical_experts = self.n_logical_experts + self.n_redundant_experts self.n_local_physical_experts = self.n_physical_experts // self.ep_size - self.physical_expert_start = self.ep_rank * self.n_local_physical_experts - self.physical_expert_end = ( - self.physical_expert_start + self.n_local_physical_experts - ) - if config.n_shared_experts is not None: intermediate_size = config.moe_intermediate_size * config.n_shared_experts self.shared_experts = OpenPanguMLP( diff --git a/vllm/model_executor/models/qwen3_moe.py b/vllm/model_executor/models/qwen3_moe.py index 2c29f9cc61..41698bfd4d 100644 --- a/vllm/model_executor/models/qwen3_moe.py +++ b/vllm/model_executor/models/qwen3_moe.py @@ -142,7 +142,6 @@ class Qwen3MoeSparseMoeBlock(nn.Module): self.tp_size = get_tensor_model_parallel_world_size() self.ep_group = get_ep_group().device_group - self.ep_rank = get_ep_group().rank_in_group self.ep_size = self.ep_group.size() self.n_routed_experts = config.num_experts @@ -164,11 +163,6 @@ class Qwen3MoeSparseMoeBlock(nn.Module): self.n_physical_experts = self.n_logical_experts + self.n_redundant_experts self.n_local_physical_experts = self.n_physical_experts // self.ep_size - self.physical_expert_start = self.ep_rank * self.n_local_physical_experts - self.physical_expert_end = ( - self.physical_expert_start + self.n_local_physical_experts - ) - self.gate = ReplicatedLinear( config.hidden_size, config.num_experts, @@ -227,19 +221,9 @@ class Qwen3MoeSparseMoeBlock(nn.Module): if self.is_sequence_parallel: hidden_states = sequence_parallel_chunk(hidden_states) - if self.experts.is_internal_router: - # In this case, the gate/router runs inside the MoERunner class - final_hidden_states = self.experts( - hidden_states=hidden_states, router_logits=hidden_states - ) - else: - # Actually this will be dead code, since we always pass gate into - # MoERunner in the current implementation. But we keep this code - # here for clarity and future flexibility. - router_logits, _ = self.gate(hidden_states) - final_hidden_states = self.experts( - hidden_states=hidden_states, router_logits=router_logits - ) + final_hidden_states = self.experts( + hidden_states=hidden_states, router_logits=hidden_states + ) if self.is_sequence_parallel: final_hidden_states = tensor_model_parallel_all_gather( diff --git a/vllm/model_executor/models/qwen3_next.py b/vllm/model_executor/models/qwen3_next.py index b43aea8795..ffeada5444 100644 --- a/vllm/model_executor/models/qwen3_next.py +++ b/vllm/model_executor/models/qwen3_next.py @@ -109,7 +109,6 @@ class Qwen3NextSparseMoeBlock(nn.Module): self.tp_size = get_tensor_model_parallel_world_size() self.ep_group = get_ep_group().device_group - self.ep_rank = get_ep_group().rank_in_group self.ep_size = self.ep_group.size() self.n_routed_experts = config.num_experts @@ -130,11 +129,6 @@ class Qwen3NextSparseMoeBlock(nn.Module): self.n_physical_experts = self.n_logical_experts + self.n_redundant_experts self.n_local_physical_experts = self.n_physical_experts // self.ep_size - self.physical_expert_start = self.ep_rank * self.n_local_physical_experts - self.physical_expert_end = ( - self.physical_expert_start + self.n_local_physical_experts - ) - self.gate = ReplicatedLinear( config.hidden_size, config.num_experts, @@ -205,17 +199,9 @@ class Qwen3NextSparseMoeBlock(nn.Module): if self.is_sequence_parallel and not already_sequence_parallel: hidden_states = sequence_parallel_chunk(hidden_states) - if self.experts.is_internal_router: - # In this case, the gate/router runs inside the MoERunner class - final_hidden_states = self.experts( - hidden_states=hidden_states, router_logits=hidden_states - ) - else: - # router_logits: (num_tokens, n_experts) - router_logits, _ = self.gate(hidden_states) - final_hidden_states = self.experts( - hidden_states=hidden_states, router_logits=router_logits - ) + final_hidden_states = self.experts( + hidden_states=hidden_states, router_logits=hidden_states + ) if self.is_sequence_parallel and not already_sequence_parallel: final_hidden_states = tensor_model_parallel_all_gather( diff --git a/vllm/model_executor/models/step3p5.py b/vllm/model_executor/models/step3p5.py index 0a699ad241..5c6cee77d7 100644 --- a/vllm/model_executor/models/step3p5.py +++ b/vllm/model_executor/models/step3p5.py @@ -303,7 +303,6 @@ class FusedMoEBlock(nn.Module): self.layer_idx = extract_layer_index(prefix) self.ep_size = get_ep_group().device_group.size() - self.ep_rank = get_ep_group().device_group.rank() config = vllm_config.model_config.hf_config quant_config = vllm_config.quant_config parallel_config = vllm_config.parallel_config @@ -316,11 +315,6 @@ class FusedMoEBlock(nn.Module): self.n_physical_experts = self.n_logical_experts + self.n_redundant_experts self.n_local_physical_experts = self.n_physical_experts // self.ep_size - self.physical_expert_start = self.ep_rank * self.n_local_physical_experts - self.physical_expert_end = ( - self.physical_expert_start + self.n_local_physical_experts - ) - if self.tp_size > config.moe_num_experts: raise ValueError( f"Tensor parallel size {self.tp_size} is greater than " @@ -399,16 +393,9 @@ class FusedMoEBlock(nn.Module): num_tokens, hidden_dim = hidden_states.shape hidden_states = hidden_states.view(-1, hidden_dim) - if self.experts.is_internal_router: - final_hidden_states = self.experts( - hidden_states=hidden_states, router_logits=hidden_states - ) - else: - # TODO(bnell): this gate could be moved into the MoERunner? - router_logits, _ = self.gate(hidden_states) - final_hidden_states = self.experts( - hidden_states=hidden_states, router_logits=router_logits - ) + final_hidden_states = self.experts( + hidden_states=hidden_states, router_logits=hidden_states + ) return final_hidden_states.view(num_tokens, hidden_dim) diff --git a/vllm/models/deepseek_v4/amd/model.py b/vllm/models/deepseek_v4/amd/model.py index d7fd88c799..5888ae563c 100644 --- a/vllm/models/deepseek_v4/amd/model.py +++ b/vllm/models/deepseek_v4/amd/model.py @@ -307,20 +307,11 @@ class DeepseekV4MoE(nn.Module): raise ValueError("DeepSeek V4 hash MoE routing requires input_ids.") org_shape = hidden_states.shape - if self.experts.is_internal_router: - # In this case, the gate/router runs inside the MoERunner class - final_hidden_states = self.experts( - hidden_states=hidden_states, - router_logits=hidden_states, - input_ids=input_ids, - ) - else: - router_logits, _ = self.gate(hidden_states) - final_hidden_states = self.experts( - hidden_states=hidden_states, - router_logits=router_logits, - input_ids=input_ids, - ) + final_hidden_states = self.experts( + hidden_states=hidden_states, + router_logits=hidden_states, + input_ids=input_ids, + ) return final_hidden_states.view(org_shape) diff --git a/vllm/models/deepseek_v4/nvidia/model.py b/vllm/models/deepseek_v4/nvidia/model.py index c0d29d0b42..e102b6ddd3 100644 --- a/vllm/models/deepseek_v4/nvidia/model.py +++ b/vllm/models/deepseek_v4/nvidia/model.py @@ -746,20 +746,11 @@ class DeepseekV4MoE(nn.Module): self, hidden_states: torch.Tensor, input_ids: torch.Tensor | None = None ) -> torch.Tensor: org_shape = hidden_states.shape - if self.experts.is_internal_router: - # In this case, the gate/router runs inside the MoERunner class - final_hidden_states = self.experts( - hidden_states=hidden_states, - router_logits=hidden_states, - input_ids=input_ids, - ) - else: - router_logits, _ = self.gate(hidden_states) - final_hidden_states = self.experts( - hidden_states=hidden_states, - router_logits=router_logits, - input_ids=input_ids, - ) + final_hidden_states = self.experts( + hidden_states=hidden_states, + router_logits=hidden_states, + input_ids=input_ids, + ) return final_hidden_states.view(org_shape) diff --git a/vllm/models/deepseek_v4/xpu/model.py b/vllm/models/deepseek_v4/xpu/model.py index 0c10404d10..2c8aabaaf2 100644 --- a/vllm/models/deepseek_v4/xpu/model.py +++ b/vllm/models/deepseek_v4/xpu/model.py @@ -792,19 +792,11 @@ class DeepseekV4MoE(nn.Module): self, hidden_states: torch.Tensor, input_ids: torch.Tensor | None = None ) -> torch.Tensor: org_shape = hidden_states.shape - if self.experts.is_internal_router: - final_hidden_states = self.experts( - hidden_states=hidden_states, - router_logits=hidden_states, - input_ids=input_ids, - ) - else: - router_logits, _ = self.gate(hidden_states) - final_hidden_states = self.experts( - hidden_states=hidden_states, - router_logits=router_logits, - input_ids=input_ids, - ) + final_hidden_states = self.experts( + hidden_states=hidden_states, + router_logits=hidden_states, + input_ids=input_ids, + ) return final_hidden_states.view(org_shape)