[diffusion] CI: rebalance 2-gpu shards and cut the job timeout to 45m (#38239)

This commit is contained in:
Cheng Wan
2026-09-07 09:39:03 +08:00
committed by GitHub
parent b83f1bdd21
commit e3140fb9d4
3 changed files with 72 additions and 27 deletions
+2 -2
View File
@@ -292,7 +292,7 @@ jobs:
((github.event_name == 'schedule' || inputs.test_parallel_dispatch == 'true') || (inputs.caller_needs_failure != 'true' && !cancelled())) && ((github.event_name == 'schedule' || inputs.test_parallel_dispatch == 'true') || (inputs.caller_needs_failure != 'true' && !cancelled())) &&
inputs.multimodal_gen == 'true' inputs.multimodal_gen == 'true'
runs-on: 2-gpu-h100 runs-on: 2-gpu-h100
timeout-minutes: 240 timeout-minutes: 45
strategy: strategy:
fail-fast: false fail-fast: false
matrix: ${{ fromJson(needs.compute-diffusion-partitions.outputs.matrix-2gpu) }} matrix: ${{ fromJson(needs.compute-diffusion-partitions.outputs.matrix-2gpu) }}
@@ -324,7 +324,7 @@ jobs:
CUSTOM_BUILD_SGL_KERNEL=${{inputs.sgl_kernel}} bash scripts/ci/cuda/ci_install_dependency.sh diffusion CUSTOM_BUILD_SGL_KERNEL=${{inputs.sgl_kernel}} bash scripts/ci/cuda/ci_install_dependency.sh diffusion
- name: Run diffusion server tests - name: Run diffusion server tests
timeout-minutes: 240 timeout-minutes: 45
env: env:
HF_TOKEN: ${{ secrets.SGLANG_DIFFUSION_CI_HF_TOKEN || secrets.HF_TOKEN }} HF_TOKEN: ${{ secrets.SGLANG_DIFFUSION_CI_HF_TOKEN || secrets.HF_TOKEN }}
HUGGING_FACE_HUB_TOKEN: ${{ secrets.SGLANG_DIFFUSION_CI_HF_TOKEN || secrets.HF_TOKEN }} HUGGING_FACE_HUB_TOKEN: ${{ secrets.SGLANG_DIFFUSION_CI_HF_TOKEN || secrets.HF_TOKEN }}
@@ -177,7 +177,7 @@
"runtime_peak_vram_mb": 46938.0, "runtime_peak_vram_mb": 46938.0,
"load_peak_allocated_mb": 41798.0, "load_peak_allocated_mb": 41798.0,
"runtime_peak_allocated_mb": 44855.0, "runtime_peak_allocated_mb": 44855.0,
"estimated_full_test_time_s": 133.2 "estimated_full_test_time_s": 65.6
}, },
"qwen_image_t2i_2_gpus_extra_high": { "qwen_image_t2i_2_gpus_extra_high": {
"stages_ms": {}, "stages_ms": {},
@@ -185,7 +185,31 @@
"expected_e2e_ms": 0.0, "expected_e2e_ms": 0.0,
"expected_avg_denoise_ms": 0.0, "expected_avg_denoise_ms": 0.0,
"expected_median_denoise_ms": 0.0, "expected_median_denoise_ms": 0.0,
"estimated_full_test_time_s": 57.9 "estimated_full_test_time_s": 54.4
},
"flux2_modelopt_fp8_tp2_t2i": {
"stages_ms": {},
"denoise_step_ms": {},
"expected_e2e_ms": 0.0,
"expected_avg_denoise_ms": 0.0,
"expected_median_denoise_ms": 0.0,
"estimated_full_test_time_s": 75.4
},
"joy_echo_t2v_2gpu": {
"stages_ms": {},
"denoise_step_ms": {},
"expected_e2e_ms": 0.0,
"expected_avg_denoise_ms": 0.0,
"expected_median_denoise_ms": 0.0,
"estimated_full_test_time_s": 62.8
},
"ideogram4_fp8_tp2_t2i": {
"stages_ms": {},
"denoise_step_ms": {},
"expected_e2e_ms": 0.0,
"expected_avg_denoise_ms": 0.0,
"expected_median_denoise_ms": 0.0,
"estimated_full_test_time_s": 60.8
}, },
"ideogram4_fp8_t2i": { "ideogram4_fp8_t2i": {
"stages_ms": { "stages_ms": {
@@ -697,7 +721,7 @@
"runtime_peak_vram_mb": 28148.0, "runtime_peak_vram_mb": 28148.0,
"load_peak_allocated_mb": 23262.0, "load_peak_allocated_mb": 23262.0,
"runtime_peak_allocated_mb": 25541.0, "runtime_peak_allocated_mb": 25541.0,
"estimated_full_test_time_s": 125.5 "estimated_full_test_time_s": 44.9
}, },
"zimage_image_t2i": { "zimage_image_t2i": {
"stages_ms": { "stages_ms": {
@@ -813,7 +837,7 @@
"runtime_peak_vram_mb": 17602.0, "runtime_peak_vram_mb": 17602.0,
"load_peak_allocated_mb": 12852.0, "load_peak_allocated_mb": 12852.0,
"runtime_peak_allocated_mb": 15131.0, "runtime_peak_allocated_mb": 15131.0,
"estimated_full_test_time_s": 75.0 "estimated_full_test_time_s": 39.3
}, },
"qwen_image_edit_ti2i": { "qwen_image_edit_ti2i": {
"stages_ms": { "stages_ms": {
@@ -1225,7 +1249,7 @@
"runtime_peak_vram_mb": 11972.0, "runtime_peak_vram_mb": 11972.0,
"load_peak_allocated_mb": 5274.0, "load_peak_allocated_mb": 5274.0,
"runtime_peak_allocated_mb": 9251.0, "runtime_peak_allocated_mb": 9251.0,
"estimated_full_test_time_s": 127.6 "estimated_full_test_time_s": 45.5
}, },
"turbo_wan2_1_t2v_1.3b": { "turbo_wan2_1_t2v_1.3b": {
"stages_ms": { "stages_ms": {
@@ -1321,7 +1345,7 @@
"runtime_peak_vram_mb": 57528.0, "runtime_peak_vram_mb": 57528.0,
"load_peak_allocated_mb": 43411.0, "load_peak_allocated_mb": 43411.0,
"runtime_peak_allocated_mb": 54736.0, "runtime_peak_allocated_mb": 54736.0,
"estimated_full_test_time_s": 345.4 "estimated_full_test_time_s": 100.4
}, },
"wan2_2_ti2v_5b": { "wan2_2_ti2v_5b": {
"stages_ms": { "stages_ms": {
@@ -1632,7 +1656,7 @@
"runtime_peak_vram_mb": 26322.0, "runtime_peak_vram_mb": 26322.0,
"load_peak_allocated_mb": 6177.0, "load_peak_allocated_mb": 6177.0,
"runtime_peak_allocated_mb": 19978.0, "runtime_peak_allocated_mb": 19978.0,
"estimated_full_test_time_s": 264.1 "estimated_full_test_time_s": 168.7
}, },
"wan2_1_i2v_14b_480P_2gpu": { "wan2_1_i2v_14b_480P_2gpu": {
"stages_ms": { "stages_ms": {
@@ -1705,7 +1729,7 @@
"warmup_peak_vram_mb": 45782.0, "warmup_peak_vram_mb": 45782.0,
"load_peak_allocated_mb": 34033.0, "load_peak_allocated_mb": 34033.0,
"runtime_peak_allocated_mb": 38569.0, "runtime_peak_allocated_mb": 38569.0,
"estimated_full_test_time_s": 243.0 "estimated_full_test_time_s": 128.8
}, },
"wan2_1_i2v_14b_720P_2gpu": { "wan2_1_i2v_14b_720P_2gpu": {
"stages_ms": { "stages_ms": {
@@ -1777,7 +1801,7 @@
"runtime_peak_vram_mb": 51230.0, "runtime_peak_vram_mb": 51230.0,
"load_peak_allocated_mb": 34033.0, "load_peak_allocated_mb": 34033.0,
"runtime_peak_allocated_mb": 44644.0, "runtime_peak_allocated_mb": 44644.0,
"estimated_full_test_time_s": 248.9 "estimated_full_test_time_s": 182.2
}, },
"wan2_2_t2v_a14b_2gpu": { "wan2_2_t2v_a14b_2gpu": {
"stages_ms": { "stages_ms": {
@@ -1838,7 +1862,7 @@
"warmup_peak_vram_mb": 26902.0, "warmup_peak_vram_mb": 26902.0,
"load_peak_allocated_mb": 6175.0, "load_peak_allocated_mb": 6175.0,
"runtime_peak_allocated_mb": 15472.0, "runtime_peak_allocated_mb": 15472.0,
"estimated_full_test_time_s": 204.3 "estimated_full_test_time_s": 188.0
}, },
"wan2_1_t2v_14b_2gpu": { "wan2_1_t2v_14b_2gpu": {
"stages_ms": { "stages_ms": {
@@ -1908,7 +1932,7 @@
"runtime_peak_vram_mb": 37788.0, "runtime_peak_vram_mb": 37788.0,
"load_peak_allocated_mb": 29869.0, "load_peak_allocated_mb": 29869.0,
"runtime_peak_allocated_mb": 33843.0, "runtime_peak_allocated_mb": 33843.0,
"estimated_full_test_time_s": 173.2 "estimated_full_test_time_s": 96.3
}, },
"wan2_2_t2v_a14b_lora_2gpu": { "wan2_2_t2v_a14b_lora_2gpu": {
"stages_ms": { "stages_ms": {
@@ -1968,7 +1992,7 @@
"runtime_peak_vram_mb": 21450.0, "runtime_peak_vram_mb": 21450.0,
"load_peak_allocated_mb": 6499.0, "load_peak_allocated_mb": 6499.0,
"runtime_peak_allocated_mb": 14775.0, "runtime_peak_allocated_mb": 14775.0,
"estimated_full_test_time_s": 181.8 "estimated_full_test_time_s": 576.3
}, },
"wan2_1_t2v_1_3b_lora_1gpu": { "wan2_1_t2v_1_3b_lora_1gpu": {
"stages_ms": { "stages_ms": {
@@ -2110,7 +2134,7 @@
"runtime_peak_vram_mb": 51132.0, "runtime_peak_vram_mb": 51132.0,
"load_peak_allocated_mb": 34407.0, "load_peak_allocated_mb": 34407.0,
"runtime_peak_allocated_mb": 44992.0, "runtime_peak_allocated_mb": 44992.0,
"estimated_full_test_time_s": 248.2 "estimated_full_test_time_s": 509.3
}, },
"flux_2_image_t2i_2_gpus": { "flux_2_image_t2i_2_gpus": {
"stages_ms": { "stages_ms": {
@@ -2181,7 +2205,7 @@
"runtime_peak_vram_mb": 38262.0, "runtime_peak_vram_mb": 38262.0,
"load_peak_allocated_mb": 32851.0, "load_peak_allocated_mb": 32851.0,
"runtime_peak_allocated_mb": 34824.0, "runtime_peak_allocated_mb": 34824.0,
"estimated_full_test_time_s": 135.3 "estimated_full_test_time_s": 75.0
}, },
"qwen_image_edit_2511_ti2i": { "qwen_image_edit_2511_ti2i": {
"stages_ms": { "stages_ms": {
@@ -2271,7 +2295,7 @@
"runtime_peak_vram_mb": 12634.0, "runtime_peak_vram_mb": 12634.0,
"load_peak_allocated_mb": 7033.0, "load_peak_allocated_mb": 7033.0,
"runtime_peak_allocated_mb": 9311.0, "runtime_peak_allocated_mb": 9311.0,
"estimated_full_test_time_s": 122.7 "estimated_full_test_time_s": 61.3
}, },
"hunyuan3d_shape_gen": { "hunyuan3d_shape_gen": {
"stages_ms": { "stages_ms": {
@@ -2676,7 +2700,7 @@
"runtime_peak_vram_mb": 49390.0, "runtime_peak_vram_mb": 49390.0,
"load_peak_allocated_mb": 45460.0, "load_peak_allocated_mb": 45460.0,
"runtime_peak_allocated_mb": 47725.0, "runtime_peak_allocated_mb": 47725.0,
"estimated_full_test_time_s": 144.2 "estimated_full_test_time_s": 167.9
}, },
"ltx_2.3_two_stage_t2v_2gpus": { "ltx_2.3_two_stage_t2v_2gpus": {
"stages_ms": { "stages_ms": {
@@ -2737,7 +2761,7 @@
"runtime_peak_vram_mb": 59544.0, "runtime_peak_vram_mb": 59544.0,
"load_peak_allocated_mb": 46411.0, "load_peak_allocated_mb": 46411.0,
"runtime_peak_allocated_mb": 56951.0, "runtime_peak_allocated_mb": 56951.0,
"estimated_full_test_time_s": 160.0 "estimated_full_test_time_s": 186.0
}, },
"ltx_2_3_two_stage_ti2v_2gpus": { "ltx_2_3_two_stage_ti2v_2gpus": {
"stages_ms": { "stages_ms": {
@@ -2798,7 +2822,7 @@
"runtime_peak_vram_mb": 60286.0, "runtime_peak_vram_mb": 60286.0,
"load_peak_allocated_mb": 46411.0, "load_peak_allocated_mb": 46411.0,
"runtime_peak_allocated_mb": 56951.0, "runtime_peak_allocated_mb": 56951.0,
"estimated_full_test_time_s": 170.0 "estimated_full_test_time_s": 101.4
}, },
"longlive2_t2v": { "longlive2_t2v": {
"stages_ms": { "stages_ms": {
@@ -3002,7 +3026,7 @@
"expected_e2e_ms": 0.0, "expected_e2e_ms": 0.0,
"expected_avg_denoise_ms": 0.0, "expected_avg_denoise_ms": 0.0,
"expected_median_denoise_ms": 0.0, "expected_median_denoise_ms": 0.0,
"estimated_full_test_time_s": 253.9 "estimated_full_test_time_s": 186.4
}, },
"wan2_1_t2v_1_3b_cache_dit_sp_only_2gpu": { "wan2_1_t2v_1_3b_cache_dit_sp_only_2gpu": {
"stages_ms": {}, "stages_ms": {},
@@ -3010,7 +3034,7 @@
"expected_e2e_ms": 0.0, "expected_e2e_ms": 0.0,
"expected_avg_denoise_ms": 0.0, "expected_avg_denoise_ms": 0.0,
"expected_median_denoise_ms": 0.0, "expected_median_denoise_ms": 0.0,
"estimated_full_test_time_s": 55.4 "estimated_full_test_time_s": 52.2
}, },
"minimax_h3_ref2va_video_audio_2gpu_h100": { "minimax_h3_ref2va_video_audio_2gpu_h100": {
"stages_ms": {}, "stages_ms": {},
@@ -3018,7 +3042,7 @@
"expected_e2e_ms": 0.0, "expected_e2e_ms": 0.0,
"expected_avg_denoise_ms": 0.0, "expected_avg_denoise_ms": 0.0,
"expected_median_denoise_ms": 0.0, "expected_median_denoise_ms": 0.0,
"estimated_full_test_time_s": 266.7 "estimated_full_test_time_s": 170.9
}, },
"minimax_h3_t2va_2gpu_h100": { "minimax_h3_t2va_2gpu_h100": {
"stages_ms": { "stages_ms": {
@@ -3049,7 +3073,7 @@
"runtime_peak_vram_mb": 63312.0, "runtime_peak_vram_mb": 63312.0,
"load_peak_allocated_mb": 15139.0, "load_peak_allocated_mb": 15139.0,
"runtime_peak_allocated_mb": 22887.0, "runtime_peak_allocated_mb": 22887.0,
"estimated_full_test_time_s": 208.0 "estimated_full_test_time_s": 103.9
}, },
"mova_360p_tp2": { "mova_360p_tp2": {
"stages_ms": {}, "stages_ms": {},
@@ -3057,7 +3081,7 @@
"expected_e2e_ms": 0.0, "expected_e2e_ms": 0.0,
"expected_avg_denoise_ms": 0.0, "expected_avg_denoise_ms": 0.0,
"expected_median_denoise_ms": 0.0, "expected_median_denoise_ms": 0.0,
"estimated_full_test_time_s": 160.2 "estimated_full_test_time_s": 141.9
}, },
"mova_360p_ring1_uly2": { "mova_360p_ring1_uly2": {
"stages_ms": {}, "stages_ms": {},
@@ -3065,7 +3089,7 @@
"expected_e2e_ms": 0.0, "expected_e2e_ms": 0.0,
"expected_avg_denoise_ms": 0.0, "expected_avg_denoise_ms": 0.0,
"expected_median_denoise_ms": 0.0, "expected_median_denoise_ms": 0.0,
"estimated_full_test_time_s": 236.8 "estimated_full_test_time_s": 211.8
}, },
"zimage_image_t2i_2_gpus_non_square": { "zimage_image_t2i_2_gpus_non_square": {
"stages_ms": {}, "stages_ms": {},
@@ -3073,7 +3097,7 @@
"expected_e2e_ms": 0.0, "expected_e2e_ms": 0.0,
"expected_avg_denoise_ms": 0.0, "expected_avg_denoise_ms": 0.0,
"expected_median_denoise_ms": 0.0, "expected_median_denoise_ms": 0.0,
"estimated_full_test_time_s": 67.9 "estimated_full_test_time_s": 40.5
}, },
"flux1_modelopt_fp8_t2i": { "flux1_modelopt_fp8_t2i": {
"stages_ms": {}, "stages_ms": {},
@@ -5,6 +5,8 @@ suite when standalone files outnumber the shards, and the shards must agree on
who runs what without talking to each other. who runs what without talking to each other.
""" """
import json
from pathlib import Path
from types import SimpleNamespace from types import SimpleNamespace
import pytest import pytest
@@ -21,6 +23,10 @@ from sglang.multimodal_gen.test.server.gpu_cases import (
TWO_GPU_CASES, TWO_GPU_CASES,
) )
_H100_BASELINE_PATH = (
Path(__file__).resolve().parents[1] / "server/perf_baselines/h100.json"
)
def _items(*est_times: float) -> list[PartitionItem]: def _items(*est_times: float) -> list[PartitionItem]:
return [ return [
@@ -111,6 +117,21 @@ def test_failing_cases_do_not_skip_the_shards_standalone_files(monkeypatch, tmp_
assert exit_code == 1 assert exit_code == 1
def test_two_gpu_cases_have_h100_full_test_time_estimates():
"""Every 2-gpu case must have an h100 estimated_full_test_time_s.
NVIDIA LPT sharding falls back to 300s when the field is missing, which
unbalances the three 2-gpu partitions.
"""
scenarios = json.loads(_H100_BASELINE_PATH.read_text())["scenarios"]
missing = [
case.id
for case in TWO_GPU_CASES
if scenarios.get(case.id, {}).get("estimated_full_test_time_s") is None
]
assert missing == []
def test_qwen_quality_variants_use_the_same_generation_request(): def test_qwen_quality_variants_use_the_same_generation_request():
cases = {case.id: case for case in TWO_GPU_CASES} cases = {case.id: case for case in TWO_GPU_CASES}
lossless = cases["qwen_image_t2i_2_gpus"].sampling_params lossless = cases["qwen_image_t2i_2_gpus"].sampling_params