From 017dced6a6fd3cf430e4686a47b354da1cadfbf5 Mon Sep 17 00:00:00 2001 From: Itay Alroy <75032521+itayalroy@users.noreply.github.com> Date: Fri, 18 Sep 2026 18:17:07 +0300 Subject: [PATCH] [DeepSeek V4] Fix fused MoE expert distribution (#57465) Signed-off-by: Itay Alroy Co-authored-by: Tyler Michael Smith --- vllm/models/deepseek_v4/nvidia/model.py | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/vllm/models/deepseek_v4/nvidia/model.py b/vllm/models/deepseek_v4/nvidia/model.py index 59156365c5..39d3c87bc6 100644 --- a/vllm/models/deepseek_v4/nvidia/model.py +++ b/vllm/models/deepseek_v4/nvidia/model.py @@ -993,20 +993,18 @@ class DeepseekV4MoE(nn.Module): prefix: str, ) -> None: parallel_config = vllm_config.parallel_config - self.tp_rank = get_tensor_model_parallel_rank() + ep_group = get_ep_group() + ep_size = ep_group.world_size + ep_rank = ep_group.rank_in_group eplb_config = parallel_config.eplb_config self.n_redundant_experts = eplb_config.num_redundant_experts self.n_shared_experts = config.n_shared_experts or 0 self.n_logical_experts = self.n_routed_experts self.n_physical_experts = self.n_logical_experts + self.n_redundant_experts - assert self.n_physical_experts % self.tp_size == 0, ( - f"n_physical_experts={self.n_physical_experts} must be divisible by " - f"tp_size={self.tp_size}. Adjust num_redundant_experts." - ) - self.n_local_physical_experts = self.n_physical_experts // self.tp_size + self.n_local_physical_experts = self.n_physical_experts // ep_size self.n_local_experts = self.n_local_physical_experts - self.experts_start_idx = self.tp_rank * self.n_local_experts + self.experts_start_idx = ep_rank * self.n_local_experts self.experts_end_idx = self.experts_start_idx + self.n_local_experts self.physical_expert_start = self.experts_start_idx self.physical_expert_end = self.experts_end_idx