[XPU]remove is_xxx from moe class and bump up kernels (#48079)

Signed-off-by: mayuyuace <qiming1.zhang@intel.com> Co-authored-by: Kunshang Ji <kunshang.ji@intel.com>

Qiming Zhang committed Jul 11, 2026 at 02:27 UTC 0b6636cbcbd3d40cb8c36459a3ff0f1f3c9b48a7
3 files changed +7 -37
requirements/xpu.txt
+1 -1
@@ -18,4 +18,4 @@ torchvision
18 torchcodec >= 0.14 # Required for the torchcodec video decoding backend
19
20 auto_round_lib>=0.14.0
21 -vllm_xpu_kernels @ https://github.com/vllm-project/vllm-xpu-kernels/releases/download/v0.1.10.1/vllm_xpu_kernels-0.1.10.1-cp38-abi3-manylinux_2_28_x86_64.whl
21 +vllm_xpu_kernels @ https://github.com/vllm-project/vllm-xpu-kernels/releases/download/v0.1.11/vllm_xpu_kernels-0.1.11-cp38-abi3-manylinux_2_28_x86_64.whl
vllm/_custom_ops.py
-12
@@ -2277,18 +2277,6 @@ def topk_sigmoid(
2277 e_score_correction_bias: torch.Tensor | None = None,
2278 routed_scaling_factor: float = 1.0,
2279 ) -> None:
2280 - if current_platform.is_xpu():
2281 - # xpu doesn't support routed_scaling_factor currently, will revert
2282 - # in next vllm-xpu-kernels bumpup
2283 - torch.ops._moe_C.topk_sigmoid(
2284 - topk_weights,
2285 - topk_ids,
2286 - token_expert_indices,
2287 - gating_output,
2288 - renormalize,
2289 - e_score_correction_bias,
2290 - )
2291 - return
2280 torch.ops._moe_C.topk_sigmoid(
2281 topk_weights,
2282 topk_ids,
vllm/model_executor/layers/fused_moe/experts/xpu_moe.py
+6 -24
@@ -62,11 +62,6 @@ class XPUExperts(mk.FusedMoEExpertsModular):
62 max_num_tokens,
63 num_dispatchers,
64 )
65 - self.is_fp8 = False
66 - self.is_int4 = False
67 - self.is_mxfp4 = False
68 - self.is_block_fp8 = False
69 - self.is_mxfp8 = False
65 self.gemm1_clamp_limit = quant_config.gemm1_clamp_limit
66 self.fused_moe_impl: XpuFusedMoe | None = None
67
@@ -149,17 +144,14 @@ class XPUExperts(mk.FusedMoEExpertsModular):
144 expert_tokens_meta: mk.ExpertTokensMetadata | None,
145 apply_router_weight_on_input: bool,
146 ):
152 - # The kernel takes is_fp8/is_int4/is_mxfp4 as independent booleans.
153 - # In this hierarchy each subclass flips exactly one to True; assert
154 - # the invariant so a future subclass that sets two doesn't silently
155 - # miscompute (kernel-side priority is undocumented).
156 - assert sum([self.is_fp8, self.is_int4, self.is_mxfp4]) <= 1, (
157 - "XPUExperts: at most one of is_fp8, is_int4, is_mxfp4 may be True; "
158 - f"got is_fp8={self.is_fp8}, is_int4={self.is_int4}, "
159 - f"is_mxfp4={self.is_mxfp4}."
160 - )
147 if self.fused_moe_impl is None:
148 topk = topk_ids.size(-1)
149 + if (
150 + self.quant_config is not None
151 + and self.quant_config.weight_quant_dtype == "mxfp4"
152 + ):
153 + w1 = w1.view(torch.float4_e2m1fn_x2)
154 + w2 = w2.view(torch.float4_e2m1fn_x2)
155 self.fused_moe_impl = XpuFusedMoe(
156 w13=w1,
157 w13_scales=self.w1_scale,
@@ -172,11 +164,6 @@ class XPUExperts(mk.FusedMoEExpertsModular):
164 num_experts=self.moe_config.num_local_experts,
165 ep_rank=self.moe_config.ep_rank,
166 ep_size=self.moe_config.ep_size,
175 - is_fp8=self.is_fp8,
176 - is_int4=self.is_int4,
177 - is_mxfp4=self.is_mxfp4,
178 - is_mxfp8=self.is_mxfp8,
179 - is_block_fp8=self.is_block_fp8,
167 gemm1_clamp_limit=self.gemm1_clamp_limit,
168 )
169 assert self.fused_moe_impl is not None
@@ -202,7 +189,6 @@ class XPUExpertsFp8(XPUExperts):
189 max_num_tokens,
190 num_dispatchers,
191 )
205 - self.is_fp8 = True
192
193 @staticmethod
194 def _supports_quant_scheme(
@@ -231,7 +217,6 @@ class XPUExpertsMxFp8(XPUExpertsFp8):
217 num_dispatchers,
218 )
219 assert quant_config.quant_dtype == "mxfp8"
234 - self.is_mxfp8 = True
220
221 @staticmethod
222 def _supports_quant_scheme(
@@ -259,7 +244,6 @@ class XPUExpertsBlockFp8(XPUExperts):
244 max_num_tokens,
245 num_dispatchers,
246 )
262 - self.is_block_fp8 = True
247
248 @staticmethod
249 def _supports_quant_scheme(
@@ -298,7 +282,6 @@ class XPUExpertsWNA16(XPUExperts):
282 max_num_tokens,
283 num_dispatchers,
284 )
301 - self.is_int4 = True
285
286 @staticmethod
287 def _supports_quant_scheme(
@@ -325,7 +308,6 @@ class XPUExpertsMxFp4(XPUExperts):
308 max_num_tokens,
309 num_dispatchers,
310 )
328 - self.is_mxfp4 = True
311
312 @staticmethod
313 def _supports_quant_scheme(