Skip to content

[TEST][XPU][CI] disable xpu tests for nonexistent input norm kernels - #59568

Merged
jikunshang merged 4 commits into
vllm-project:mainfrom
microslaw:microslaw/fix-xpu-multimodal-input-norm
Oct 3, 2026
Merged

jikunshang merged 4 commits into
vllm-project:mainfrom
microslaw:microslaw/fix-xpu-multimodal-input-norm

Conversation

@microslaw

@microslaw microslaw commented Oct 1, 2026 •

Copy link
Copy Markdown
Contributor

Overview

#59195 introduced override of FusedMMInputNorm.enabled(), now it always returns True; This forces tests of FusedMMInputNorm on float based XPU kernels that do not exist. This pr disables those tests.

Claims

Stop testing missing kernels, keep the working uint8 path

Validation

python3 -m pytest -v -rs -p vllm._xpu_ops tests/model_executor/layers/test_mm_input_norm.py
tee /results/mmnorm/test_mm_input_norm.log
W1001 07:35:33.549000 200 torch/_opaque_base.py:6] torch._opaque_base is deprecated, use torch._custom_class_base instead
W1001 07:35:33.550000 200 torch/_library/opaque_object.py:288] register_opaque_type is deprecated, use register_custom_class instead
W1001 07:35:33.551000 200 torch/_library/opaque_object.py:211] typ='value' is deprecated, use typ='constant' instead
============================= test session starts ==============================
platform linux -- Python 3.12.3, pytest-9.1.1, pluggy-1.6.0 -- /opt/venv/bin/python3
cachedir: .pytest_cache
hypothesis profile 'default'
rootdir: /workspace/local
configfile: pyproject.toml
plugins: anyio-4.14.2, shard-0.1.2, asyncio-1.4.0, timeout-2.4.0, rerunfailures-16.6, schemathesis-4.24.3, forked-1.7.5, hypothesis-6.165.10, cov-7.1.0
asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
collecting ... collected 29 items
Running 29 items in this shard: tests/model_executor/layers/test_mm_input_norm.py::TestFusedMMInputNormModule::test_matches_reference_above_cudnn_grid_limit, tests/model_executor/layers/test_mm_input_norm.py::TestFusedMMInputNormModule::test_identity_passthrough, tests/model_executor/layers/test_mm_input_norm.py::TestFusedMMInputNormDtypes::test_dtype_combinations[in_dtype0-out_dtype0], tests/model_executor/layers/test_mm_input_norm.py::TestFusedMMInputNormDtypes::test_dtype_combinations[in_dtype1-out_dtype1], tests/model_executor/layers/test_mm_input_norm.py::TestFusedMMInputNormDtypes::test_dtype_combinations[in_dtype2-out_dtype2], tests/model_executor/layers/test_mm_input_norm.py::TestFusedMMInputNormDtypes::test_dtype_combinations[in_dtype3-out_dtype3], tests/model_executor/layers/test_mm_input_norm.py::TestFusedMMInputNormDtypes::test_dtype_combinations[in_dtype4-out_dtype4], tests/model_executor/layers/test_mm_input_norm.py::TestFusedMMInputNormDtypes::test_dtype_combinations[in_dtype5-out_dtype5], tests/model_executor/layers/test_mm_input_norm.py::TestFusedMMInputNormDtypes::test_dtype_combinations[in_dtype6-out_dtype6], tests/model_executor/layers/test_mm_input_norm.py::TestFusedMMInputNormDtypes::test_dtype_combinations[in_dtype7-out_dtype7], tests/model_executor/layers/test_mm_input_norm.py::TestFusedMMInputNormShapes::test_channel_variants[1], tests/model_executor/layers/test_mm_input_norm.py::TestFusedMMInputNormShapes::test_channel_variants[3], tests/model_executor/layers/test_mm_input_norm.py::TestFusedMMInputNormShapes::test_channel_variants[4], tests/model_executor/layers/test_mm_input_norm.py::TestFusedMMInputNormShapes::test_block_boundaries[1], tests/model_executor/layers/test_mm_input_norm.py::TestFusedMMInputNormShapes::test_block_boundaries[2048], tests/model_executor/layers/test_mm_input_norm.py::TestFusedMMInputNormInputHandling::test_non_contiguous_input_matches_reference, tests/model_executor/layers/test_mm_input_norm.py::TestFusedMMInputNormKernel::test_channel_boundary_crossing[1-1-1], tests/model_executor/layers/test_mm_input_norm.py::TestFusedMMInputNormKernel::test_channel_boundary_crossing[1-3-1], tests/model_executor/layers/test_mm_input_norm.py::TestFusedMMInputNormKernel::test_channel_boundary_crossing[3-3-7], tests/model_executor/layers/test_mm_input_norm.py::TestFusedMMInputNormKernel::test_channel_boundary_crossing[2-8-63], tests/model_executor/layers/test_mm_input_norm.py::TestFusedMMInputNormKernel::test_channel_boundary_crossing[4-3-1000], tests/model_executor/layers/test_mm_input_norm.py::TestFusedMMInputNormKernel::test_non_contiguous_inputs_materialized, tests/model_executor/layers/test_mm_input_norm.py::TestFusedMMInputNormKernel::test_rejects_mismatched_output_shape, tests/model_executor/layers/test_mm_input_norm.py::TestFusedMMInputNormConstruction::test_input_norm_is_always_enabled, tests/model_executor/layers/test_mm_input_norm.py::TestFusedMMInputNormConstruction::test_identity_config_buffers, tests/model_executor/layers/test_mm_input_norm.py::TestFusedMMInputNormConstruction::test_non_identity_buffers, tests/model_executor/layers/test_mm_input_norm.py::TestFusedMMInputNormConstruction::test_is_identity_params, tests/model_executor/layers/test_mm_input_norm.py::TestFusedMMInputNormConstruction::test_buffers_initialized_on_default_device[image_mean0-image_std0-1.0], tests/model_executor/layers/test_mm_input_norm.py::TestFusedMMInputNormConstruction::test_buffers_initialized_on_default_device[image_mean1-image_std1-0.00392156862745098]

tests/model_executor/layers/test_mm_input_norm.py::TestFusedMMInputNormModule::test_matches_reference_above_cudnn_grid_limit SKIPPED [  3%]
tests/model_executor/layers/test_mm_input_norm.py::TestFusedMMInputNormModule::test_identity_passthrough PASSED [  6%]
tests/model_executor/layers/test_mm_input_norm.py::TestFusedMMInputNormDtypes::test_dtype_combinations[in_dtype0-out_dtype0] SKIPPED [ 10%]
tests/model_executor/layers/test_mm_input_norm.py::TestFusedMMInputNormDtypes::test_dtype_combinations[in_dtype1-out_dtype1] SKIPPED [ 13%]
tests/model_executor/layers/test_mm_input_norm.py::TestFusedMMInputNormDtypes::test_dtype_combinations[in_dtype2-out_dtype2] SKIPPED [ 17%]
tests/model_executor/layers/test_mm_input_norm.py::TestFusedMMInputNormDtypes::test_dtype_combinations[in_dtype3-out_dtype3] SKIPPED [ 20%]
tests/model_executor/layers/test_mm_input_norm.py::TestFusedMMInputNormDtypes::test_dtype_combinations[in_dtype4-out_dtype4] SKIPPED [ 24%]
tests/model_executor/layers/test_mm_input_norm.py::TestFusedMMInputNormDtypes::test_dtype_combinations[in_dtype5-out_dtype5] SKIPPED [ 27%]
tests/model_executor/layers/test_mm_input_norm.py::TestFusedMMInputNormDtypes::test_dtype_combinations[in_dtype6-out_dtype6] PASSED [ 31%]
tests/model_executor/layers/test_mm_input_norm.py::TestFusedMMInputNormDtypes::test_dtype_combinations[in_dtype7-out_dtype7] PASSED [ 34%]
tests/model_executor/layers/test_mm_input_norm.py::TestFusedMMInputNormShapes::test_channel_variants[1] SKIPPED [ 37%]
tests/model_executor/layers/test_mm_input_norm.py::TestFusedMMInputNormShapes::test_channel_variants[3] SKIPPED [ 41%]
tests/model_executor/layers/test_mm_input_norm.py::TestFusedMMInputNormShapes::test_channel_variants[4] SKIPPED [ 44%]
tests/model_executor/layers/test_mm_input_norm.py::TestFusedMMInputNormShapes::test_block_boundaries[1] SKIPPED [ 48%]
tests/model_executor/layers/test_mm_input_norm.py::TestFusedMMInputNormShapes::test_block_boundaries[2048] SKIPPED [ 51%]
tests/model_executor/layers/test_mm_input_norm.py::TestFusedMMInputNormInputHandling::test_non_contiguous_input_matches_reference SKIPPED [ 55%]
tests/model_executor/layers/test_mm_input_norm.py::TestFusedMMInputNormKernel::test_channel_boundary_crossing[1-1-1] PASSED [ 58%]
tests/model_executor/layers/test_mm_input_norm.py::TestFusedMMInputNormKernel::test_channel_boundary_crossing[1-3-1] PASSED [ 62%]
tests/model_executor/layers/test_mm_input_norm.py::TestFusedMMInputNormKernel::test_channel_boundary_crossing[3-3-7] PASSED [ 65%]
tests/model_executor/layers/test_mm_input_norm.py::TestFusedMMInputNormKernel::test_channel_boundary_crossing[2-8-63] PASSED [ 68%]
tests/model_executor/layers/test_mm_input_norm.py::TestFusedMMInputNormKernel::test_channel_boundary_crossing[4-3-1000] PASSED [ 72%]
tests/model_executor/layers/test_mm_input_norm.py::TestFusedMMInputNormKernel::test_non_contiguous_inputs_materialized PASSED [ 75%]
tests/model_executor/layers/test_mm_input_norm.py::TestFusedMMInputNormKernel::test_rejects_mismatched_output_shape PASSED [ 79%]
tests/model_executor/layers/test_mm_input_norm.py::TestFusedMMInputNormConstruction::test_input_norm_is_always_enabled PASSED [ 82%]
tests/model_executor/layers/test_mm_input_norm.py::TestFusedMMInputNormConstruction::test_identity_config_buffers PASSED [ 86%]
tests/model_executor/layers/test_mm_input_norm.py::TestFusedMMInputNormConstruction::test_non_identity_buffers PASSED [ 89%]
tests/model_executor/layers/test_mm_input_norm.py::TestFusedMMInputNormConstruction::test_is_identity_params PASSED [ 93%]
tests/model_executor/layers/test_mm_input_norm.py::TestFusedMMInputNormConstruction::test_buffers_initialized_on_default_device[image_mean0-image_std0-1.0] PASSED [ 96%]
tests/model_executor/layers/test_mm_input_norm.py::TestFusedMMInputNormConstruction::test_buffers_initialized_on_default_device[image_mean1-image_std1-0.00392156862745098] PASSED [100%]

=========================== short test summary info ============================
SKIPPED [1] tests/model_executor/layers/test_mm_input_norm.py:101: XPU fused kernel only accepts uint8 input
SKIPPED [6] tests/model_executor/layers/test_mm_input_norm.py:139: XPU fused kernel only accepts uint8 input
SKIPPED [3] tests/model_executor/layers/test_mm_input_norm.py:166: XPU fused kernel only accepts uint8 input
SKIPPED [2] tests/model_executor/layers/test_mm_input_norm.py:180: XPU fused kernel only accepts uint8 input
SKIPPED [1] tests/model_executor/layers/test_mm_input_norm.py:196: XPU fused kernel only accepts uint8 input
======================= 16 passed, 13 skipped in 13.28s ========================
+ python3 -m pytest -v -rs tests/models/multimodal/generation/test_qwen2_vl.py -k embeddings_input
+ tee /results/mmnorm/test_qwen2_vl.log
============================= test session starts ==============================
platform linux -- Python 3.12.3, pytest-9.1.1, pluggy-1.6.0 -- /opt/venv/bin/python3
cachedir: .pytest_cache
hypothesis profile 'default'
rootdir: /workspace/local
configfile: pyproject.toml
plugins: anyio-4.14.2, shard-0.1.2, asyncio-1.4.0, timeout-2.4.0, rerunfailures-16.6, schemathesis-4.24.3, forked-1.7.5, hypothesis-6.165.10, cov-7.1.0
asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
collecting ... collected 3 items
Running 3 items in this shard: tests/models/multimodal/generation/test_qwen2_vl.py::test_qwen2_vl_image_embeddings_input[10-128-half-Qwen/Qwen2-VL-2B-Instruct], tests/models/multimodal/generation/test_qwen2_vl.py::test_qwen2_vl_multiple_image_embeddings_input[10-128-half-Qwen/Qwen2-VL-2B-Instruct], tests/models/multimodal/generation/test_qwen2_vl.py::test_qwen2_vl_video_embeddings_input[10-128-half-Qwen/Qwen2-VL-2B-Instruct]

tests/models/multimodal/generation/test_qwen2_vl.py::test_qwen2_vl_image_embeddings_input[10-128-half-Qwen/Qwen2-VL-2B-Instruct] SKIPPED [ 33%]
tests/models/multimodal/generation/test_qwen2_vl.py::test_qwen2_vl_multiple_image_embeddings_input[10-128-half-Qwen/Qwen2-VL-2B-Instruct] SKIPPED [ 66%]
tests/models/multimodal/generation/test_qwen2_vl.py::test_qwen2_vl_video_embeddings_input[10-128-half-Qwen/Qwen2-VL-2B-Instruct] SKIPPED [100%]

=============================== warnings summary ===============================
<frozen importlib._bootstrap>:488
  <frozen importlib._bootstrap>:488: DeprecationWarning: builtin type SwigPyPacked has no __module__ attribute

<frozen importlib._bootstrap>:488
  <frozen importlib._bootstrap>:488: DeprecationWarning: builtin type SwigPyObject has no __module__ attribute

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
=========================== short test summary info ============================
SKIPPED [1] tests/models/multimodal/generation/test_qwen2_vl.py:343: XPU fused input norm only accepts uint8 input
SKIPPED [1] tests/models/multimodal/generation/test_qwen2_vl.py:382: XPU fused input norm only accepts uint8 input
SKIPPED [1] tests/models/multimodal/generation/test_qwen2_vl.py:422: XPU fused input norm only accepts uint8 input
======================== 3 skipped, 2 warnings in 0.13s ========================

Details


Pull Request Checklist
  • I used vLLM's /pr-checklist skill. (Mandatory for agents, optional for humans).

  • AI assistance was used during the creation of this PR.

  • Design Fit: Minimizes impact on core components, reuses existing functionality, and justifies added complexity.

  • Testing and Validation: Validates the change and ensures any added tests are meaningful and reliable, with CI coverage or documented CI resource constraints and validation performed outside CI.

  • Code Quality and Style: Keeps code and comments clear and concise, and updates relevant documentation and examples.

  • Pull Request Contents: Includes a brief summary and relevant links, supports claims with evidence, explains root causes and implementation trade-offs, and follows the contributing guide.

@claude claude Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Claude Code Review

This pull request is from a fork — automated review is disabled. A repository maintainer can comment @claude review to run a one-time review.

@mergify mergify Bot added multi-modality Related to multi-modality (#4194) qwen Related to Qwen models intel-gpu Related to Intel GPU labels Oct 1, 2026
@microslaw

Copy link
Copy Markdown
Contributor Author

/pr-checklist

@microslaw

Copy link
Copy Markdown
Contributor Author

@jikunshang could you take a look?

@jbyczkow jbyczkow left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Signed-off-by: Milosz Grunwald <milosz.grunwald@intel.com>
@microslaw
microslaw force-pushed the microslaw/fix-xpu-multimodal-input-norm branch from 5f299f8 to 1c259e2 Compare October 2, 2026 06:47
@mergify mergify Bot added the ci/build label Oct 2, 2026
@microslaw

Copy link
Copy Markdown
Contributor Author

as per request from @jikunshang I've changed the implementation from python decorator to pytest --deselect ...

@jikunshang

Copy link
Copy Markdown
Member

/ci run --allow-stale

@github-actions

github-actions Bot commented Oct 2, 2026

Copy link
Copy Markdown

✅ Triggered Buildkite CI #92575 for commit 373712b9908d.

⚠️ This PR is 2 commits behind upstream main. Running CI at your own risk because --allow-stale was requested; outdated CI configuration may cause failures. Before merging, merge or rebase onto the latest main, then rerun /ci run on the latest PR commit.

Signed-off-by: Milosz Grunwald <milosz.grunwald@intel.com>
@microslaw
microslaw force-pushed the microslaw/fix-xpu-multimodal-input-norm branch from 373712b to efe65c7 Compare October 2, 2026 11:41
@jikunshang

Copy link
Copy Markdown
Member

/ci run

@github-actions

github-actions Bot commented Oct 2, 2026

Copy link
Copy Markdown

✅ Triggered Buildkite CI #92635 for commit 6543a8016dc1.

@vllm-agent

Copy link
Copy Markdown
Collaborator

CI selector (shadow): 0 test steps (0 jobs) instead of 0 (0 jobs)

Shadow mode: this changes nothing about what CI runs. It shows what the evidence-based selector would pick for this PR, next to today's rules. How it works.

Feedback welcome: reply here if it would skip a step this change needs, or runs something unrelated.

steps (jobs) Today's rules Selector Would skip Would add
NVIDIA, CPU and others 0 (0) 0 (0) 0 (0) 0 (0)
AMD mirrors 0 (0) 0 (0) 0 (0) 0 (0)
Selector would run (0)

none

Would skip (today's rules run them) (0)

none

Would add (today's rules do not run them) (0)

none

AMD mirrors: would skip (0)

none

AMD mirrors: would add (0)

none

2 changed files · base c91dccc080 · head 6543a8016d · Python record: build 92561 at 4056c8ac1f · kernel record: table 4056c8a (build 92561), map 4056c8a · not counted: 10 build steps, 5 A100 steps the generator no longer emits, 0 optional steps the selector would also run

@jikunshang
jikunshang merged commit 8c3b720 into vllm-project:main Oct 3, 2026
20 checks passed
@yma11 yma11 mentioned this pull request Oct 3, 2026
6 tasks
yma11 added a commit to yma11/vllm that referenced this pull request Oct 9, 2026
…kernels (vllm-project#59568)"

This reverts commit 8c3b720.

Signed-off-by: Yan Ma <yan.ma@intel.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci/build intel-gpu Related to Intel GPU multi-modality Related to multi-modality (#4194) qwen Related to Qwen models

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants