diff --git a/docs/models/supported_models.md b/docs/models/supported_models.md index 66dfc740eee..0fd03536e3d 100644 --- a/docs/models/supported_models.md +++ b/docs/models/supported_models.md @@ -66,7 +66,7 @@ th { | `MiniMaxH3Pipeline` | FastH3 V2 eight-step T2VA (tile-64 VSA; full-model qualification pending) | `FastVideo/FastVideo-FastH3-8-Step-V2` | Experimental | | | | [Recipe](https://github.com/vllm-project/vllm-omni/blob/main/recipes/FastVideo/FastH3-V2.md) | | `MiniMaxH3Pipeline` | FastH3 Omni 8-Step V1 Ref2VA (PDD, logical tile-128 VSA; experimental) | `FastVideo/FastVideo-FastH3-Omni-8-Step-V1` | Experimental | | | | [Recipe](https://github.com/vllm-project/vllm-omni/blob/main/recipes/FastVideo/FastH3-Omni.md) · [Single-card guide](https://github.com/vllm-project/vllm-omni/blob/main/recipes/FastVideo/FastH3%20RefOmni%20Single%20Card.md) | | `TaoMateH3Pipeline` | TaoMate-H3 realtime streaming presenter (MiniMax-H3 + TaoMate LoRA, USP2/USP4) | `MiniMaxAI/MiniMax-H3` FL2VA + `TaoLiveAIGC/TaoMate-H3` | Experimental | | | | [Recipe](https://github.com/vllm-project/vllm-omni/blob/main/recipes/TaoLiveAIGC/TaoMate-H3.md) | -| `Magi2Pipeline` | MAGI-2 native Preview-stage T2VA and I2VA (272p/540p) | `sand-ai/MAGI-2-preview` | ✅︎ | | | | [Repository](https://github.com/vllm-project/vllm-omni/blob/main/recipes/SandAI/MAGI-2-preview-L20X.md) | +| `Magi2Pipeline` | MAGI-2 native Preview-stage T2VA and I2VA (272p/540p) | `sand-ai/MAGI-2-preview` | ✅︎ | | | ✅︎ | [Repository](https://github.com/vllm-project/vllm-omni/blob/main/recipes/SandAI/MAGI-2-preview-L20X.md) | | `DreamZeroPipeline` | DreamZero-DROID | `GEAR-Dreams/DreamZero-DROID` | ✅︎ | ✅︎ | ✅︎ | ✅︎ | — | | `Pi0Pipeline` | π0 (Pi-Zero) VLA | `lerobot/pi0_base` | ✅︎ | | | | [Repository](https://github.com/vllm-project/vllm-omni/blob/main/recipes/lerobot/Pi0.md) | | `Pi05Pipeline` | π0.5 VLA | `lerobot/pi05_base` | ✅︎ | | | ✅︎ | [Repository](https://github.com/vllm-project/vllm-omni/blob/main/recipes/lerobot/Pi05.md) | diff --git a/tests/diffusion/models/magi2/test_musa_pipeline.py b/tests/diffusion/models/magi2/test_musa_pipeline.py index f58f49a56dd..93d107b63e8 100644 --- a/tests/diffusion/models/magi2/test_musa_pipeline.py +++ b/tests/diffusion/models/magi2/test_musa_pipeline.py @@ -60,11 +60,11 @@ def test_constructor_uses_selected_device(monkeypatch, device_type): @pytest.mark.cpu -@pytest.mark.parametrize("device_type,available", [("cuda", False), ("musa", False), ("cpu", True), ("xpu", True)]) +@pytest.mark.parametrize("device_type,available", [("cuda", False), ("musa", False), ("cpu", True)]) def test_constructor_rejects_unsupported_or_unavailable(monkeypatch, device_type, available): monkeypatch.setattr(pipeline, "current_omni_platform", fake_platform(device_type, available)) resolver = stop_before_weights(monkeypatch) - with pytest.raises(RuntimeError, match="available CUDA or MUSA"): + with pytest.raises(RuntimeError, match="requires an accelerator"): pipeline.Magi2Pipeline(od_config=config()) resolver.assert_not_called() diff --git a/tests/diffusion/models/magi2/test_pipeline_magi2.py b/tests/diffusion/models/magi2/test_pipeline_magi2.py index 280caff9783..9870b6ef217 100644 --- a/tests/diffusion/models/magi2/test_pipeline_magi2.py +++ b/tests/diffusion/models/magi2/test_pipeline_magi2.py @@ -300,8 +300,8 @@ def test_forward_stops_peak_monitor_when_initial_synchronize_fails(monkeypatch): pipe.enable_diffusion_pipeline_profiler = True monitor = Mock(peak_bytes=0) monkeypatch.setattr( - "vllm_omni.diffusion.models.magi2.pipeline_magi2.current_omni_platform.is_cuda", - lambda: True, + "vllm_omni.diffusion.models.magi2.pipeline_magi2.current_omni_platform.device_type", + "cuda", ) monkeypatch.setattr( "vllm_omni.diffusion.models.magi2.pipeline_magi2.current_omni_platform.is_available", diff --git a/vllm_omni/diffusion/models/magi2/pipeline_magi2.py b/vllm_omni/diffusion/models/magi2/pipeline_magi2.py index 09f590b97b7..f3cb4b3bc68 100644 --- a/vllm_omni/diffusion/models/magi2/pipeline_magi2.py +++ b/vllm_omni/diffusion/models/magi2/pipeline_magi2.py @@ -550,9 +550,8 @@ def __init__(self, od_config: OmniDiffusionConfig, **kwargs: object) -> None: if not od_config.model: raise ValueError("MAGI-2 requires od_config.model") _validate_native_topology(od_config) - supported_gpu = current_omni_platform.is_cuda() or current_omni_platform.is_musa() - if not supported_gpu or not current_omni_platform.is_available(): - raise RuntimeError("MAGI-2 Preview requires available CUDA or MUSA GPUs") + if current_omni_platform.device_type == "cpu" or not current_omni_platform.is_available(): + raise RuntimeError("MAGI-2 Preview requires an accelerator") self.od_config = od_config self.dtype = od_config.dtype or torch.bfloat16 @@ -1085,9 +1084,7 @@ def forward(self, req: DiffusionRequestBatch) -> DiffusionOutput: seed = _resolve_request_seed(sampling) _seed_request(seed) - has_accelerator = ( - current_omni_platform.is_cuda() or current_omni_platform.is_musa() - ) and current_omni_platform.is_available() + has_accelerator = current_omni_platform.device_type != "cpu" and current_omni_platform.is_available() device_index = torch.accelerator.current_device_index() if has_accelerator else None # Sampling reserved memory is qualification instrumentation, not part # of ordinary serving. It starts only when the pipeline profiler is