[CI/Build] Fix MOSS CPU tests on ROCm workers (#8447)

Signed-off-by: andyluo7 <andy.luo@amd.com>
This commit is contained in:
andyluo7 authored and GitHub committed 2026-10-03 09:13:51 +08:00
1 parent 3bc3f1a7d0
commit ee8fdab1dc
3 files changed
+32 -21

No files matched your search

@@ -8,8 +8,9 @@ import pytest
from tests.helpers.stage_config import get_deploy_config_path
from vllm_omni.config.pipeline_registry import resolve_pipeline_config
from vllm_omni.config.stage_config import _apply_platform_overrides, load_deploy_config, merge_pipeline_deploy
from vllm_omni.config.stage_config import load_deploy_config, merge_pipeline_deploy
from vllm_omni.core.sched.omni_generation_scheduler import OmniGenerationScheduler, VLLMScheduler
from vllm_omni.platforms import current_omni_platform
pytestmark = [pytest.mark.core_model, pytest.mark.cpu]
@@ -45,10 +46,14 @@ def _config(*, native=True, stateful=True, tp=1, pp=1, extras=None, capacity=128
@pytest.mark.parametrize("profile", ["high_concurrency", "low_latency"])
@pytest.mark.parametrize("platform", ["cuda", "npu", "xpu", "rocm", "musa"])
def test_moss_profile_generation_constructor_after_platform_resolution(construct_scheduler, mocker, profile, platform):
deploy = _apply_platform_overrides(
load_deploy_config(get_deploy_config_path(f"moss_tts_local_mrv2_{profile}.yaml")), platform=platform
)
def test_moss_profile_generation_constructor_after_platform_resolution(
construct_scheduler, monkeypatch, mocker, profile, platform
):
# merge_pipeline_deploy owns platform resolution. Mock the detected device
# instead of applying an override first and then resolving the worker's
# actual platform a second time.
monkeypatch.setattr(current_omni_platform, "device_name", platform)
deploy = load_deploy_config(get_deploy_config_path(f"moss_tts_local_mrv2_{profile}.yaml"))
pipeline = resolve_pipeline_config("moss_tts_local")
codec = merge_pipeline_deploy(pipeline, deploy)[1]
extras = deploy.connectors["shm"]["extra"]
@@ -6,6 +6,7 @@ single-flight, and micro-batched encoding."""
import asyncio
import threading
import time
from tempfile import TemporaryDirectory
import pytest
import torch
@@ -650,22 +651,25 @@ async def test_inline_index_requires_matching_resolve_key(make_encoder):
assert audio.resolve_calls == [ref, ref]
async def test_inline_reference_shared_across_encoders(make_encoder, tmp_path_factory, monkeypatch):
shared_dir = tmp_path_factory.mktemp("ref")
monkeypatch.setenv("VLLM_OMNI_MOSS_REF_CODES_SHARED_DIR", str(shared_dir))
ref = "data:audio/wav;base64,R0hJ"
first_audio, second_audio = _DigestAudio(), _DigestAudio()
first_audio.register(ref, 9)
second_audio.register(ref, 9)
first, second = make_encoder(_FakeProcessor()), make_encoder(_FakeProcessor())
async def test_inline_reference_shared_across_encoders(make_encoder, monkeypatch):
# Keep the AF_UNIX socket path independent of pytest's nested base path.
with TemporaryDirectory(prefix="moss-ref-") as shared_dir:
monkeypatch.setenv("VLLM_OMNI_MOSS_REF_CODES_SHARED_DIR", shared_dir)
ref = "data:audio/wav;base64,R0hJ"
first_audio, second_audio = _DigestAudio(), _DigestAudio()
first_audio.register(ref, 9)
second_audio.register(ref, 9)
first, second = make_encoder(_FakeProcessor()), make_encoder(_FakeProcessor())
a, key_a = await first.encode(ref, resolve_ref_audio=first_audio.resolve, get_artifact_key=first_audio.artifact_key)
b, key_b = await second.encode(
ref, resolve_ref_audio=second_audio.resolve, get_artifact_key=second_audio.artifact_key
)
a, key_a = await first.encode(
ref, resolve_ref_audio=first_audio.resolve, get_artifact_key=first_audio.artifact_key
)
b, key_b = await second.encode(
ref, resolve_ref_audio=second_audio.resolve, get_artifact_key=second_audio.artifact_key
)
assert first_audio.resolve_calls == [ref] and second_audio.resolve_calls == []
assert key_a == key_b and torch.equal(a, b)
assert first_audio.resolve_calls == [ref] and second_audio.resolve_calls == []
assert key_a == key_b and torch.equal(a, b)
# --------------------------------------------------------------------------- #
@@ -3,6 +3,7 @@
"""API processes share one reference encoder through a Unix socket."""
import threading
from tempfile import TemporaryDirectory
import pytest
import torch
@@ -30,10 +31,11 @@ class _Recorder:
@pytest.fixture
def host_dir(tmp_path_factory, monkeypatch):
def host_dir(monkeypatch):
monkeypatch.setattr(shared, "_host_lock_handle", None)
# AF_UNIX limits the full socket path, including pytest directory names.
return str(tmp_path_factory.mktemp("ref"))
with TemporaryDirectory(prefix="moss-ref-") as path:
yield path
def test_only_one_process_per_directory_hosts(host_dir):