forked from Karylab-cklius/vllm
[ROCm][CI] Remove mxfp4 test skips after amd-quark 0.12 release (#47330)
Signed-off-by: Micah Williamson <micah.williamson@amd.com> Signed-off-by: Andreas Karatzas <akaratza@amd.com> Signed-off-by: Andreas Karatzas <Andreas.Karatzas@amd.com> Co-authored-by: Andreas Karatzas <Andreas.Karatzas@amd.com> Co-authored-by: fxmarty-amd <felmarty@amd.com> Co-authored-by: Andreas Karatzas <akaratza@amd.com>
This commit is contained in:
co-authored by
Andreas Karatzas
fxmarty-amd
Andreas Karatzas
parent
f7aadae5e5
commit
6e073440b1
@@ -21,7 +21,7 @@ conch-triton-kernels==1.2.1
|
||||
timm>=1.0.17
|
||||
# amd-quark: required for Quark quantization on ROCm
|
||||
# To be consistent with test_quark.py
|
||||
amd-quark>=0.8.99
|
||||
amd-quark==0.12.post1
|
||||
tilelang==0.1.10
|
||||
# Required apache-tvm-ffi matching tilelang version
|
||||
apache-tvm-ffi==0.1.10
|
||||
|
||||
@@ -9,30 +9,16 @@ pytest -s -v tests/evals/gsm8k/test_gsm8k_correctness.py \
|
||||
--config-list-file=configs/models-small.txt
|
||||
"""
|
||||
|
||||
import importlib.metadata
|
||||
import shlex
|
||||
from importlib.util import find_spec
|
||||
|
||||
import pytest
|
||||
import torch
|
||||
import yaml
|
||||
from packaging import version
|
||||
|
||||
from tests.utils import RemoteOpenAIServer
|
||||
from vllm.platforms import current_platform
|
||||
|
||||
from .gsm8k_eval import evaluate_gsm8k
|
||||
|
||||
# MXFP4 via quark requires amd-quark >= 0.12 on torch >= 2.11.
|
||||
# Earlier torch releases work with older quark versions. See
|
||||
# https://github.com/amd/Quark/issues/34
|
||||
# TODO: Remove once amd-quark>=0.12.0
|
||||
QUARK_MXFP4_TORCH_COMPATIBLE = find_spec("quark") is not None and (
|
||||
version.parse(importlib.metadata.version("amd-quark")) >= version.parse("0.12.0")
|
||||
if version.parse(torch.__version__.split("+")[0]) >= version.parse("2.11")
|
||||
else True
|
||||
)
|
||||
|
||||
DEFAULT_STARTUP_MAX_WAIT_SECONDS = 1200
|
||||
|
||||
|
||||
@@ -109,19 +95,16 @@ def test_gsm8k_correctness(config_filename):
|
||||
"Skipping DeepSeek-V3.2 and DeepSeek-R1 on ROCm platforms "
|
||||
"due to agent pool disk space issues and pod evictions."
|
||||
)
|
||||
if current_platform.is_rocm() and ("Qwen3.5-35B-A3B-MXFP4" in config_filename.name):
|
||||
if current_platform.is_rocm() and (
|
||||
"Qwen3.5-35B-A3B-MXFP4-AITER-TP2" in config_filename.name
|
||||
):
|
||||
from vllm.platforms.rocm import on_gfx950
|
||||
|
||||
if not on_gfx950() and "AITER-TP2" in config_filename.name:
|
||||
if not on_gfx950():
|
||||
pytest.skip(
|
||||
"Skipping Qwen3.5-35B-A3B-MXFP4-AITER-TP2 on non-GFX950 platforms. "
|
||||
"The quantization scheme is not supported on non-GFX950 platforms."
|
||||
)
|
||||
if not QUARK_MXFP4_TORCH_COMPATIBLE:
|
||||
pytest.skip(
|
||||
"Skipping Qwen3.5-35B-A3B-MXFP4: amd-quark >= 0.12 is required "
|
||||
"on torch >= 2.11."
|
||||
)
|
||||
# Parse server arguments from config (use shlex to handle quoted strings)
|
||||
server_args_str = eval_config.get("server_args", "")
|
||||
server_args = shlex.split(server_args_str) if server_args_str else []
|
||||
|
||||
@@ -1,30 +1,17 @@
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# SPDX-FileCopyrightText: Copyright contributors to the vLLM project
|
||||
|
||||
import importlib.metadata
|
||||
import types
|
||||
from dataclasses import dataclass
|
||||
from importlib.util import find_spec
|
||||
|
||||
import pytest
|
||||
import torch
|
||||
from packaging import version
|
||||
|
||||
from tests.kernels.moe.utils import check_accuracy
|
||||
from vllm._aiter_ops import is_aiter_found, rocm_aiter_ops
|
||||
from vllm.platforms import current_platform
|
||||
from vllm.utils.flashinfer import has_flashinfer
|
||||
|
||||
# MXFP4 via quark requires amd-quark >= 0.12 on torch >= 2.11.
|
||||
# Earlier torch releases work with older quark versions. See
|
||||
# https://github.com/amd/Quark/issues/34
|
||||
# TODO: Remove once amd-quark>=0.12.0
|
||||
QUARK_MXFP4_TORCH_COMPATIBLE = find_spec("quark") is not None and (
|
||||
version.parse(importlib.metadata.version("amd-quark")) >= version.parse("0.12.0")
|
||||
if version.parse(torch.__version__.split("+")[0]) >= version.parse("2.11")
|
||||
else True
|
||||
)
|
||||
|
||||
TRTLLM_GEN_MXFP4_AVAILABLE = (
|
||||
current_platform.is_cuda() and current_platform.is_device_capability_family(100)
|
||||
)
|
||||
@@ -96,8 +83,8 @@ def enable_pickle(monkeypatch):
|
||||
],
|
||||
)
|
||||
@pytest.mark.skipif(
|
||||
not QUARK_MXFP4_TORCH_COMPATIBLE,
|
||||
reason="MXFP4 via quark requires amd-quark >= 0.12 on torch >= 2.11.",
|
||||
not ROCM_AVAILABLE,
|
||||
reason="This test is only enabled on platforms that support amd-quark",
|
||||
)
|
||||
def test_mxfp4_loading_and_execution_moe(vllm_runner, model_case: ModelCase):
|
||||
if torch.accelerator.device_count() < model_case.tp:
|
||||
|
||||
@@ -1,12 +1,8 @@
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# SPDX-FileCopyrightText: Copyright contributors to the vLLM project
|
||||
|
||||
import importlib.metadata
|
||||
from importlib.util import find_spec
|
||||
|
||||
import pytest
|
||||
import torch
|
||||
from packaging import version
|
||||
|
||||
import vllm
|
||||
from vllm.lora.request import LoRARequest
|
||||
@@ -14,22 +10,6 @@ from vllm.platforms import current_platform
|
||||
|
||||
from ..utils import multi_gpu_test
|
||||
|
||||
# Require amd-quark >= 0.12 on torch >= 2.11.
|
||||
# Earlier torch releases work with older quark versions. See
|
||||
# https://github.com/amd/Quark/issues/34
|
||||
# TODO: Remove once amd-quark>=0.12.0
|
||||
QUARK_TORCH_COMPATIBLE = find_spec("quark") is not None and (
|
||||
version.parse(importlib.metadata.version("amd-quark")) >= version.parse("0.12.0")
|
||||
if version.parse(torch.__version__.split("+")[0]) >= version.parse("2.11")
|
||||
else True
|
||||
)
|
||||
|
||||
if current_platform.is_rocm() and not QUARK_TORCH_COMPATIBLE:
|
||||
pytest.skip(
|
||||
"This test requires amd-quark >= 0.12 on torch >= 2.11.",
|
||||
allow_module_level=True,
|
||||
)
|
||||
|
||||
MODEL_PATH = "openai/gpt-oss-20b"
|
||||
|
||||
PROMPT_TEMPLATE = """<|start|>system<|message|>You are ChatGPT, a large language model trained by OpenAI.
|
||||
@@ -88,7 +68,9 @@ def generate_and_test(llm: vllm.LLM, lora_path: str, lora_id: int) -> None:
|
||||
generated_texts.append(generated_text)
|
||||
print(f"Prompt: {prompt!r}, Generated text: {generated_text!r}")
|
||||
for i in range(len(EXPECTED_LORA_OUTPUT)):
|
||||
assert generated_texts[i].startswith(EXPECTED_LORA_OUTPUT[i])
|
||||
generated = " ".join(generated_texts[i].split())
|
||||
expected = " ".join(EXPECTED_LORA_OUTPUT[i].split())
|
||||
assert generated.startswith(expected)
|
||||
|
||||
|
||||
# TODO: make the Mxfp4MoeBackend.TRITON spawn-safe.
|
||||
|
||||
@@ -41,7 +41,7 @@ else:
|
||||
from .reference_mxfp4 import dq_mxfp4_torch, qdq_mxfp4_torch
|
||||
|
||||
# Minimum amd-quark version for MXFP4/OCP_MX tests (single source of truth).
|
||||
QUARK_MXFP4_MIN_VERSION = "0.8.99"
|
||||
QUARK_MXFP4_MIN_VERSION = "0.12"
|
||||
|
||||
QUARK_MXFP4_AVAILABLE = find_spec("quark") is not None and version.parse(
|
||||
importlib.metadata.version("amd-quark")
|
||||
|
||||
Reference in New Issue
Block a user