[ROCm][CI] Skip Quark mxfp4 tests unless Quark version is compatible with Torch version (#46431)

Signed-off-by: Micah Williamson <micah.williamson@amd.com>

Micah Williamson committed Jun 23, 2026 at 09:26 UTC 156b12667cf5fbb93914f3646acc25dca378b420
2 files changed +34 -8
tests/evals/gsm8k/test_gsm8k_correctness.py
+21 -4
@@ -9,16 +9,30 @@ pytest -s -v tests/evals/gsm8k/test_gsm8k_correctness.py \
9 --config-list-file=configs/models-small.txt
10 """
11
12 +import importlib.metadata
13 import shlex
14 +from importlib.util import find_spec
15
16 import pytest
17 +import torch
18 import yaml
19 +from packaging import version
20
21 from tests.utils import RemoteOpenAIServer
22 from vllm.platforms import current_platform
23
24 from .gsm8k_eval import evaluate_gsm8k
25
26 +# MXFP4 via quark requires amd-quark >= 0.12 on torch >= 2.11.
27 +# Earlier torch releases work with older quark versions. See
28 +# https://github.com/amd/Quark/issues/34
29 +# TODO: Remove once amd-quark>=0.12.0
30 +QUARK_MXFP4_TORCH_COMPATIBLE = find_spec("quark") is not None and (
31 + version.parse(importlib.metadata.version("amd-quark")) >= version.parse("0.12.0")
32 + if version.parse(torch.__version__.split("+")[0]) >= version.parse("2.11")
33 + else True
34 +)
35 +
36
37 def run_gsm8k_eval(eval_config: dict, server_url: str) -> dict:
38 """Run GSM8K evaluation using our isolated script."""
@@ -88,16 +102,19 @@ def test_gsm8k_correctness(config_filename):
102 "Skipping DeepSeek-V3.2 and DeepSeek-R1 on ROCm platforms "
103 "due to agent pool disk space issues and pod evictions."
104 )
91 - if current_platform.is_rocm() and (
92 - "Qwen3.5-35B-A3B-MXFP4-AITER-TP2" in config_filename.name
93 - ):
105 + if current_platform.is_rocm() and ("Qwen3.5-35B-A3B-MXFP4" in config_filename.name):
106 from vllm.platforms.rocm import on_gfx950
107
96 - if not on_gfx950():
108 + if not on_gfx950() and "AITER-TP2" in config_filename.name:
109 pytest.skip(
110 "Skipping Qwen3.5-35B-A3B-MXFP4-AITER-TP2 on non-GFX950 platforms. "
111 "The quantization scheme is not supported on non-GFX950 platforms."
112 )
113 + if not QUARK_MXFP4_TORCH_COMPATIBLE:
114 + pytest.skip(
115 + "Skipping Qwen3.5-35B-A3B-MXFP4: amd-quark >= 0.12 is required "
116 + "on torch >= 2.11."
117 + )
118 # Parse server arguments from config (use shlex to handle quoted strings)
119 server_args_str = eval_config.get("server_args", "")
120 server_args = shlex.split(server_args_str) if server_args_str else []
tests/kernels/moe/test_ocp_mx_moe.py
+13 -4
@@ -13,9 +13,15 @@ from vllm._aiter_ops import is_aiter_found
13 from vllm.platforms import current_platform
14 from vllm.utils.flashinfer import has_flashinfer
15
16 -QUARK_MXFP4_AVAILABLE = find_spec("quark") is not None and version.parse(
17 - importlib.metadata.version("amd-quark")
18 -) >= version.parse("0.8.99")
16 +# MXFP4 via quark requires amd-quark >= 0.12 on torch >= 2.11.
17 +# Earlier torch releases work with older quark versions. See
18 +# https://github.com/amd/Quark/issues/34
19 +# TODO: Remove once amd-quark>=0.12.0
20 +QUARK_MXFP4_TORCH_COMPATIBLE = find_spec("quark") is not None and (
21 + version.parse(importlib.metadata.version("amd-quark")) >= version.parse("0.12.0")
22 + if version.parse(torch.__version__.split("+")[0]) >= version.parse("2.11")
23 + else True
24 +)
25
26 TRTLLM_GEN_MXFP4_AVAILABLE = (
27 current_platform.is_cuda() and current_platform.is_device_capability_family(100)
@@ -87,7 +93,10 @@ def enable_pickle(monkeypatch):
93 ModelCase("fxmarty/Llama-3.1-70B-Instruct-2-layers-mxfp6", tp=4),
94 ],
95 )
90 -@pytest.mark.skipif(not QUARK_MXFP4_AVAILABLE, reason="amd-quark>=0.9 is not available")
96 +@pytest.mark.skipif(
97 + not QUARK_MXFP4_TORCH_COMPATIBLE,
98 + reason="MXFP4 via quark requires amd-quark >= 0.12 on torch >= 2.11.",
99 +)
100 def test_mxfp4_loading_and_execution_moe(vllm_runner, model_case: ModelCase):
101 if torch.accelerator.device_count() < model_case.tp:
102 pytest.skip(