[Bugfix][DSv3.2] Skip indexer weights for index-cache-skipped layers (#46600)
Signed-off-by: Frida Andersson <fanderss@amd.com> Co-authored-by: Andreas Karatzas <akaratza@amd.com>
frida-andersson committed
Jun 28, 2026 at 10:37 UTC
6eb63a1da6996abad00323dc7e845dc868996524
1 file changed
+10
vllm/model_executor/models/deepseek_v2.py
+10
@@ -1451,6 +1451,11 @@ class DeepseekV2Model(nn.Module):
1451
pp_missing_layer_names = get_pp_missing_layer_names(self)
1452
params_dict = dict(self.named_parameters())
1453
loaded_params: set[str] = set()
1454
+ # With index_topk_freq>1 only some layers build an indexer, yet the
1455
+ # checkpoint ships indexer weights for all of them; track the built ones.
1456
+ indexer_present_prefixes = {
1457
+ n.rsplit(".indexer.", 1)[0] for n in params_dict if ".indexer." in n
1458
+ }
1459
for name, loaded_weight in weights:
1460
if "rotary_emb.inv_freq" in name:
1461
continue
@@ -1459,6 +1464,11 @@ class DeepseekV2Model(nn.Module):
1464
if spec_layer is not None:
1465
continue # skip spec decode layers for main model
1466
1467
+ if ".indexer." in name and (
1468
+ name.rsplit(".indexer.", 1)[0] not in indexer_present_prefixes
1469
+ ):
1470
+ continue # this layer has no indexer; drop its checkpoint weights
1471
+
1472
is_fusion_moe_shared_experts_layer = (
1473
rocm_aiter_moe_shared_expert_enabled and ("mlp.shared_experts" in name)
1474
)