mirror of
https://github.com/huggingface/diffusers.git
synced 2026-01-27 17:22:53 +03:00
update
This commit is contained in:
@@ -48,12 +48,6 @@ from diffusers.utils import logging
|
||||
from diffusers.utils.import_utils import is_xformers_available
|
||||
from diffusers.utils.source_code_parsing_utils import ReturnNameVisitor
|
||||
|
||||
from ..models.autoencoders.vae import (
|
||||
get_asym_autoencoder_kl_config,
|
||||
get_autoencoder_kl_config,
|
||||
get_autoencoder_tiny_config,
|
||||
get_consistency_vae_config,
|
||||
)
|
||||
from ..models.transformers.test_models_transformer_flux import create_flux_ip_adapter_state_dict
|
||||
from ..models.unets.test_models_unet_2d_condition import (
|
||||
create_ip_adapter_faceid_state_dict,
|
||||
@@ -70,7 +64,6 @@ from ..testing_utils import (
|
||||
require_torch,
|
||||
require_torch_accelerator,
|
||||
require_transformers_version_greater,
|
||||
skip_mps,
|
||||
torch_device,
|
||||
)
|
||||
|
||||
@@ -193,12 +186,12 @@ class SDFunctionTesterMixin:
|
||||
and hasattr(component, "original_attn_processors")
|
||||
and component.original_attn_processors is not None
|
||||
):
|
||||
assert check_qkv_fusion_processors_exist(
|
||||
component
|
||||
), "Something wrong with the fused attention processors. Expected all the attention processors to be fused."
|
||||
assert check_qkv_fusion_matches_attn_procs_length(
|
||||
component, component.original_attn_processors
|
||||
), "Something wrong with the attention processors concerning the fused QKV projections."
|
||||
assert check_qkv_fusion_processors_exist(component), (
|
||||
"Something wrong with the fused attention processors. Expected all the attention processors to be fused."
|
||||
)
|
||||
assert check_qkv_fusion_matches_attn_procs_length(component, component.original_attn_processors), (
|
||||
"Something wrong with the attention processors concerning the fused QKV projections."
|
||||
)
|
||||
|
||||
inputs = self.get_dummy_inputs(device)
|
||||
inputs["return_dict"] = False
|
||||
@@ -211,15 +204,15 @@ class SDFunctionTesterMixin:
|
||||
image_disabled = pipe(**inputs)[0]
|
||||
image_slice_disabled = image_disabled[0, -3:, -3:, -1]
|
||||
|
||||
assert np.allclose(
|
||||
original_image_slice, image_slice_fused, atol=1e-2, rtol=1e-2
|
||||
), "Fusion of QKV projections shouldn't affect the outputs."
|
||||
assert np.allclose(
|
||||
image_slice_fused, image_slice_disabled, atol=1e-2, rtol=1e-2
|
||||
), "Outputs, with QKV projection fusion enabled, shouldn't change when fused QKV projections are disabled."
|
||||
assert np.allclose(
|
||||
original_image_slice, image_slice_disabled, atol=1e-2, rtol=1e-2
|
||||
), "Original outputs should match when fused QKV projections are disabled."
|
||||
assert np.allclose(original_image_slice, image_slice_fused, atol=1e-2, rtol=1e-2), (
|
||||
"Fusion of QKV projections shouldn't affect the outputs."
|
||||
)
|
||||
assert np.allclose(image_slice_fused, image_slice_disabled, atol=1e-2, rtol=1e-2), (
|
||||
"Outputs, with QKV projection fusion enabled, shouldn't change when fused QKV projections are disabled."
|
||||
)
|
||||
assert np.allclose(original_image_slice, image_slice_disabled, atol=1e-2, rtol=1e-2), (
|
||||
"Original outputs should match when fused QKV projections are disabled."
|
||||
)
|
||||
|
||||
|
||||
class IPAdapterTesterMixin:
|
||||
@@ -862,9 +855,9 @@ class PipelineFromPipeTesterMixin:
|
||||
|
||||
for component in pipe_original.components.values():
|
||||
if hasattr(component, "attn_processors"):
|
||||
assert all(
|
||||
type(proc) == AttnProcessor for proc in component.attn_processors.values()
|
||||
), "`from_pipe` changed the attention processor in original pipeline."
|
||||
assert all(type(proc) == AttnProcessor for proc in component.attn_processors.values()), (
|
||||
"`from_pipe` changed the attention processor in original pipeline."
|
||||
)
|
||||
|
||||
@require_accelerator
|
||||
@require_accelerate_version_greater("0.14.0")
|
||||
@@ -2632,12 +2625,12 @@ class PyramidAttentionBroadcastTesterMixin:
|
||||
image_slice_pab_disabled = output.flatten()
|
||||
image_slice_pab_disabled = np.concatenate((image_slice_pab_disabled[:8], image_slice_pab_disabled[-8:]))
|
||||
|
||||
assert np.allclose(
|
||||
original_image_slice, image_slice_pab_enabled, atol=expected_atol
|
||||
), "PAB outputs should not differ much in specified timestep range."
|
||||
assert np.allclose(
|
||||
original_image_slice, image_slice_pab_disabled, atol=1e-4
|
||||
), "Outputs from normal inference and after disabling cache should not differ."
|
||||
assert np.allclose(original_image_slice, image_slice_pab_enabled, atol=expected_atol), (
|
||||
"PAB outputs should not differ much in specified timestep range."
|
||||
)
|
||||
assert np.allclose(original_image_slice, image_slice_pab_disabled, atol=1e-4), (
|
||||
"Outputs from normal inference and after disabling cache should not differ."
|
||||
)
|
||||
|
||||
|
||||
class FasterCacheTesterMixin:
|
||||
@@ -2702,12 +2695,12 @@ class FasterCacheTesterMixin:
|
||||
output = run_forward(pipe).flatten()
|
||||
image_slice_faster_cache_disabled = np.concatenate((output[:8], output[-8:]))
|
||||
|
||||
assert np.allclose(
|
||||
original_image_slice, image_slice_faster_cache_enabled, atol=expected_atol
|
||||
), "FasterCache outputs should not differ much in specified timestep range."
|
||||
assert np.allclose(
|
||||
original_image_slice, image_slice_faster_cache_disabled, atol=1e-4
|
||||
), "Outputs from normal inference and after disabling cache should not differ."
|
||||
assert np.allclose(original_image_slice, image_slice_faster_cache_enabled, atol=expected_atol), (
|
||||
"FasterCache outputs should not differ much in specified timestep range."
|
||||
)
|
||||
assert np.allclose(original_image_slice, image_slice_faster_cache_disabled, atol=1e-4), (
|
||||
"Outputs from normal inference and after disabling cache should not differ."
|
||||
)
|
||||
|
||||
def test_faster_cache_state(self):
|
||||
from diffusers.hooks.faster_cache import _FASTER_CACHE_BLOCK_HOOK, _FASTER_CACHE_DENOISER_HOOK
|
||||
@@ -2842,12 +2835,12 @@ class FirstBlockCacheTesterMixin:
|
||||
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
|
||||
), "FirstBlockCache 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."
|
||||
assert np.allclose(original_image_slice, image_slice_fbc_enabled, atol=expected_atol), (
|
||||
"FirstBlockCache 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.
|
||||
|
||||
Reference in New Issue
Block a user