From d3ade61e429fcae40829587244ced9c553120703 Mon Sep 17 00:00:00 2001 From: wuyaoxuehun <798143193@qq.com> Date: Wed, 12 Nov 2025 17:14:00 +0700 Subject: [PATCH] [Model] fix glm4_moe_mtp load weights with GLM-4.6 checkpoint. (#27597) Signed-off-by: wuao.scotty Co-authored-by: wuao.scotty --- vllm/model_executor/models/glm4_moe_mtp.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/vllm/model_executor/models/glm4_moe_mtp.py b/vllm/model_executor/models/glm4_moe_mtp.py index 9a2ae3c476f07..9db2aaa075de1 100644 --- a/vllm/model_executor/models/glm4_moe_mtp.py +++ b/vllm/model_executor/models/glm4_moe_mtp.py @@ -256,11 +256,18 @@ class Glm4MoeMTP(nn.Module, SupportsPP, Glm4MixtureOfExperts): params_dict = dict(self.named_parameters()) loaded_params: set[str] = set() + spec_layer = self.model.mtp_start_layer_idx for name, loaded_weight in weights: - spec_layer = get_spec_layer_idx_from_weight_name(self.config, name) - if spec_layer is None: - continue - name = self._rewrite_spec_layer_name(spec_layer, name) + if name == "lm_head.weight": + name = f"model.layers.{spec_layer}.shard_head.head.weight" + elif name == "model.embed_tokens.weight": + # This name is same with local model, rewriting is not needed. + pass + else: + spec_layer = get_spec_layer_idx_from_weight_name(self.config, name) + if spec_layer is None: + continue + name = self._rewrite_spec_layer_name(spec_layer, name) for param_name, weight_name, shard_id in stacked_params_mapping: # Skip non-stacked layers and experts (experts handled below). if weight_name not in name: