@tduncan / Nvidia-Optimization-Stack-VLLM Mirror · read-only / commits / f4966f8b3d
Fork 0

A high-throughput and memory-efficient inference and serving engine for LLMs

[Bugfix] Fix weight loading issues caused by #41184 (#45054)

Signed-off-by: Bill Nell <bnell@redhat.com>

bnellnm committed Jun 10, 2026 at 01:20 UTC f4966f8b3ddf757c607d57d4bb35624e2ee4f6b4
5 files changed +55 -25
vllm/model_executor/models/aria.py
+2 -2
@@ -335,8 +335,8 @@ class AriaTextModel(LlamaModel, SupportsQuant):
335 packed_modules_mapping = {
336 "qkv_proj": ["q_proj", "k_proj", "v_proj"],
337 "gate_up_proj": ["gate_proj", "up_proj"],
338 - "experts.w13_weight": ["experts.fc1.weight"],
339 - "experts.w2_weight": ["experts.fc2.weight"],
338 + "experts.routed_experts.w13_weight": ["experts.fc1.weight"],
339 + "experts.routed_experts.w2_weight": ["experts.fc2.weight"],
340 }
341
342 def __init__(self, *, vllm_config: VllmConfig, prefix: str = ""):
vllm/model_executor/models/qwen3_vl_moe.py
+12 -2
@@ -187,8 +187,18 @@ class Qwen3MoeLLMModel(Qwen3MoeModel):
187 "base_layer." if any(".base_layer." in name for name in params_dict) else ""
188 )
189 fused_expert_params_mapping = [
190 - (f"experts.{base_layer}w13_weight", "experts.gate_up_proj", 0, "w1"),
191 - (f"experts.{base_layer}w2_weight", "experts.down_proj", 0, "w2"),
190 + (
191 + f"experts.routed_experts.{base_layer}w13_weight",
192 + "experts.gate_up_proj",
193 + 0,
194 + "w1",
195 + ),
196 + (
197 + f"experts.routed_experts.{base_layer}w2_weight",
198 + "experts.down_proj",
199 + 0,
200 + "w2",
201 + ),
202 ]
203 num_experts = self.config.num_experts
204 for name, loaded_weight in weights:
vllm/model_executor/models/step3_text.py
+15 -3
@@ -422,9 +422,21 @@ class Step3TextModel(nn.Module):
422 )
423
424 expert_params_mapping = [
425 - (f".moe.experts.{base_layer}w13_weight", ".moe.gate_proj.weight", "w1"),
426 - (f".moe.experts.{base_layer}w13_weight", ".moe.up_proj.weight", "w3"),
427 - (f".moe.experts.{base_layer}w2_weight", ".moe.down_proj.weight", "w2"),
425 + (
426 + f".moe.experts.routed_experts.{base_layer}w13_weight",
427 + ".moe.gate_proj.weight",
428 + "w1",
429 + ),
430 + (
431 + f".moe.experts.routed_experts.{base_layer}w13_weight",
432 + ".moe.up_proj.weight",
433 + "w3",
434 + ),
435 + (
436 + f".moe.experts.routed_experts.{base_layer}w2_weight",
437 + ".moe.down_proj.weight",
438 + "w2",
439 + ),
440 ]
441
442 disable_moe_stacked_params = [data[1] for data in expert_params_mapping]
vllm/model_executor/models/step3p5.py
+24 -12
@@ -635,36 +635,48 @@ class Step3p5Model(nn.Module):
635
636 # Old packed 3D format: .moe.gate_proj.weight [num_experts, out, in]
637 expert_params_mapping = [
638 - (f".moe.experts.{base_layer}w13_weight", ".moe.gate_proj.weight", "w1"),
639 - (f".moe.experts.{base_layer}w13_weight", ".moe.up_proj.weight", "w3"),
640 - (f".moe.experts.{base_layer}w2_weight", ".moe.down_proj.weight", "w2"),
638 (
642 - f".moe.experts.{base_layer}w13_weight_scale_2",
639 + f".moe.experts.routed_experts.{base_layer}w13_weight",
640 + ".moe.gate_proj.weight",
641 + "w1",
642 + ),
643 + (
644 + f".moe.experts.routed_experts.{base_layer}w13_weight",
645 + ".moe.up_proj.weight",
646 + "w3",
647 + ),
648 + (
649 + f".moe.experts.routed_experts.{base_layer}w2_weight",
650 + ".moe.down_proj.weight",
651 + "w2",
652 + ),
653 + (
654 + f".moe.experts.routed_experts.{base_layer}w13_weight_scale_2",
655 ".moe.gate_proj.weight_scale_2",
656 "w1",
657 ),
658 (
647 - f".moe.experts.{base_layer}w13_weight_scale_2",
659 + f".moe.experts.routed_experts.{base_layer}w13_weight_scale_2",
660 ".moe.up_proj.weight_scale_2",
661 "w3",
662 ),
663 (
652 - f".moe.experts.{base_layer}w2_weight_scale_2",
664 + f".moe.experts.routed_experts.{base_layer}w2_weight_scale_2",
665 ".moe.down_proj.weight_scale_2",
666 "w2",
667 ),
668 (
657 - f".moe.experts.{base_layer}w13_weight_scale",
669 + f".moe.experts.routed_experts.{base_layer}w13_weight_scale",
670 ".moe.gate_proj.weight_scale",
671 "w1",
672 ),
673 (
662 - f".moe.experts.{base_layer}w13_weight_scale",
674 + f".moe.experts.routed_experts.{base_layer}w13_weight_scale",
675 ".moe.up_proj.weight_scale",
676 "w3",
677 ),
678 (
667 - f".moe.experts.{base_layer}w2_weight_scale",
679 + f".moe.experts.routed_experts.{base_layer}w2_weight_scale",
680 ".moe.down_proj.weight_scale",
681 "w2",
682 ),
@@ -672,17 +684,17 @@ class Step3p5Model(nn.Module):
684 # input scales are stored as moe.{gate,up,down}_proj.input_scale
685 # rather than the standard per-expert format handled generically.
686 (
675 - f".moe.experts.{base_layer}w13_input_scale",
687 + f".moe.experts.routed_experts.{base_layer}w13_input_scale",
688 ".moe.gate_proj.input_scale",
689 "w1",
690 ),
691 (
680 - f".moe.experts.{base_layer}w13_input_scale",
692 + f".moe.experts.routed_experts.{base_layer}w13_input_scale",
693 ".moe.up_proj.input_scale",
694 "w3",
695 ),
696 (
685 - f".moe.experts.{base_layer}w2_input_scale",
697 + f".moe.experts.routed_experts.{base_layer}w2_input_scale",
698 ".moe.down_proj.input_scale",
699 "w2",
700 ),
vllm/models/deepseek_v4/quant_config.py
+2 -6
@@ -8,7 +8,6 @@ from typing import TYPE_CHECKING
8
9 from vllm.config import get_current_vllm_config
10 from vllm.model_executor.layers.fused_moe import (
11 - MoERunner,
11 RoutedExperts,
12 UnquantizedFusedMoEMethod,
13 )
@@ -133,7 +132,7 @@ class DeepseekV4FP8Config(Fp8Config):
132 return None
133
134 def get_quant_method(self, layer, prefix):
136 - if isinstance(layer, (MoERunner, RoutedExperts)):
135 + if isinstance(layer, RoutedExperts):
136 if is_layer_skipped(
137 prefix=prefix,
138 ignored_layers=self.ignored_layers,
@@ -156,9 +155,6 @@ class DeepseekV4FP8Config(Fp8Config):
155 return super().get_quant_method(layer, prefix)
156
157 def is_mxfp4_quant(self, prefix, layer):
159 - if (
160 - not isinstance(layer, (MoERunner, RoutedExperts))
161 - or self.expert_dtype != "fp4"
162 - ):
158 + if not isinstance(layer, RoutedExperts) or self.expert_dtype != "fp4":
159 return False
160 return self.moe_quant_algo != "NVFP4"