From d15a5f5e1d7f6fb62bdaf40c08617d89c1a156e3 Mon Sep 17 00:00:00 2001 From: Seiji Eicher Date: Tue, 8 Jul 2025 22:50:17 -0700 Subject: [PATCH 1/5] Allow PPMissingLayer in assertion Signed-off-by: Seiji Eicher --- vllm/model_executor/models/deepseek_v2.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vllm/model_executor/models/deepseek_v2.py b/vllm/model_executor/models/deepseek_v2.py index 2fa1294b79b9..af7dcda76bca 100644 --- a/vllm/model_executor/models/deepseek_v2.py +++ b/vllm/model_executor/models/deepseek_v2.py @@ -740,7 +740,7 @@ def __init__(self, *, vllm_config: VllmConfig, prefix: str = ""): self.moe_layers: list[FusedMoE] = [] for layer in self.model.layers: - assert isinstance(layer, DeepseekV2DecoderLayer) + assert isinstance(layer, (DeepseekV2DecoderLayer, PPMissingLayer)) if isinstance(layer.mlp, DeepseekV2MoE): self.moe_layers.append(layer.mlp.experts) From 7f5d472a662e1604b25874fefdf1069869a22bb5 Mon Sep 17 00:00:00 2001 From: Seiji Eicher Date: Wed, 9 Jul 2025 09:36:20 -0700 Subject: [PATCH 2/5] Skip PPMissingLayer Signed-off-by: Seiji Eicher --- vllm/model_executor/models/deepseek_v2.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/vllm/model_executor/models/deepseek_v2.py b/vllm/model_executor/models/deepseek_v2.py index af7dcda76bca..74e718dad6ea 100644 --- a/vllm/model_executor/models/deepseek_v2.py +++ b/vllm/model_executor/models/deepseek_v2.py @@ -740,7 +740,10 @@ def __init__(self, *, vllm_config: VllmConfig, prefix: str = ""): self.moe_layers: list[FusedMoE] = [] for layer in self.model.layers: - assert isinstance(layer, (DeepseekV2DecoderLayer, PPMissingLayer)) + if isinstance(layer, PPMissingLayer): + continue + + assert isinstance(layer, DeepseekV2DecoderLayer) if isinstance(layer.mlp, DeepseekV2MoE): self.moe_layers.append(layer.mlp.experts) From c329ffe5bdf5ca5a9bb9d8558e3c04c87fa4d970 Mon Sep 17 00:00:00 2001 From: Seiji Eicher Date: Wed, 9 Jul 2025 09:52:05 -0700 Subject: [PATCH 3/5] Handle PPMissingLayer for example_moe Signed-off-by: Seiji Eicher --- vllm/model_executor/models/deepseek_v2.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/vllm/model_executor/models/deepseek_v2.py b/vllm/model_executor/models/deepseek_v2.py index 74e718dad6ea..ed459b7e6852 100644 --- a/vllm/model_executor/models/deepseek_v2.py +++ b/vllm/model_executor/models/deepseek_v2.py @@ -739,6 +739,7 @@ def __init__(self, *, vllm_config: VllmConfig, prefix: str = ""): self.num_expert_groups = config.n_group self.moe_layers: list[FusedMoE] = [] + example_moe = None for layer in self.model.layers: if isinstance(layer, PPMissingLayer): continue @@ -746,10 +747,11 @@ def __init__(self, *, vllm_config: VllmConfig, prefix: str = ""): assert isinstance(layer, DeepseekV2DecoderLayer) if isinstance(layer.mlp, DeepseekV2MoE): self.moe_layers.append(layer.mlp.experts) + example_moe = layer.mlp + + if example_moe is None: + raise RuntimeError("No DeepseekV2MoE layer found in model.layers.") - # Pick last one layer since the first ones may be dense layers. - example_moe = typing.cast( - DeepseekV2MoE, self.model.layers[config.num_hidden_layers - 1].mlp) self.num_logical_experts = example_moe.n_logical_experts self.num_physical_experts = example_moe.n_physical_experts self.num_local_physical_experts = example_moe.n_local_physical_experts From 6fdad1d8abbdefc02616bc64070ffba1854db4e7 Mon Sep 17 00:00:00 2001 From: Seiji Eicher Date: Wed, 9 Jul 2025 10:15:20 -0700 Subject: [PATCH 4/5] Add back comment Signed-off-by: Seiji Eicher --- vllm/model_executor/models/deepseek_v2.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/vllm/model_executor/models/deepseek_v2.py b/vllm/model_executor/models/deepseek_v2.py index ed459b7e6852..88d252267499 100644 --- a/vllm/model_executor/models/deepseek_v2.py +++ b/vllm/model_executor/models/deepseek_v2.py @@ -746,8 +746,10 @@ def __init__(self, *, vllm_config: VllmConfig, prefix: str = ""): assert isinstance(layer, DeepseekV2DecoderLayer) if isinstance(layer.mlp, DeepseekV2MoE): - self.moe_layers.append(layer.mlp.experts) + # Pick last one layer since the first ones may be dense layers. example_moe = layer.mlp + self.moe_layers.append(layer.mlp.experts) + if example_moe is None: raise RuntimeError("No DeepseekV2MoE layer found in model.layers.") From 320689e15398194f27bc18aef3db79d53bdb4e0c Mon Sep 17 00:00:00 2001 From: Seiji Eicher Date: Wed, 9 Jul 2025 11:46:32 -0700 Subject: [PATCH 5/5] Lint Signed-off-by: Seiji Eicher --- vllm/model_executor/models/deepseek_v2.py | 1 - 1 file changed, 1 deletion(-) diff --git a/vllm/model_executor/models/deepseek_v2.py b/vllm/model_executor/models/deepseek_v2.py index 88d252267499..8d36dda65b5d 100644 --- a/vllm/model_executor/models/deepseek_v2.py +++ b/vllm/model_executor/models/deepseek_v2.py @@ -750,7 +750,6 @@ def __init__(self, *, vllm_config: VllmConfig, prefix: str = ""): example_moe = layer.mlp self.moe_layers.append(layer.mlp.experts) - if example_moe is None: raise RuntimeError("No DeepseekV2MoE layer found in model.layers.")