1
0
mirror of https://github.com/huggingface/diffusers.git synced 2026-01-29 07:22:12 +03:00

add tests

This commit is contained in:
toilaluan
2025-11-29 07:21:01 +00:00
parent 716dfe1468
commit e2dae7e432
6 changed files with 61 additions and 1 deletions

View File

@@ -29,6 +29,7 @@ from ..test_pipelines_common import (
FluxIPAdapterTesterMixin,
PipelineTesterMixin,
PyramidAttentionBroadcastTesterMixin,
TaylorSeerCacheTesterMixin,
check_qkv_fused_layers_exist,
)
@@ -39,6 +40,7 @@ class FluxPipelineFastTests(
PyramidAttentionBroadcastTesterMixin,
FasterCacheTesterMixin,
FirstBlockCacheTesterMixin,
TaylorSeerCacheTesterMixin,
unittest.TestCase,
):
pipeline_class = FluxPipeline

View File

@@ -19,6 +19,7 @@ from ..test_pipelines_common import (
FluxIPAdapterTesterMixin,
PipelineTesterMixin,
PyramidAttentionBroadcastTesterMixin,
TaylorSeerCacheTesterMixin,
)
@@ -28,6 +29,7 @@ class FluxKontextPipelineFastTests(
FluxIPAdapterTesterMixin,
PyramidAttentionBroadcastTesterMixin,
FasterCacheTesterMixin,
TaylorSeerCacheTesterMixin,
):
pipeline_class = FluxKontextPipeline
params = frozenset(

View File

@@ -19,6 +19,7 @@ from ..test_pipelines_common import (
FluxIPAdapterTesterMixin,
PipelineTesterMixin,
PyramidAttentionBroadcastTesterMixin,
TaylorSeerCacheTesterMixin,
)
@@ -28,6 +29,7 @@ class FluxKontextInpaintPipelineFastTests(
FluxIPAdapterTesterMixin,
PyramidAttentionBroadcastTesterMixin,
FasterCacheTesterMixin,
TaylorSeerCacheTesterMixin,
):
pipeline_class = FluxKontextInpaintPipeline
params = frozenset(

View File

@@ -16,11 +16,12 @@ from ...testing_utils import (
)
from ..test_pipelines_common import (
PipelineTesterMixin,
TaylorSeerCacheTesterMixin,
check_qkv_fused_layers_exist,
)
class Flux2PipelineFastTests(PipelineTesterMixin, unittest.TestCase):
class Flux2PipelineFastTests(PipelineTesterMixin, TaylorSeerCacheTesterMixin, unittest.TestCase):
pipeline_class = Flux2Pipeline
params = frozenset(["prompt", "height", "width", "guidance_scale", "prompt_embeds"])
batch_params = frozenset(["prompt"])

View File

@@ -33,6 +33,7 @@ from ..test_pipelines_common import (
FirstBlockCacheTesterMixin,
PipelineTesterMixin,
PyramidAttentionBroadcastTesterMixin,
TaylorSeerCacheTesterMixin,
to_np,
)
@@ -45,6 +46,7 @@ class HunyuanVideoPipelineFastTests(
PyramidAttentionBroadcastTesterMixin,
FasterCacheTesterMixin,
FirstBlockCacheTesterMixin,
TaylorSeerCacheTesterMixin,
unittest.TestCase,
):
pipeline_class = HunyuanVideoPipeline

View File

@@ -36,6 +36,7 @@ from diffusers.hooks import apply_group_offloading
from diffusers.hooks.faster_cache import FasterCacheBlockHook, FasterCacheDenoiserHook
from diffusers.hooks.first_block_cache import FirstBlockCacheConfig
from diffusers.hooks.pyramid_attention_broadcast import PyramidAttentionBroadcastHook
from diffusers.hooks.taylorseer_cache import TaylorSeerCacheConfig
from diffusers.image_processor import VaeImageProcessor
from diffusers.loaders import FluxIPAdapterMixin, IPAdapterMixin
from diffusers.models.attention import AttentionModuleMixin
@@ -2923,6 +2924,56 @@ class FirstBlockCacheTesterMixin:
"Outputs from normal inference and after disabling cache should not differ."
)
class TaylorSeerCacheTesterMixin:
taylorseer_cache_config = TaylorSeerCacheConfig(
cache_interval=5,
disable_cache_before_step=10,
max_order=1,
taylor_factors_dtype=torch.bfloat16,
use_lite_mode=True,
)
def test_taylorseer_cache_inference(self, expected_atol: float = 0.1):
device = "cpu" # ensure determinism for the device-dependent torch.Generator
def create_pipe():
torch.manual_seed(0)
num_layers = 2
components = self.get_dummy_components(num_layers=num_layers)
pipe = self.pipeline_class(**components)
pipe = pipe.to(device)
pipe.set_progress_bar_config(disable=None)
return pipe
def run_forward(pipe):
torch.manual_seed(0)
inputs = self.get_dummy_inputs(device)
inputs["num_inference_steps"] = 50
return pipe(**inputs)[0]
# Run inference without TaylorSeerCache
pipe = create_pipe()
output = run_forward(pipe).flatten()
original_image_slice = np.concatenate((output[:8], output[-8:]))
# Run inference with TaylorSeerCache enabled
pipe = create_pipe()
pipe.transformer.enable_cache(self.taylorseer_cache_config)
output = run_forward(pipe).flatten()
image_slice_fbc_enabled = np.concatenate((output[:8], output[-8:]))
# Run inference with TaylorSeerCache disabled
pipe.transformer.disable_cache()
output = run_forward(pipe).flatten()
image_slice_fbc_disabled = np.concatenate((output[:8], output[-8:]))
assert np.allclose(original_image_slice, image_slice_fbc_enabled, atol=expected_atol), (
"TaylorSeerCache outputs should not differ much."
)
assert np.allclose(original_image_slice, image_slice_fbc_disabled, atol=1e-4), (
"Outputs from normal inference and after disabling cache should not differ."
)
# Some models (e.g. unCLIP) are extremely likely to significantly deviate depending on which hardware is used.
# This helper function is used to check that the image doesn't deviate on average more than 10 pixels from a