[diffusion] model: Support TurboWan2.2-I2V SLA && add CI test for TurboWan (#16536)

This commit is contained in:
HuangJi
2026-01-12 13:55:38 +08:00
committed by GitHub
parent 38b30c7b56
commit feb39f7768
9 changed files with 247 additions and 25 deletions

View File

@@ -804,6 +804,27 @@
"expected_avg_denoise_ms": 260.76,
"expected_median_denoise_ms": 247.84
},
"turbo_wan2_1_t2v_1.3b": {
"stages_ms": {
"InputValidationStage": 0.06,
"TextEncodingStage": 2508.95,
"ConditioningStage": 0.04,
"TimestepPreparationStage": 73.51,
"LatentPreparationStage": 1.34,
"DmdDenoisingStage": 1285.25,
"DecodingStage": 805.04,
"per_frame_generation": null
},
"denoise_step_ms": {
"0": 897.62,
"1": 126.04,
"2": 126.52,
"3": 128.26
},
"expected_e2e_ms": 4686.66,
"expected_avg_denoise_ms": 319.61,
"expected_median_denoise_ms": 127.39
},
"wan2_2_ti2v_5b": {
"stages_ms": {
"InputValidationStage": 96.27,
@@ -1092,6 +1113,28 @@
"expected_avg_denoise_ms": 2831.00,
"expected_median_denoise_ms": 1600.09
},
"turbo_wan2_2_i2v_a14b_2gpu": {
"stages_ms": {
"InputValidationStage": 25.01,
"TextEncodingStage": 5198.6,
"ConditioningStage": 0.04,
"TimestepPreparationStage": 56.26,
"LatentPreparationStage": 1.4,
"ImageVAEEncodingStage": 1001.89,
"DmdDenoisingStage": 4487.79,
"DecodingStage": 821.01,
"per_frame_generation": null
},
"denoise_step_ms": {
"0": 3042.56,
"1": 485.88,
"2": 477.59,
"3": 475.58
},
"expected_e2e_ms": 11605.97,
"expected_avg_denoise_ms": 1120.4,
"expected_median_denoise_ms": 481.74
},
"wan2_1_i2v_14b_480P_2gpu": {
"stages_ms": {
"InputValidationStage": 38.23,

View File

@@ -1078,7 +1078,11 @@ def get_generate_fn(
prompt=sampling_params.prompt,
size=sampling_params.output_size,
seconds=video_seconds,
extra_body={"reference_url": sampling_params.image_path},
extra_body={
"reference_url": sampling_params.image_path,
"fps": sampling_params.fps,
"num_frames": sampling_params.num_frames,
},
)
def generate_text_image_to_video(case_id, client) -> str:
@@ -1102,6 +1106,10 @@ def get_generate_fn(
size=output_size,
seconds=video_seconds,
input_reference=fh,
extra_body={
"fps": sampling_params.fps,
"num_frames": sampling_params.num_frames,
},
)
if modality == "video":

View File

@@ -25,6 +25,7 @@ from dataclasses import dataclass
from pathlib import Path
from typing import Sequence
from sglang.multimodal_gen.runtime.platforms import current_platform
from sglang.multimodal_gen.runtime.utils.perf_logger import RequestPerfRecord
@@ -300,6 +301,15 @@ TI2V_sampling_params = DiffusionSamplingParams(
direct_url_test=True,
)
TURBOWAN_I2V_sampling_params = DiffusionSamplingParams(
prompt="The man in the picture slowly turns his head, his expression enigmatic and otherworldly. The camera performs a slow, cinematic dolly out, focusing on his face. Moody lighting, neon signs glowing in the background, shallow depth of field.",
image_path="https://is1-ssl.mzstatic.com/image/thumb/Music114/v4/5f/fa/56/5ffa56c2-ea1f-7a17-6bad-192ff9b6476d/825646124206.jpg/600x600bb.jpg",
direct_url_test=True,
output_size="960x960",
num_frames=4,
fps=4,
)
# All test cases with clean default values
# To test different models, simply add more DiffusionCase entries
ONE_GPU_CASES_A: list[DiffusionTestCase] = [
@@ -496,6 +506,23 @@ ONE_GPU_CASES_B: list[DiffusionTestCase] = [
),
]
# Skip turbowan because Triton requires 81920 shared memory, but AMD only has 65536.
if not current_platform.is_hip():
ONE_GPU_CASES_B.append(
DiffusionTestCase(
"turbo_wan2_1_t2v_1.3b",
DiffusionServerArgs(
model_path="IPostYellow/TurboWan2.1-T2V-1.3B-Diffusers",
modality="video",
warmup=0,
custom_validator="video",
),
DiffusionSamplingParams(
prompt=T2V_PROMPT,
),
)
)
TWO_GPU_CASES_A = [
DiffusionTestCase(
"wan2_2_i2v_a14b_2gpu",
@@ -551,6 +578,23 @@ TWO_GPU_CASES_A = [
),
]
# Skip turbowan because Triton requires 81920 shared memory, but AMD only has 65536.
if not current_platform.is_hip():
TWO_GPU_CASES_A.append(
DiffusionTestCase(
"turbo_wan2_2_i2v_a14b_2gpu",
DiffusionServerArgs(
model_path="IPostYellow/TurboWan2.2-I2V-A14B-Diffusers",
modality="video",
warmup=0,
custom_validator="video",
num_gpus=2,
tp_size=2,
),
TURBOWAN_I2V_sampling_params,
)
)
TWO_GPU_CASES_B = [
DiffusionTestCase(
"wan2_1_i2v_14b_480P_2gpu",