From 0db924bc5444bd99c4ee6fd2714e1b4e9d9518f3 Mon Sep 17 00:00:00 2001 From: Hongsheng Liu Date: Wed, 12 Aug 2026 00:22:41 +0800 Subject: [PATCH] [Misc] Keep serving changes out of example refactor Signed-off-by: Hongsheng Liu --- .../online_serving/image_to_video/README.md | 2 +- .../online_serving/text_to_image/README.md | 2 +- .../openai_api/test_video_server.py | 32 +------------------ vllm_omni/entrypoints/openai/serving_video.py | 20 ++---------- 4 files changed, 5 insertions(+), 51 deletions(-) diff --git a/examples/online_serving/image_to_video/README.md b/examples/online_serving/image_to_video/README.md index 3ae3a5291..e6d9b070f 100644 --- a/examples/online_serving/image_to_video/README.md +++ b/examples/online_serving/image_to_video/README.md @@ -3,7 +3,7 @@ This example demonstrates online image-to-video generation with vLLM-Omni. The startup script defaults to Wan2.2, but `MODEL` can select any supported image-to-video model. The existing curl helper remains a concrete Wan2.2 -request, while the server side owns model-specific prompt processing. +request through the standard Videos API. ## Start Server diff --git a/examples/online_serving/text_to_image/README.md b/examples/online_serving/text_to_image/README.md index a57a917d0..7f8988a0a 100644 --- a/examples/online_serving/text_to_image/README.md +++ b/examples/online_serving/text_to_image/README.md @@ -3,7 +3,7 @@ This example demonstrates online text-to-image generation with vLLM-Omni. The startup script and Python clients default to Qwen-Image, but `MODEL` can select any supported text-to-image model. The existing curl helper remains a concrete -Qwen-Image request, while the server side owns model-specific prompt processing. +Qwen-Image request through the standard Images API. ## Start Server diff --git a/tests/entrypoints/openai_api/test_video_server.py b/tests/entrypoints/openai_api/test_video_server.py index 23e9d5b8d..bcda12e2d 100644 --- a/tests/entrypoints/openai_api/test_video_server.py +++ b/tests/entrypoints/openai_api/test_video_server.py @@ -32,7 +32,7 @@ from vllm_omni.entrypoints.openai.protocol.videos import ( VideoParams, VideoResponse, ) -from vllm_omni.entrypoints.openai.serving_video import OmniOpenAIServingVideo, ReferenceImage +from vllm_omni.entrypoints.openai.serving_video import OmniOpenAIServingVideo from vllm_omni.entrypoints.openai.storage import LocalStorageManager from vllm_omni.entrypoints.openai.stores import AsyncDictStore, TaskRegistry from vllm_omni.errors import GuardrailViolationError @@ -433,36 +433,6 @@ def test_i2v_video_generation_form(test_client, mocker: MockerFixture): assert input_image.size == (48, 32) -def test_i2v_online_applies_model_specific_prompt_builder() -> None: - engine = FakeAsyncOmni() - engine.model_class_name = "WanVACEPipeline" - handler = OmniOpenAIServingVideo.for_diffusion( - diffusion_engine=engine, - model_name="Wan-AI/Wan2.1-VACE-1.3B-diffusers", - ) - image = Image.new("RGB", (320, 16), "red") - - asyncio.run( - handler._run_and_extract( - VideoGenerationRequest( - prompt="A bird flying", - negative_prompt="blurry", - width=320, - height=16, - num_frames=5, - ), - "vace-online-builder", - reference_image=ReferenceImage(image), - ) - ) - - prompt = engine.captured_prompt - assert prompt["negative_prompt"] == "blurry" - assert len(prompt["multi_modal_data"]["video"]) == 5 - assert len(prompt["multi_modal_data"]["mask"]) == 5 - assert prompt["multi_modal_data"]["video"][0] is image - - def test_i2v_video_generation_resizes_input_to_requested_dimensions(test_client, mocker: MockerFixture): image_bytes = _make_test_image_bytes((48, 32)) diff --git a/vllm_omni/entrypoints/openai/serving_video.py b/vllm_omni/entrypoints/openai/serving_video.py index 033df7078..3a25283c8 100644 --- a/vllm_omni/entrypoints/openai/serving_video.py +++ b/vllm_omni/entrypoints/openai/serving_video.py @@ -30,7 +30,6 @@ from vllm_omni.entrypoints.openai.stage_params import ( from vllm_omni.entrypoints.openai.utils import get_stage_type, parse_lora_request from vllm_omni.entrypoints.openai.video_api_utils import _encode_video_bytes, encode_video_base64 from vllm_omni.inputs.data import OmniDiffusionSamplingParams, OmniTextPrompt -from vllm_omni.model_extras import build_image_to_video_prompt from vllm_omni.outputs.output_metadata import ( DiffusionMetadataMapping, DiffusionMultimodalOutput, @@ -101,14 +100,11 @@ class OmniOpenAIServingVideo: if self._stage_configs is None and stage_configs is not None: self._stage_configs = stage_configs - def _get_diffusion_od_config(self) -> object | None: - get_od_config = getattr(self._engine_client, "get_diffusion_od_config", None) - return get_od_config() if callable(get_od_config) else getattr(self._engine_client, "od_config", None) - @property def supports_mixed_reference_inputs(self) -> bool: """Return whether the configured diffusion model accepts mixed refs.""" - od_config = self._get_diffusion_od_config() + get_od_config = getattr(self._engine_client, "get_diffusion_od_config", None) + od_config = get_od_config() if callable(get_od_config) else getattr(self._engine_client, "od_config", None) if od_config is None: return False @@ -256,18 +252,6 @@ class OmniOpenAIServingVideo: loggable = {**loggable, **redacted} logger.info("Applied extra_params: %s", loggable) - model_class_name = getattr(self._get_diffusion_od_config(), "model_class_name", None) - prompt = cast( - OmniTextPrompt, - build_image_to_video_prompt( - model_class_name=model_class_name, - prompt=prompt, - height=gen_params.height, - width=gen_params.width, - num_frames=gen_params.num_frames, - ), - ) - self._apply_lora(request.lora, gen_params) logger.info(