[Tests] Test image edit input limits in tiny model framework (#7434)

Signed-off-by: Nick Cao <ncao@redhat.com>
Co-authored-by: Codex <noreply@openai.com>
This commit is contained in:
Nick CaoandCodex authored and GitHub committed 2026-09-15 12:36:34 -04:00
1 parent 952022c8ec
commit 78934753ff
2 files changed
+67

No files matched your search

@@ -15,6 +15,8 @@ import numpy as np
import pytest
from PIL import Image
from benchmarks.accuracy.common import pil_to_png_bytes
from tests.helpers.assertions import assert_images_generations_response
from tests.helpers.runtime import DiffusionResponse, OmniServer, OnlineOmniClient, dummy_messages_from_mix_data
from tests.model_tests.diffusion.config_types import DiffusionTasks
from vllm_omni.entrypoints.omni import Omni
@@ -204,6 +206,25 @@ def _run_online_i2i(
return client.send_diffusion_request(request_config)
def _build_online_image_edits_request(model: str, num_images: int) -> dict[str, Any]:
"""Build a multipart ``/v1/images/edits`` request with repeated image fields."""
files = [
("image", (f"image_{index}.png", pil_to_png_bytes(INPUT_IMAGE), "image/png")) for index in range(num_images)
]
return {
"data": {
"model": model,
"prompt": PROMPT,
"size": f"{WIDTH}x{HEIGHT}",
"n": 1,
"response_format": "b64_json",
"num_inference_steps": 2,
"seed": 42,
},
"files": files,
}
### Offline task runners
def run_and_validate_text_to_image_request(omni: Omni):
"""Run and validate a text to image request."""
@@ -324,6 +345,35 @@ def run_and_validate_online_image_to_image_request(server: OmniServer, client: O
_validate_images(_get_online_images(_run_online_i2i(server, client)))
def run_and_validate_online_image_edits(
server: OmniServer,
client: OnlineOmniClient,
num_images: int,
max_multimodal_image_inputs: int,
):
"""Run and validate one request through ``/v1/images/edits``."""
request = _build_online_image_edits_request(server.model, num_images)
if num_images <= max_multimodal_image_inputs:
response = client.send_images_edits_http_request(request)[0]
assert response.success, response.error_message
assert isinstance(response.json_body, dict)
assert_images_generations_response(
response.json_body,
{"json": {"n": 1, "size": f"{WIDTH}x{HEIGHT}"}},
)
else:
err_message = (
"Only a single image is supported by this model."
if max_multimodal_image_inputs == 1
else f"At most {max_multimodal_image_inputs} images are supported"
)
client.send_images_edits_http_request(
request,
err_code=400,
err_message=err_message,
)
def run_and_validate_online_determinism(server: OmniServer, client: OnlineOmniClient, task_type: DiffusionTasks):
"""Checks for determinism through the server, dispatching by task type.
@@ -20,12 +20,14 @@ from tests.model_tests.diffusion.config_types import (
from tests.model_tests.diffusion.model_settings import DIFFUSION_TEST_SETTINGS
from tests.model_tests.diffusion.task_runners import (
run_and_validate_online_determinism,
run_and_validate_online_image_edits,
run_and_validate_online_image_to_image_request,
run_and_validate_online_image_to_video_request,
run_and_validate_online_multi_output,
run_and_validate_online_text_to_image_request,
run_and_validate_online_text_to_video_request,
)
from vllm_omni.diffusion.model_metadata import get_diffusion_model_metadata
# NOTE : Hardware marks are added dynamically based on test requirements
pytestmark = [pytest.mark.diffusion, pytest.mark.xdist]
@@ -84,6 +86,21 @@ def test_online_on_supported_tasks(
run_and_validate_online_text_to_image_request(server, client)
elif task_type == DiffusionTasks.IMAGE_TO_IMAGE:
run_and_validate_online_image_to_image_request(server, client)
max_multimodal_image_inputs = (
get_diffusion_model_metadata(model_name).max_multimodal_image_inputs or 1
)
image_counts = [1]
if max_multimodal_image_inputs != 1:
image_counts.append(max_multimodal_image_inputs)
image_counts.append(max_multimodal_image_inputs + 1)
for num_images in image_counts:
with subtests.test(api="/v1/images/edits", num_images=num_images):
run_and_validate_online_image_edits(
server,
client,
num_images=num_images,
max_multimodal_image_inputs=max_multimodal_image_inputs,
)
elif task_type == DiffusionTasks.TEXT_TO_VIDEO:
run_and_validate_online_text_to_video_request(server, client)
elif task_type == DiffusionTasks.IMAGE_TO_VIDEO: