diff --git a/docs/docs/sglang-diffusion/compatibility_matrix.mdx b/docs/docs/sglang-diffusion/compatibility_matrix.mdx index daca9f373..5b9d6a61e 100644 --- a/docs/docs/sglang-diffusion/compatibility_matrix.mdx +++ b/docs/docs/sglang-diffusion/compatibility_matrix.mdx @@ -105,12 +105,10 @@ replay only matching warmup signatures, including condition-prefix length; other shapes run eagerly. VAE tiling is opt-in and can change numerical results. Do not infer compatibility from the older Qwen-Image row. -Use an authorized local checkpoint with `--model-id Qwen-Image-2.1`. +Use the public `Qwen/Qwen-Image-2.1` checkpoint; no Hugging Face token is required. See the [Qwen-Image 2.1 cookbook](/cookbook/diffusion/Qwen-Image/Qwen-Image-2.1) -for checkpoint layout and usage. This entry does not assert public weight -availability. The standard two-GPU E2E suite includes `qwen_image21_t2i_tp2` +for checkpoint layout and usage. The standard two-GPU E2E suite includes `qwen_image21_t2i_tp2` with TP2, 1024px/40-step generation, two requests, and image consistency checks. -Its runners need access to `Qwen/Qwen-Image-2.1`. The additional opt-in HTTP cases check repeated generation, editing, and real RGBA alpha output from a local checkpoint: diff --git a/python/sglang/multimodal_gen/test/server/gpu_cases.py b/python/sglang/multimodal_gen/test/server/gpu_cases.py index 9a856fc86..89398c460 100644 --- a/python/sglang/multimodal_gen/test/server/gpu_cases.py +++ b/python/sglang/multimodal_gen/test/server/gpu_cases.py @@ -49,6 +49,7 @@ from sglang.multimodal_gen.test.test_utils import ( DEFAULT_FLUX_2_KLEIN_BASE_4B_MODEL_NAME_FOR_TEST, DEFAULT_JOYAI_IMAGE_EDIT_MODEL_NAME_FOR_TEST, DEFAULT_MOVA_360P_MODEL_NAME_FOR_TEST, + DEFAULT_QWEN_IMAGE_21_MODEL_NAME_FOR_TEST, DEFAULT_QWEN_IMAGE_EDIT_2509_MODEL_NAME_FOR_TEST, DEFAULT_QWEN_IMAGE_EDIT_2511_MODEL_NAME_FOR_TEST, DEFAULT_QWEN_IMAGE_EDIT_MODEL_NAME_FOR_TEST, @@ -1141,26 +1142,25 @@ TWO_GPU_CASES = [ ring_degree=2, ), ), - # TODO: re-enable when the checkpoint is accessible to fork PR CI - # DiffusionTestCase( - # "qwen_image21_t2i_tp2", - # DiffusionServerArgs( - # model_path="Qwen/Qwen-Image-2.1", - # tp_size=2, - # ulysses_degree=1, - # ring_degree=1, - # ), - # replace( - # T2I_sampling_params, - # output_size="1024x1024", - # output_format="png", - # extras={"num_inference_steps": 40, "guidance_scale": 1, "seed": 42}, - # ), - # perf_repeat_requests=2, - # run_perf_check=False, - # run_component_accuracy_check=False, - # run_t2v_input_reference_check=False, - # ), + DiffusionTestCase( + "qwen_image21_t2i_tp2", + DiffusionServerArgs( + model_path=DEFAULT_QWEN_IMAGE_21_MODEL_NAME_FOR_TEST, + tp_size=2, + ulysses_degree=1, + ring_degree=1, + ), + replace( + T2I_sampling_params, + output_size="1024x1024", + output_format="png", + extras={"num_inference_steps": 40, "guidance_scale": 1, "seed": 42}, + ), + perf_repeat_requests=2, + run_perf_check=False, + run_component_accuracy_check=False, + run_t2v_input_reference_check=False, + ), DiffusionTestCase( "qwen_image_t2i_2_gpus_extra_high", DiffusionServerArgs( diff --git a/python/sglang/multimodal_gen/test/server/perf_baselines/h100.json b/python/sglang/multimodal_gen/test/server/perf_baselines/h100.json index 78708d108..89298e1ab 100644 --- a/python/sglang/multimodal_gen/test/server/perf_baselines/h100.json +++ b/python/sglang/multimodal_gen/test/server/perf_baselines/h100.json @@ -206,9 +206,11 @@ "estimated_full_test_time_s": 65.6 }, "qwen_image21_t2i_tp2": { + "expected_load_ms": 45596.77, + "notes": "H100 CI run 35549625911 attempt 3, job 106188864502, PR head 044e71f5ecb507ffdf66729f934b51c3dc68b59f; request 1 after server warmup, complete cached public model snapshot b3179ad355be050328e483a9dfdd9e60cd62adfa. Existing tolerances are unchanged.", "stages_ms": {}, "denoise_step_ms": {}, - "expected_e2e_ms": 0.0, + "expected_e2e_ms": 2914.82, "expected_avg_denoise_ms": 0.0, "expected_median_denoise_ms": 0.0, "estimated_full_test_time_s": 300.0 diff --git a/python/sglang/multimodal_gen/test/test_utils.py b/python/sglang/multimodal_gen/test/test_utils.py index 2a2284ef6..b400b771c 100644 --- a/python/sglang/multimodal_gen/test/test_utils.py +++ b/python/sglang/multimodal_gen/test/test_utils.py @@ -40,7 +40,7 @@ logger = init_logger(__name__) # NPU/ascend) is read from sgl-project/ci-data-diffusion, where the GT-gen workflows # publish. SGL_TEST_FILES_CI_DATA_REPO = "sgl-project/ci-data-diffusion" -SGL_TEST_FILES_CI_DATA_REVISION = "252710158cd4c74b7604808a385e93f7bced6d28" +SGL_TEST_FILES_CI_DATA_REVISION = "38ba32bd812b2dfb0eccc83ef063096c089e3389" # The NPU pin is kept as a separate branch so ascend GT can be bumped independently # when it's regenerated on its own cadence.