[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(