mirror of
https://github.com/vllm-project/vllm.git
synced 2026-08-17 11:10:16 +00:00
[XPU][MoE] support block_fp8_moe on xpu (#42139)
Signed-off-by: Zhu, Zufang <[email protected]> Signed-off-by: zofia <[email protected]>
This commit is contained in:
@@ -40,7 +40,8 @@ steps:
|
||||
python3 examples/basic/offline_inference/generate.py --model superjob/Qwen3-4B-Instruct-2507-GPTQ-Int4 --block-size 64 --enforce-eager --max-model-len 8192 &&
|
||||
python3 examples/basic/offline_inference/generate.py --model ibm-research/PowerMoE-3b --block-size 64 --enforce-eager -tp 2 &&
|
||||
python3 examples/basic/offline_inference/generate.py --model ibm-research/PowerMoE-3b --block-size 64 --enforce-eager -tp 2 --enable-expert-parallel &&
|
||||
python3 examples/basic/offline_inference/generate.py --model superjob/Qwen3-4B-Instruct-2507-GPTQ-Int4 --max-model-len 8192
|
||||
python3 examples/basic/offline_inference/generate.py --model superjob/Qwen3-4B-Instruct-2507-GPTQ-Int4 --max-model-len 8192 &&
|
||||
VLLM_XPU_FUSED_MOE_USE_REF=1 python3 examples/basic/offline_inference/generate.py --model Qwen/Qwen3-30B-A3B-Instruct-2507-FP8 --enforce-eager -tp 2
|
||||
'
|
||||
- label: "XPU V1 test"
|
||||
depends_on:
|
||||
|
||||
@@ -14,7 +14,9 @@ from vllm.model_executor.layers.fused_moe.topk_weight_and_reduce import (
|
||||
)
|
||||
from vllm.model_executor.layers.quantization.utils.quant_utils import (
|
||||
QuantKey,
|
||||
kFp8Dynamic128Sym,
|
||||
kFp8DynamicTensorSym,
|
||||
kFp8Static128BlockSym,
|
||||
kFp8StaticTensorSym,
|
||||
kInt4Static,
|
||||
kMxfp4Static,
|
||||
@@ -62,6 +64,7 @@ class XPUExperts(mk.FusedMoEExpertsModular):
|
||||
self.is_fp8 = False
|
||||
self.is_int4 = False
|
||||
self.is_mxfp4 = False
|
||||
self.is_block_fp8 = False
|
||||
self.is_mxfp8 = False
|
||||
self.fused_moe_impl: XpuFusedMoe | None = None
|
||||
|
||||
@@ -171,6 +174,7 @@ class XPUExperts(mk.FusedMoEExpertsModular):
|
||||
is_int4=self.is_int4,
|
||||
is_mxfp4=self.is_mxfp4,
|
||||
is_mxfp8=self.is_mxfp8,
|
||||
is_block_fp8=self.is_block_fp8,
|
||||
)
|
||||
assert self.fused_moe_impl is not None
|
||||
self.fused_moe_impl.apply(
|
||||
@@ -238,6 +242,33 @@ class XPUExpertsMxfp8(XPUExpertsFp8):
|
||||
return (weight_key, activation_key) in SUPPORTED_W_A
|
||||
|
||||
|
||||
class XPUExpertsBlockFp8(XPUExperts):
|
||||
def __init__(
|
||||
self,
|
||||
moe_config: FusedMoEConfig,
|
||||
quant_config: FusedMoEQuantConfig,
|
||||
max_num_tokens: int | None = None,
|
||||
num_dispatchers: int | None = None,
|
||||
):
|
||||
super().__init__(
|
||||
moe_config,
|
||||
quant_config,
|
||||
max_num_tokens,
|
||||
num_dispatchers,
|
||||
)
|
||||
self.is_block_fp8 = True
|
||||
|
||||
@staticmethod
|
||||
def _supports_quant_scheme(
|
||||
weight_key: QuantKey | None,
|
||||
activation_key: QuantKey | None,
|
||||
) -> bool:
|
||||
SUPPORTED_W_A = [
|
||||
(kFp8Static128BlockSym, kFp8Dynamic128Sym),
|
||||
]
|
||||
return (weight_key, activation_key) in SUPPORTED_W_A
|
||||
|
||||
|
||||
class XPUExpertsWNA16(XPUExperts):
|
||||
"""W4A16 INT4-symmetric MoE backed by `xpu_fused_moe(is_int4=True)`.
|
||||
|
||||
|
||||
@@ -184,11 +184,12 @@ def backend_to_kernel_cls(
|
||||
|
||||
elif backend == Fp8MoeBackend.XPU:
|
||||
from vllm.model_executor.layers.fused_moe.experts.xpu_moe import (
|
||||
XPUExpertsBlockFp8,
|
||||
XPUExpertsFp8,
|
||||
XPUExpertsMxfp8,
|
||||
)
|
||||
|
||||
return [XPUExpertsFp8, XPUExpertsMxfp8]
|
||||
return [XPUExpertsFp8, XPUExpertsMxfp8, XPUExpertsBlockFp8]
|
||||
|
||||
elif backend == Fp8MoeBackend.CPU:
|
||||
from vllm.model_executor.layers.fused_moe.experts.cpu_moe import (
|
||||
|
||||
Reference in New Issue
Block a user