Signed-off-by: wangyu <410167048@qq.com> Signed-off-by: [Your Name] <your.email@example.com> Co-authored-by: Cursor <cursoragent@cursor.com>
57 lines
1.9 KiB
Python
57 lines
1.9 KiB
Python
"""Weekly e2e coverage for BAGEL diffusion multi-replica serving.
|
|
|
|
This test needs 4 H100 GPUs; keep it out of generic test_bagel_* jobs.
|
|
It is covered by the weekly Diffusion · H100 · Multi-GPU lane
|
|
(``.buildkite/cuda/test-weekly.yml``, ``mirror_hardwares: h100_4``).
|
|
"""
|
|
|
|
import os
|
|
|
|
import pytest
|
|
|
|
from tests.helpers.mark import hardware_test
|
|
from tests.helpers.runtime import OmniServerParams, dummy_messages_from_mix_data
|
|
from tests.helpers.stage_config import get_deploy_config_path
|
|
|
|
os.environ["VLLM_WORKER_MULTIPROC_METHOD"] = "spawn"
|
|
|
|
MODEL = "ByteDance-Seed/BAGEL-7B-MoT"
|
|
MULTI_REPLICA_DEPLOY = get_deploy_config_path("ci/bagel_multi_replicas_4gpu.yaml")
|
|
ROUTE_STRESS_REQUESTS = 6
|
|
|
|
pytestmark = [pytest.mark.slow, pytest.mark.diffusion]
|
|
|
|
test_params = [
|
|
OmniServerParams(
|
|
model=MODEL,
|
|
stage_config_path=MULTI_REPLICA_DEPLOY,
|
|
server_args=["--disable-log-stats"],
|
|
use_stage_cli=True,
|
|
)
|
|
]
|
|
|
|
|
|
@hardware_test(res={"cuda": "H100"}, num_cards=4)
|
|
@pytest.mark.parametrize("omni_server", test_params, indirect=True)
|
|
def test_multi_stage_diffusion_uses_multi_replica_dit_stage(omni_server, openai_client) -> None:
|
|
request_config = {
|
|
"model": omni_server.model,
|
|
"messages": dummy_messages_from_mix_data(
|
|
content_text="<|im_start|>A small red cube on a white table.<|im_end|>"
|
|
),
|
|
"modalities": ["image"],
|
|
"extra_body": {
|
|
"height": 512,
|
|
"width": 512,
|
|
"num_inference_steps": 2,
|
|
"guidance_scale": 0.0,
|
|
"seed": 42,
|
|
},
|
|
}
|
|
|
|
responses = openai_client.send_diffusion_request(request_config, request_num=ROUTE_STRESS_REQUESTS)
|
|
|
|
assert len(responses) == ROUTE_STRESS_REQUESTS
|
|
assert all(response.success for response in responses)
|
|
assert all(response.images is not None and response.images[0].size == (512, 512) for response in responses)
|