From bf4f633b4cb80e04ba28d2179efe1662d97a6fe0 Mon Sep 17 00:00:00 2001 From: Chaojun Zhang Date: Mon, 27 Jul 2026 11:22:29 +0800 Subject: [PATCH] [XPU] Enable QK Norm + RoPE fusion pass on XPU (#49394) Signed-off-by: Chaojun Zhang Co-authored-by: Kunshang Ji --- .buildkite/intel_jobs/misc_intel.yaml | 22 ++++++++++++++++++++++ vllm/compilation/passes/pass_manager.py | 4 ++-- vllm/platforms/xpu.py | 1 - 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/.buildkite/intel_jobs/misc_intel.yaml b/.buildkite/intel_jobs/misc_intel.yaml index 5ce12269fc..07239e3b23 100644 --- a/.buildkite/intel_jobs/misc_intel.yaml +++ b/.buildkite/intel_jobs/misc_intel.yaml @@ -262,3 +262,25 @@ steps: pytest -v -s detokenizer && pytest -v -s -m "not cpu_test" ./multimodal && pytest -v -s utils_ --ignore=utils_/test_mem_utils.py' + +- label: Fusion Unit Tests + timeout_in_minutes: 30 + device: intel_gpu + agent_tags: + label: production + gpu: 1+ + mem: 16+ + no_plugin: true + working_dir: "." + env: + REGISTRY: "public.ecr.aws/q9t5s3a7" + REPO: "vllm-ci-test-repo" + VLLM_TEST_DEVICE: "xpu" + source_file_dependencies: + - vllm/compilation/ + - tests/compile/passes/test_qk_norm_rope_fusion.py + commands: + - >- + bash .buildkite/scripts/hardware_ci/run-intel-test.sh + 'cd tests && + pytest -v -s compile/passes/test_qk_norm_rope_fusion.py' \ No newline at end of file diff --git a/vllm/compilation/passes/pass_manager.py b/vllm/compilation/passes/pass_manager.py index 2fe863189c..127be115c5 100644 --- a/vllm/compilation/passes/pass_manager.py +++ b/vllm/compilation/passes/pass_manager.py @@ -30,19 +30,19 @@ if rocm_aiter_ops.is_enabled(): ) if current_platform.is_cuda_alike() or current_platform.is_xpu(): + from .fusion.qk_norm_rope_fusion import QKNormRoPEFusionPass from .fusion.sequence_parallelism import SequenceParallelismPass + from .utility.split_coalescing import SplitCoalescingPass if current_platform.is_cuda_alike(): from .fusion.act_quant_fusion import ActivationQuantFusionPass from .fusion.attn_quant_fusion import AttnQuantFusionPass from .fusion.mla_attn_quant_fusion import MLAAttnQuantFusionPass from .fusion.mla_rope_kvcache_cat_fusion import MLARoPEKVCacheCatFusionPass - from .fusion.qk_norm_rope_fusion import QKNormRoPEFusionPass from .fusion.qk_norm_rope_kvcache_fusion import QkNormRopeKvCacheFusionPass from .fusion.rms_quant_fusion import RMSNormQuantFusionPass from .fusion.rope_kvcache_fusion import RopeKVCacheFusionPass from .utility.scatter_split_replace import ScatterSplitReplacementPass - from .utility.split_coalescing import SplitCoalescingPass if current_platform.is_cuda(): from .fusion.allreduce_rms_fusion import AllReduceFusionPass diff --git a/vllm/platforms/xpu.py b/vllm/platforms/xpu.py index e673713330..e9d1a905a4 100644 --- a/vllm/platforms/xpu.py +++ b/vllm/platforms/xpu.py @@ -304,7 +304,6 @@ class XPUPlatform(Platform): "fuse_act_padding": "Activation + padding fusion", "fuse_rope_kvcache": "RoPE + KV cache fusion", "fuse_rope_kvcache_cat_mla": "RoPE + KV cache + MLA fusion", - "enable_qk_norm_rope_fusion": "QK Norm + RoPE fusion", } if compilation_config.mode != CompilationMode.NONE: for flag, feature_name in fusion_passes_to_disable.items():