From 75f0d516c43cc664bec51409e0f0ddccef5d53e6 Mon Sep 17 00:00:00 2001 From: s-yanev Date: Thu, 7 May 2026 15:55:52 +0300 Subject: [PATCH] [Bugfix] Fix GLM4-MoE weight loading for NVFP4 quantized checkpoints (#41755) Signed-off-by: Stoyan Yanev --- vllm/model_executor/models/glm4_moe.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/vllm/model_executor/models/glm4_moe.py b/vllm/model_executor/models/glm4_moe.py index aeec6fefa2..98cc9a50ad 100644 --- a/vllm/model_executor/models/glm4_moe.py +++ b/vllm/model_executor/models/glm4_moe.py @@ -506,16 +506,24 @@ class Glm4MoeModel(nn.Module): # for mlp.experts[0].gate_gate_up_proj, which breaks load. if ("mlp.experts." in name) and name not in params_dict: continue + name = name.replace(weight_name, param_name) # Skip loading extra bias for GPTQ models. if name.endswith(".bias") and name not in params_dict: continue + + name = maybe_remap_kv_scale_name(name, params_dict) + if name is None: + continue if is_pp_missing_parameter(name, self): continue param = params_dict[name] - weight_loader = param.weight_loader - weight_loader(param, loaded_weight, shard_id) + weight_loader = getattr(param, "weight_loader", default_weight_loader) + if weight_loader == default_weight_loader: + weight_loader(param, loaded_weight) + else: + weight_loader(param, loaded_weight, shard_id) break else: is_expert_weight = False