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"