[1/N] MoE Refactor: refactor select_experts (#7966)
This commit is contained in:
@@ -40,6 +40,7 @@ from sglang.srt.layers.linear import (
|
||||
RowParallelLinear,
|
||||
)
|
||||
from sglang.srt.layers.moe.fused_moe_triton import FusedMoE
|
||||
from sglang.srt.layers.moe.topk import TopK
|
||||
from sglang.srt.layers.quantization.base_config import QuantizationConfig
|
||||
from sglang.srt.layers.radix_attention import RadixAttention
|
||||
from sglang.srt.layers.rotary_embedding import get_rope
|
||||
@@ -103,14 +104,17 @@ class Llama4MoE(nn.Module):
|
||||
prefix=add_prefix("router", prefix),
|
||||
)
|
||||
|
||||
self.topk = TopK(
|
||||
top_k=self.top_k,
|
||||
renormalize=False,
|
||||
custom_routing_function=Llama4MoE.custom_routing_function,
|
||||
)
|
||||
|
||||
self.experts = FusedMoE(
|
||||
num_experts=config.num_local_experts,
|
||||
top_k=config.num_experts_per_tok,
|
||||
hidden_size=config.hidden_size,
|
||||
custom_routing_function=Llama4MoE.custom_routing_function,
|
||||
intermediate_size=intermediate_size_moe,
|
||||
reduce_results=False,
|
||||
renormalize=False,
|
||||
quant_config=quant_config,
|
||||
apply_router_weight_on_input=True,
|
||||
prefix=add_prefix("experts", prefix),
|
||||
@@ -147,10 +151,8 @@ class Llama4MoE(nn.Module):
|
||||
# router_scores: [num_tokens, num_experts]
|
||||
router_logits, _ = self.router(hidden_states)
|
||||
shared_out = self.shared_expert(hidden_states)
|
||||
routed_out = self.experts(
|
||||
hidden_states=hidden_states,
|
||||
router_logits=router_logits,
|
||||
)
|
||||
topk_output = self.topk(hidden_states, router_logits)
|
||||
routed_out = self.experts(hidden_states, topk_output)
|
||||
return shared_out, routed_out
|
||||
|
||||
def _forward_core_shared_routed_overlap(self, hidden_states):
|
||||
@@ -163,10 +165,8 @@ class Llama4MoE(nn.Module):
|
||||
with self.device_module.stream(alt_stream):
|
||||
# router_scores: [num_tokens, num_experts]
|
||||
router_logits, _ = self.router(hidden_states)
|
||||
routed_out = self.experts(
|
||||
hidden_states=hidden_states,
|
||||
router_logits=router_logits,
|
||||
)
|
||||
topk_output = self.topk(hidden_states, router_logits)
|
||||
routed_out = self.experts(hidden_states, topk_output)
|
||||
self.device_module.current_stream().wait_stream(alt_stream)
|
||||
|
||||
return shared_out, routed_out
|
||||
|
||||
Reference in New Issue
Block a user