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