99from aphrodite .distributed .parallel_state import get_tensor_model_parallel_rank , get_tensor_model_parallel_world_size
1010from aphrodite .lora .layers .base import BaseLayerWithLoRA
1111from aphrodite .modeling .layers .fused_moe import FusedMoE
12- from aphrodite .modeling .layers .fused_moe .config import (
13- FUSED_MOE_UNQUANTIZED_CONFIG ,
14- _get_config_dtype_str ,
15- mxfp4_w4a16_moe_quant_config ,
16- )
12+ from aphrodite .modeling .layers .fused_moe .config import _get_config_dtype_str
1713from aphrodite .modeling .layers .fused_moe .fused_marlin_moe import modular_marlin_fused_moe
1814from aphrodite .modeling .layers .fused_moe .fused_moe import modular_triton_fused_moe , try_get_optimal_moe_config
19- from aphrodite .quantization .mxfp4 import Mxfp4Config
2015
2116
2217class FusedMoEWithLoRA (BaseLayerWithLoRA ):
2318 def __init__ (self , base_layer : FusedMoE ) -> None :
2419 super ().__init__ ()
2520 self .base_layer = base_layer
21+
22+ assert not self .base_layer .use_ep , "EP support for Fused MoE LoRA is not implemented yet."
2623 self .tp_size = get_tensor_model_parallel_world_size ()
2724 self .tp_rank = get_tensor_model_parallel_rank ()
2825 self .device = base_layer .w2_weight .device
@@ -32,17 +29,8 @@ def _inject_lora_into_fused_moe(self):
3229 moe_state_dict = {}
3330 top_k = self .base_layer .top_k
3431
35- if self .base_layer .quant_config is None :
36- quant_config = FUSED_MOE_UNQUANTIZED_CONFIG
37- elif not isinstance (self .base_layer .quant_config , Mxfp4Config ):
38- quant_config = self .base_layer .quant_config
39- else :
40- quant_config = mxfp4_w4a16_moe_quant_config (
41- w1_bias = self .base_layer .w13_bias ,
42- w2_bias = self .base_layer .w2_bias ,
43- w1_scale = self .base_layer .w13_weight_scale ,
44- w2_scale = self .base_layer .w2_weight_scale ,
45- )
32+ self .base_layer .ensure_moe_quant_config_init ()
33+ quant_config = self .base_layer .quant_method .moe_quant_config
4634
4735 m_fused_moe_fn = (
4836 modular_triton_fused_moe (quant_config , shared_experts = self .base_layer .shared_experts )
@@ -70,7 +58,6 @@ def wrapper(*args, **kwargs):
7058 hidden_states = moe_state_dict ["hidden_states" ]
7159 topk_weights = moe_state_dict ["topk_weights" ]
7260 curr_topk_ids = moe_state_dict ["topk_ids" ]
73- global_num_experts = moe_state_dict ["global_num_experts" ]
7461 expert_map = moe_state_dict ["expert_map" ]
7562
7663 config_dtype = _get_config_dtype_str (
@@ -102,7 +89,7 @@ def wrapper(*args, **kwargs):
10289 curr_topk_ids ,
10390 num_tokens ,
10491 config ["BLOCK_SIZE_M" ],
105- global_num_experts ,
92+ self . base_layer . local_num_experts ,
10693 max_loras ,
10794 expert_map ,
10895 )
@@ -210,12 +197,10 @@ def create_lora_weights(
210197 ) -> None :
211198 """Initializes lora matrices."""
212199
213- assert not self .base_layer .use_ep , "EP support for Fused MoE LoRA is not implemented yet."
214-
215200 self .w1_lora_a_stacked = torch .zeros (
216201 (
217202 max_loras ,
218- self .base_layer .global_num_experts ,
203+ self .base_layer .local_num_experts ,
219204 lora_config .max_lora_rank ,
220205 self .base_layer .hidden_size ,
221206 ),
@@ -225,7 +210,7 @@ def create_lora_weights(
225210 self .w1_lora_b_stacked = torch .zeros (
226211 (
227212 max_loras ,
228- self .base_layer .global_num_experts ,
213+ self .base_layer .local_num_experts ,
229214 self .base_layer .intermediate_size_per_partition ,
230215 lora_config .max_lora_rank ,
231216 ),
@@ -236,7 +221,7 @@ def create_lora_weights(
236221 self .w2_lora_a_stacked = torch .zeros (
237222 (
238223 max_loras ,
239- self .base_layer .global_num_experts ,
224+ self .base_layer .local_num_experts ,
240225 lora_config .max_lora_rank ,
241226 self .base_layer .intermediate_size_per_partition ,
242227 ),
@@ -246,7 +231,7 @@ def create_lora_weights(
246231 self .w2_lora_b_stacked = torch .zeros (
247232 (
248233 max_loras ,
249- self .base_layer .global_num_experts ,
234+ self .base_layer .local_num_experts ,
250235 self .base_layer .hidden_size ,
251236 lora_config .max_lora_rank ,
252237 ),
@@ -257,7 +242,7 @@ def create_lora_weights(
257242 self .w3_lora_a_stacked = torch .zeros (
258243 (
259244 max_loras ,
260- self .base_layer .global_num_experts ,
245+ self .base_layer .local_num_experts ,
261246 lora_config .max_lora_rank ,
262247 self .base_layer .hidden_size ,
263248 ),
@@ -267,7 +252,7 @@ def create_lora_weights(
267252 self .w3_lora_b_stacked = torch .zeros (
268253 (
269254 max_loras ,
270- self .base_layer .global_num_experts ,
255+ self .base_layer .local_num_experts ,
271256 self .base_layer .intermediate_size_per_partition ,
272257 lora_config .max_lora_rank ,
273258 ),
@@ -280,7 +265,7 @@ def create_lora_weights(
280265 self .lora_a_stacked = []
281266 self .lora_b_stacked = []
282267 for lora_id in range (max_loras ):
283- for experts_id in range (self .base_layer .global_num_experts ):
268+ for experts_id in range (self .base_layer .local_num_experts ):
284269 # gate_proj,down_proj,up_proj
285270 self .lora_a_stacked .append (self .w1_lora_a_stacked [lora_id ][experts_id ])
286271 self .lora_a_stacked .append (self .w2_lora_a_stacked [lora_id ][experts_id ])
0 commit comments