diff --git a/.buildkite/test-merge.yml b/.buildkite/test-merge.yml index 51c4223f2..7a78eda4a 100644 --- a/.buildkite/test-merge.yml +++ b/.buildkite/test-merge.yml @@ -60,6 +60,23 @@ steps: volumes: - "/fsx/hf_cache:/fsx/hf_cache" + - label: "Diffusion · Offloader Test" + timeout_in_minutes: 40 + commands: + - timeout 40m pytest -s -v tests/diffusion/offloader -m "advanced_model and cuda" + agents: + queue: "gpu_1_queue" # g6.4xlarge instance on AWS, has 1 L4 GPU + plugins: + - docker#v5.2.0: + image: public.ecr.aws/q9t5s3a7/vllm-ci-test-repo:$BUILDKITE_COMMIT + always-pull: true + propagate-environment: true + environment: + - "HF_HOME=/fsx/hf_cache" + - "HF_TOKEN" + volumes: + - "/fsx/hf_cache:/fsx/hf_cache" + - label: "Distributed Test" depends_on: upload-merge-pipeline timeout_in_minutes: 60 @@ -150,7 +167,7 @@ steps: commands: - pytest -s -v tests/entrypoints/ -m "advanced_model and cuda and L4" --run-level "advanced_model" agents: - queue: "gpu_4_queue" # g6.12xlarge instance on AWS, has 4 L4 GPU + queue: "gpu_1_queue" # g6.12xlarge instance on AWS, has 4 L4 GPU plugins: - docker#v5.2.0: image: public.ecr.aws/q9t5s3a7/vllm-ci-test-repo:$BUILDKITE_COMMIT @@ -247,42 +264,6 @@ steps: volumes: - "/fsx/hf_cache:/fsx/hf_cache" - - label: "TTS · IndexTTS2 Test" - source_file_dependencies: - - tests/e2e/online_serving/test_indextts2.py - - tests/e2e/offline_inference/test_indextts2.py - - tests/model_executor/models/indextts2/ - - tests/model_executor/stage_input_processors/test_indextts2.py - - tests/assets/indextts2/ - - vllm_omni/model_executor/models/indextts2/ - - vllm_omni/model_executor/stage_input_processors/indextts2.py - - vllm_omni/deploy/indextts2.yaml - - vllm_omni/deploy/indextts2_low_latency.yaml - - vllm_omni/entrypoints/openai/serving_speech.py - - vllm_omni/entrypoints/openai/tts_adapters/indextts2.py - - vllm_omni/config/pipeline_registry.py - - vllm_omni/model_executor/models/registry.py - timeout_in_minutes: 60 - commands: - - | - timeout 45m bash -c " - export VLLM_LOGGING_LEVEL=DEBUG - pytest -s -v tests/e2e/online_serving/test_indextts2.py tests/e2e/offline_inference/test_indextts2.py -m 'advanced_model and cuda' --run-level 'advanced_model' - " - agents: - queue: "gpu_4_queue" - plugins: - - docker#v5.2.0: - image: public.ecr.aws/q9t5s3a7/vllm-ci-test-repo:$BUILDKITE_COMMIT - always-pull: true - propagate-environment: true - environment: - - "HF_HOME=/fsx/hf_cache" - - "HF_TOKEN" - gpus: all - volumes: - - "/fsx/hf_cache:/fsx/hf_cache" - - label: "Omni · Qwen3-Omni Test" source_file_dependencies: - tests/e2e/offline_inference/test_qwen3_omni.py diff --git a/.buildkite/test-nightly.yml b/.buildkite/test-nightly.yml index 783d0ab1f..0a23e5825 100644 --- a/.buildkite/test-nightly.yml +++ b/.buildkite/test-nightly.yml @@ -1529,11 +1529,28 @@ steps: path: /mnt/hf-cache type: DirectoryOrCreate - - group: ":card_index_dividers: Diffusion · Quantization Test" + - group: ":card_index_dividers: Diffusion Test" depends_on: upload-nightly-pipeline if: build.env("NIGHTLY") == "1" || build.pull_request.labels includes "nightly-test" || build.pull_request.labels includes "diffusion-x2iat-test" steps: - - label: ":full_moon: Quantization Test with H100" + - label: ":full_moon: Diffusion · Offloader Test" + timeout_in_minutes: 40 + commands: + - timeout 40m pytest -s -v tests/diffusion/offloader -m "full_model and cuda" + agents: + queue: "gpu_1_queue" # g6.4xlarge instance on AWS, has 1 L4 GPU + plugins: + - docker#v5.2.0: + image: public.ecr.aws/q9t5s3a7/vllm-ci-test-repo:$BUILDKITE_COMMIT + always-pull: true + propagate-environment: true + environment: + - "HF_HOME=/fsx/hf_cache" + - "HF_TOKEN" + volumes: + - "/fsx/hf_cache:/fsx/hf_cache" + + - label: ":full_moon: Diffusion · Quantization Test with H100" commands: - timeout 60m pytest -sv tests/diffusion/quantization -m 'full_model and cuda and H100' --run-level "full_model" agents: @@ -1570,7 +1587,7 @@ steps: path: /mnt/hf-cache type: DirectoryOrCreate - - label: ":full_moon: Quantization Test with L4" + - label: ":full_moon: Diffusion · Quantization Test with L4" timeout_in_minutes: 60 commands: - pytest -sv tests/diffusion/quantization -m 'full_model and cuda and L4' --run-level "full_model" diff --git a/.buildkite/test-ready.yml b/.buildkite/test-ready.yml index c9b60fe2c..75e834be9 100644 --- a/.buildkite/test-ready.yml +++ b/.buildkite/test-ready.yml @@ -108,6 +108,12 @@ steps: - "/fsx/hf_cache:/fsx/hf_cache" - label: "Diffusion · Distributed Test" + source_file_dependencies: + - tests/diffusion/distributed/ + - vllm_omni/diffusion/distributed/ + - vllm_omni/diffusion/attention/parallel/ + - vllm_omni/diffusion/data.py + - vllm_omni/diffusion/models/ commands: - timeout 20m pytest -sv tests/diffusion/distributed -m 'core_model and cuda' --run-level "core_model" agents: diff --git a/tests/diffusion/models/cosmos3/test_cosmos3_pipeline.py b/tests/diffusion/models/cosmos3/test_cosmos3_pipeline.py index 1085e3878..404979a78 100644 --- a/tests/diffusion/models/cosmos3/test_cosmos3_pipeline.py +++ b/tests/diffusion/models/cosmos3/test_cosmos3_pipeline.py @@ -716,10 +716,9 @@ def test_distilled_pipeline_initializes_sde_scheduler( stub_real_pipeline_init, monkeypatch: pytest.MonkeyPatch, ) -> None: - from diffusers import FlowMatchEulerDiscreteScheduler - from vllm_omni.diffusion.models.cosmos3.pipeline_cosmos3 import ( Cosmos3OmniDiffusersPipeline, + FlowMatchEulerDiscreteScheduler, ) t_list = [1.0, 0.9375, 0.8333333333333334, 0.625] diff --git a/tests/diffusion/offloader/test_diffusion_cpu_offload.py b/tests/diffusion/offloader/test_diffusion_cpu_offload.py index 22f6839fd..555a62ca0 100644 --- a/tests/diffusion/offloader/test_diffusion_cpu_offload.py +++ b/tests/diffusion/offloader/test_diffusion_cpu_offload.py @@ -24,6 +24,13 @@ IMAGE_VIDEO_MODELS = { MODELS = {**AUDIO_MODEL, **IMAGE_VIDEO_MODELS} +MODEL_MARKS = { + "riverclouds/qwen_image_random": pytest.mark.core_model, + "Tongyi-MAI/Z-Image-Turbo": pytest.mark.advanced_model, + "stabilityai/stable-audio-open-1.0": pytest.mark.full_model, + "OmniGen2/OmniGen2": pytest.mark.full_model, +} + _GATED_MODELS = {"stabilityai/stable-audio-open-1.0"} # Aliased for backward compatibility (imported by test_diffusion_layerwise_offload.py). @@ -97,10 +104,12 @@ def check_audio_determinism(audio1, audio2, atol=1e-2): return True -@pytest.mark.core_model @pytest.mark.diffusion @hardware_test(res={"cuda": "L4", "rocm": "MI325"}) -@pytest.mark.parametrize("model_name", list(MODELS.keys())) +@pytest.mark.parametrize( + "model_name", + [pytest.param(name, marks=MODEL_MARKS[name]) for name in MODELS], +) def test_cpu_offload_diffusion_model(model_name: str): if model_name == "OmniGen2/OmniGen2": pytest.skip("issue #4537") diff --git a/tests/e2e/offline_inference/test_indextts2.py b/tests/e2e/offline_inference/test_indextts2_expansion.py similarity index 98% rename from tests/e2e/offline_inference/test_indextts2.py rename to tests/e2e/offline_inference/test_indextts2_expansion.py index 6c2786efa..ba5b984f9 100644 --- a/tests/e2e/offline_inference/test_indextts2.py +++ b/tests/e2e/offline_inference/test_indextts2_expansion.py @@ -33,7 +33,7 @@ ASSETS_DIR = Path(__file__).resolve().parents[2] / "assets" / "indextts2" REF_AUDIO = str(ASSETS_DIR / "ref_audio.wav") pytestmark = [ - pytest.mark.advanced_model, + pytest.mark.slow, pytest.mark.tts, pytest.mark.parametrize("omni_runner", [_OMNI_RUNNER_PARAM], indirect=True), ] diff --git a/tests/e2e/online_serving/test_indextts2.py b/tests/e2e/online_serving/test_indextts2_expansion.py similarity index 97% rename from tests/e2e/online_serving/test_indextts2.py rename to tests/e2e/online_serving/test_indextts2_expansion.py index 5ab0d1f8d..d971ef166 100644 --- a/tests/e2e/online_serving/test_indextts2.py +++ b/tests/e2e/online_serving/test_indextts2_expansion.py @@ -19,7 +19,7 @@ from tests.helpers.media import load_test_audio_data_url from tests.helpers.runtime import OmniServerParams from tests.helpers.stage_config import get_deploy_config_path -pytestmark = [pytest.mark.advanced_model, pytest.mark.tts] +pytestmark = [pytest.mark.slow, pytest.mark.tts] MODEL = "IndexTeam/IndexTTS-2" diff --git a/tests/entrypoints/openai_api/test_qwen3_tts_websocket.py b/tests/entrypoints/openai_api/test_qwen3_tts_websocket.py index 058b20331..ecae21158 100644 --- a/tests/entrypoints/openai_api/test_qwen3_tts_websocket.py +++ b/tests/entrypoints/openai_api/test_qwen3_tts_websocket.py @@ -102,7 +102,7 @@ async def _run_ws_session(host: str, port: int, model: str) -> dict: class TestQwen3TTSWebSocket: @pytest.mark.advanced_model @pytest.mark.tts - @hardware_test(res={"cuda": "L4"}, num_cards=4) + @hardware_test(res={"cuda": "L4"}, num_cards=1) @pytest.mark.parametrize("omni_server", tts_ws_server_params, indirect=True) def test_streaming_pcm_output(self, omni_server) -> None: result = asyncio.run(_run_ws_session(omni_server.host, omni_server.port, omni_server.model)) diff --git a/tests/entrypoints/openai_api/test_serving_speech_batch.py b/tests/entrypoints/openai_api/test_serving_speech_batch.py index ce0a5e21f..686dba7d0 100644 --- a/tests/entrypoints/openai_api/test_serving_speech_batch.py +++ b/tests/entrypoints/openai_api/test_serving_speech_batch.py @@ -88,7 +88,7 @@ class TestSpeechBatchE2E: @pytest.mark.advanced_model @pytest.mark.tts - @hardware_test(res={"cuda": "H100"}, num_cards=1) + @hardware_test(res={"cuda": "L4"}, num_cards=1) @pytest.mark.parametrize("omni_server", default_server_params, indirect=True) def test_batch_basic_two_items(self, omni_server) -> None: """Batch with two items returns two successful base64-encoded results."""