Unverified Commit edc154da authored by Dhruv Nair's avatar Dhruv Nair Committed by GitHub
Browse files

Update Ruff to latest Version (#10919)

* update

* update

* update

* update
parent 552cd320
...@@ -92,9 +92,9 @@ class SD3TransformerTests(ModelTesterMixin, unittest.TestCase): ...@@ -92,9 +92,9 @@ class SD3TransformerTests(ModelTesterMixin, unittest.TestCase):
model.enable_xformers_memory_efficient_attention() model.enable_xformers_memory_efficient_attention()
assert ( assert model.transformer_blocks[0].attn.processor.__class__.__name__ == "XFormersJointAttnProcessor", (
model.transformer_blocks[0].attn.processor.__class__.__name__ == "XFormersJointAttnProcessor" "xformers is not enabled"
), "xformers is not enabled" )
@unittest.skip("SD3Transformer2DModel uses a dedicated attention processor. This test doesn't apply") @unittest.skip("SD3Transformer2DModel uses a dedicated attention processor. This test doesn't apply")
def test_set_attn_processor_for_determinism(self): def test_set_attn_processor_for_determinism(self):
...@@ -167,9 +167,9 @@ class SD35TransformerTests(ModelTesterMixin, unittest.TestCase): ...@@ -167,9 +167,9 @@ class SD35TransformerTests(ModelTesterMixin, unittest.TestCase):
model.enable_xformers_memory_efficient_attention() model.enable_xformers_memory_efficient_attention()
assert ( assert model.transformer_blocks[0].attn.processor.__class__.__name__ == "XFormersJointAttnProcessor", (
model.transformer_blocks[0].attn.processor.__class__.__name__ == "XFormersJointAttnProcessor" "xformers is not enabled"
), "xformers is not enabled" )
@unittest.skip("SD3Transformer2DModel uses a dedicated attention processor. This test doesn't apply") @unittest.skip("SD3Transformer2DModel uses a dedicated attention processor. This test doesn't apply")
def test_set_attn_processor_for_determinism(self): def test_set_attn_processor_for_determinism(self):
......
...@@ -654,22 +654,22 @@ class UNet2DConditionModelTests(ModelTesterMixin, UNetTesterMixin, unittest.Test ...@@ -654,22 +654,22 @@ class UNet2DConditionModelTests(ModelTesterMixin, UNetTesterMixin, unittest.Test
keepall_mask = torch.ones(*cond.shape[:-1], device=cond.device, dtype=mask_dtype) keepall_mask = torch.ones(*cond.shape[:-1], device=cond.device, dtype=mask_dtype)
full_cond_keepallmask_out = model(**{**inputs_dict, "encoder_attention_mask": keepall_mask}).sample full_cond_keepallmask_out = model(**{**inputs_dict, "encoder_attention_mask": keepall_mask}).sample
assert full_cond_keepallmask_out.allclose( assert full_cond_keepallmask_out.allclose(full_cond_out, rtol=1e-05, atol=1e-05), (
full_cond_out, rtol=1e-05, atol=1e-05 "a 'keep all' mask should give the same result as no mask"
), "a 'keep all' mask should give the same result as no mask" )
trunc_cond = cond[:, :-1, :] trunc_cond = cond[:, :-1, :]
trunc_cond_out = model(**{**inputs_dict, "encoder_hidden_states": trunc_cond}).sample trunc_cond_out = model(**{**inputs_dict, "encoder_hidden_states": trunc_cond}).sample
assert not trunc_cond_out.allclose( assert not trunc_cond_out.allclose(full_cond_out, rtol=1e-05, atol=1e-05), (
full_cond_out, rtol=1e-05, atol=1e-05 "discarding the last token from our cond should change the result"
), "discarding the last token from our cond should change the result" )
batch, tokens, _ = cond.shape batch, tokens, _ = cond.shape
mask_last = (torch.arange(tokens) < tokens - 1).expand(batch, -1).to(cond.device, mask_dtype) mask_last = (torch.arange(tokens) < tokens - 1).expand(batch, -1).to(cond.device, mask_dtype)
masked_cond_out = model(**{**inputs_dict, "encoder_attention_mask": mask_last}).sample masked_cond_out = model(**{**inputs_dict, "encoder_attention_mask": mask_last}).sample
assert masked_cond_out.allclose( assert masked_cond_out.allclose(trunc_cond_out, rtol=1e-05, atol=1e-05), (
trunc_cond_out, rtol=1e-05, atol=1e-05 "masking the last token from our cond should be equivalent to truncating that token out of the condition"
), "masking the last token from our cond should be equivalent to truncating that token out of the condition" )
# see diffusers.models.attention_processor::Attention#prepare_attention_mask # see diffusers.models.attention_processor::Attention#prepare_attention_mask
# note: we may not need to fix mask padding to work for stable-diffusion cross-attn masks. # note: we may not need to fix mask padding to work for stable-diffusion cross-attn masks.
...@@ -697,9 +697,9 @@ class UNet2DConditionModelTests(ModelTesterMixin, UNetTesterMixin, unittest.Test ...@@ -697,9 +697,9 @@ class UNet2DConditionModelTests(ModelTesterMixin, UNetTesterMixin, unittest.Test
trunc_mask = torch.zeros(batch, tokens - 1, device=cond.device, dtype=torch.bool) trunc_mask = torch.zeros(batch, tokens - 1, device=cond.device, dtype=torch.bool)
trunc_mask_out = model(**{**inputs_dict, "encoder_attention_mask": trunc_mask}).sample trunc_mask_out = model(**{**inputs_dict, "encoder_attention_mask": trunc_mask}).sample
assert trunc_mask_out.allclose( assert trunc_mask_out.allclose(keeplast_out), (
keeplast_out "a mask with fewer tokens than condition, will be padded with 'keep' tokens. a 'discard-all' mask missing the final token is thus equivalent to a 'keep last' mask."
), "a mask with fewer tokens than condition, will be padded with 'keep' tokens. a 'discard-all' mask missing the final token is thus equivalent to a 'keep last' mask." )
def test_custom_diffusion_processors(self): def test_custom_diffusion_processors(self):
# enable deterministic behavior for gradient checkpointing # enable deterministic behavior for gradient checkpointing
...@@ -1114,12 +1114,12 @@ class UNet2DConditionModelTests(ModelTesterMixin, UNetTesterMixin, unittest.Test ...@@ -1114,12 +1114,12 @@ class UNet2DConditionModelTests(ModelTesterMixin, UNetTesterMixin, unittest.Test
with torch.no_grad(): with torch.no_grad():
lora_sample_2 = model(**inputs_dict).sample lora_sample_2 = model(**inputs_dict).sample
assert not torch.allclose( assert not torch.allclose(non_lora_sample, lora_sample_1, atol=1e-4, rtol=1e-4), (
non_lora_sample, lora_sample_1, atol=1e-4, rtol=1e-4 "LoRA injected UNet should produce different results."
), "LoRA injected UNet should produce different results." )
assert torch.allclose( assert torch.allclose(lora_sample_1, lora_sample_2, atol=1e-4, rtol=1e-4), (
lora_sample_1, lora_sample_2, atol=1e-4, rtol=1e-4 "Loading from a saved checkpoint should produce identical results."
), "Loading from a saved checkpoint should produce identical results." )
@require_peft_backend @require_peft_backend
def test_save_attn_procs_raise_warning(self): def test_save_attn_procs_raise_warning(self):
......
...@@ -65,9 +65,9 @@ class ImageProcessorTest(unittest.TestCase): ...@@ -65,9 +65,9 @@ class ImageProcessorTest(unittest.TestCase):
) )
out_np = self.to_np(out) out_np = self.to_np(out)
in_np = (input_np * 255).round() if output_type == "pil" else input_np in_np = (input_np * 255).round() if output_type == "pil" else input_np
assert ( assert np.abs(in_np - out_np).max() < 1e-6, (
np.abs(in_np - out_np).max() < 1e-6 f"decoded output does not match input for output_type {output_type}"
), f"decoded output does not match input for output_type {output_type}" )
def test_vae_image_processor_np(self): def test_vae_image_processor_np(self):
image_processor = VaeImageProcessor(do_resize=False, do_normalize=True) image_processor = VaeImageProcessor(do_resize=False, do_normalize=True)
...@@ -78,9 +78,9 @@ class ImageProcessorTest(unittest.TestCase): ...@@ -78,9 +78,9 @@ class ImageProcessorTest(unittest.TestCase):
out_np = self.to_np(out) out_np = self.to_np(out)
in_np = (input_np * 255).round() if output_type == "pil" else input_np in_np = (input_np * 255).round() if output_type == "pil" else input_np
assert ( assert np.abs(in_np - out_np).max() < 1e-6, (
np.abs(in_np - out_np).max() < 1e-6 f"decoded output does not match input for output_type {output_type}"
), f"decoded output does not match input for output_type {output_type}" )
def test_vae_image_processor_pil(self): def test_vae_image_processor_pil(self):
image_processor = VaeImageProcessor(do_resize=False, do_normalize=True) image_processor = VaeImageProcessor(do_resize=False, do_normalize=True)
...@@ -93,9 +93,9 @@ class ImageProcessorTest(unittest.TestCase): ...@@ -93,9 +93,9 @@ class ImageProcessorTest(unittest.TestCase):
for i, o in zip(input_pil, out): for i, o in zip(input_pil, out):
in_np = np.array(i) in_np = np.array(i)
out_np = self.to_np(out) if output_type == "pil" else (self.to_np(out) * 255).round() out_np = self.to_np(out) if output_type == "pil" else (self.to_np(out) * 255).round()
assert ( assert np.abs(in_np - out_np).max() < 1e-6, (
np.abs(in_np - out_np).max() < 1e-6 f"decoded output does not match input for output_type {output_type}"
), f"decoded output does not match input for output_type {output_type}" )
def test_preprocess_input_3d(self): def test_preprocess_input_3d(self):
image_processor = VaeImageProcessor(do_resize=False, do_normalize=False) image_processor = VaeImageProcessor(do_resize=False, do_normalize=False)
...@@ -293,9 +293,9 @@ class ImageProcessorTest(unittest.TestCase): ...@@ -293,9 +293,9 @@ class ImageProcessorTest(unittest.TestCase):
scale = 2 scale = 2
out_pt = image_processor.resize(image=input_pt, height=h // scale, width=w // scale) out_pt = image_processor.resize(image=input_pt, height=h // scale, width=w // scale)
exp_pt_shape = (b, c, h // scale, w // scale) exp_pt_shape = (b, c, h // scale, w // scale)
assert ( assert out_pt.shape == exp_pt_shape, (
out_pt.shape == exp_pt_shape f"resized image output shape '{out_pt.shape}' didn't match expected shape '{exp_pt_shape}'."
), f"resized image output shape '{out_pt.shape}' didn't match expected shape '{exp_pt_shape}'." )
def test_vae_image_processor_resize_np(self): def test_vae_image_processor_resize_np(self):
image_processor = VaeImageProcessor(do_resize=True, vae_scale_factor=1) image_processor = VaeImageProcessor(do_resize=True, vae_scale_factor=1)
...@@ -305,6 +305,6 @@ class ImageProcessorTest(unittest.TestCase): ...@@ -305,6 +305,6 @@ class ImageProcessorTest(unittest.TestCase):
input_np = self.to_np(input_pt) input_np = self.to_np(input_pt)
out_np = image_processor.resize(image=input_np, height=h // scale, width=w // scale) out_np = image_processor.resize(image=input_np, height=h // scale, width=w // scale)
exp_np_shape = (b, h // scale, w // scale, c) exp_np_shape = (b, h // scale, w // scale, c)
assert ( assert out_np.shape == exp_np_shape, (
out_np.shape == exp_np_shape f"resized image output shape '{out_np.shape}' didn't match expected shape '{exp_np_shape}'."
), f"resized image output shape '{out_np.shape}' didn't match expected shape '{exp_np_shape}'." )
...@@ -126,8 +126,7 @@ class AmusedPipelineFastTests(PipelineTesterMixin, unittest.TestCase): ...@@ -126,8 +126,7 @@ class AmusedPipelineFastTests(PipelineTesterMixin, unittest.TestCase):
self._test_inference_batch_consistent(batch_sizes=batch_sizes, batch_generator=False) self._test_inference_batch_consistent(batch_sizes=batch_sizes, batch_generator=False)
@unittest.skip("aMUSEd does not support lists of generators") @unittest.skip("aMUSEd does not support lists of generators")
def test_inference_batch_single_identical(self): def test_inference_batch_single_identical(self): ...
...
@slow @slow
......
...@@ -126,8 +126,7 @@ class AmusedImg2ImgPipelineFastTests(PipelineTesterMixin, unittest.TestCase): ...@@ -126,8 +126,7 @@ class AmusedImg2ImgPipelineFastTests(PipelineTesterMixin, unittest.TestCase):
self._test_inference_batch_consistent(batch_sizes=batch_sizes, batch_generator=False) self._test_inference_batch_consistent(batch_sizes=batch_sizes, batch_generator=False)
@unittest.skip("aMUSEd does not support lists of generators") @unittest.skip("aMUSEd does not support lists of generators")
def test_inference_batch_single_identical(self): def test_inference_batch_single_identical(self): ...
...
@slow @slow
......
...@@ -130,8 +130,7 @@ class AmusedInpaintPipelineFastTests(PipelineTesterMixin, unittest.TestCase): ...@@ -130,8 +130,7 @@ class AmusedInpaintPipelineFastTests(PipelineTesterMixin, unittest.TestCase):
self._test_inference_batch_consistent(batch_sizes=batch_sizes, batch_generator=False) self._test_inference_batch_consistent(batch_sizes=batch_sizes, batch_generator=False)
@unittest.skip("aMUSEd does not support lists of generators") @unittest.skip("aMUSEd does not support lists of generators")
def test_inference_batch_single_identical(self): def test_inference_batch_single_identical(self): ...
...
@slow @slow
......
...@@ -106,9 +106,9 @@ class AuraFlowPipelineFastTests(unittest.TestCase, PipelineTesterMixin): ...@@ -106,9 +106,9 @@ class AuraFlowPipelineFastTests(unittest.TestCase, PipelineTesterMixin):
# TODO (sayakpaul): will refactor this once `fuse_qkv_projections()` has been added # TODO (sayakpaul): will refactor this once `fuse_qkv_projections()` has been added
# to the pipeline level. # to the pipeline level.
pipe.transformer.fuse_qkv_projections() pipe.transformer.fuse_qkv_projections()
assert check_qkv_fusion_processors_exist( assert check_qkv_fusion_processors_exist(pipe.transformer), (
pipe.transformer "Something wrong with the fused attention processors. Expected all the attention processors to be fused."
), "Something wrong with the fused attention processors. Expected all the attention processors to be fused." )
assert check_qkv_fusion_matches_attn_procs_length( assert check_qkv_fusion_matches_attn_procs_length(
pipe.transformer, pipe.transformer.original_attn_processors pipe.transformer, pipe.transformer.original_attn_processors
), "Something wrong with the attention processors concerning the fused QKV projections." ), "Something wrong with the attention processors concerning the fused QKV projections."
...@@ -122,15 +122,15 @@ class AuraFlowPipelineFastTests(unittest.TestCase, PipelineTesterMixin): ...@@ -122,15 +122,15 @@ class AuraFlowPipelineFastTests(unittest.TestCase, PipelineTesterMixin):
image = pipe(**inputs).images image = pipe(**inputs).images
image_slice_disabled = image[0, -3:, -3:, -1] image_slice_disabled = image[0, -3:, -3:, -1]
assert np.allclose( assert np.allclose(original_image_slice, image_slice_fused, atol=1e-3, rtol=1e-3), (
original_image_slice, image_slice_fused, atol=1e-3, rtol=1e-3 "Fusion of QKV projections shouldn't affect the outputs."
), "Fusion of QKV projections shouldn't affect the outputs." )
assert np.allclose( assert np.allclose(image_slice_fused, image_slice_disabled, atol=1e-3, rtol=1e-3), (
image_slice_fused, image_slice_disabled, atol=1e-3, rtol=1e-3 "Outputs, with QKV projection fusion enabled, shouldn't change when fused QKV projections are disabled."
), "Outputs, with QKV projection fusion enabled, shouldn't change when fused QKV projections are disabled." )
assert np.allclose( assert np.allclose(original_image_slice, image_slice_disabled, atol=1e-2, rtol=1e-2), (
original_image_slice, image_slice_disabled, atol=1e-2, rtol=1e-2 "Original outputs should match when fused QKV projections are disabled."
), "Original outputs should match when fused QKV projections are disabled." )
@unittest.skip("xformers attention processor does not exist for AuraFlow") @unittest.skip("xformers attention processor does not exist for AuraFlow")
def test_xformers_attention_forwardGenerator_pass(self): def test_xformers_attention_forwardGenerator_pass(self):
......
...@@ -195,9 +195,9 @@ class BlipDiffusionPipelineFastTests(PipelineTesterMixin, unittest.TestCase): ...@@ -195,9 +195,9 @@ class BlipDiffusionPipelineFastTests(PipelineTesterMixin, unittest.TestCase):
[0.5329548, 0.8372512, 0.33269387, 0.82096875, 0.43657133, 0.3783, 0.5953028, 0.51934963, 0.42142007] [0.5329548, 0.8372512, 0.33269387, 0.82096875, 0.43657133, 0.3783, 0.5953028, 0.51934963, 0.42142007]
) )
assert ( assert np.abs(image_slice.flatten() - expected_slice).max() < 1e-2, (
np.abs(image_slice.flatten() - expected_slice).max() < 1e-2 f" expected_slice {image_slice.flatten()}, but got {image_slice.flatten()}"
), f" expected_slice {image_slice.flatten()}, but got {image_slice.flatten()}" )
@unittest.skip("Test not supported because of complexities in deriving query_embeds.") @unittest.skip("Test not supported because of complexities in deriving query_embeds.")
def test_encode_prompt_works_in_isolation(self): def test_encode_prompt_works_in_isolation(self):
......
...@@ -299,9 +299,9 @@ class CogVideoXPipelineFastTests( ...@@ -299,9 +299,9 @@ class CogVideoXPipelineFastTests(
original_image_slice = frames[0, -2:, -1, -3:, -3:] original_image_slice = frames[0, -2:, -1, -3:, -3:]
pipe.fuse_qkv_projections() pipe.fuse_qkv_projections()
assert check_qkv_fusion_processors_exist( assert check_qkv_fusion_processors_exist(pipe.transformer), (
pipe.transformer "Something wrong with the fused attention processors. Expected all the attention processors to be fused."
), "Something wrong with the fused attention processors. Expected all the attention processors to be fused." )
assert check_qkv_fusion_matches_attn_procs_length( assert check_qkv_fusion_matches_attn_procs_length(
pipe.transformer, pipe.transformer.original_attn_processors pipe.transformer, pipe.transformer.original_attn_processors
), "Something wrong with the attention processors concerning the fused QKV projections." ), "Something wrong with the attention processors concerning the fused QKV projections."
...@@ -315,15 +315,15 @@ class CogVideoXPipelineFastTests( ...@@ -315,15 +315,15 @@ class CogVideoXPipelineFastTests(
frames = pipe(**inputs).frames frames = pipe(**inputs).frames
image_slice_disabled = frames[0, -2:, -1, -3:, -3:] image_slice_disabled = frames[0, -2:, -1, -3:, -3:]
assert np.allclose( assert np.allclose(original_image_slice, image_slice_fused, atol=1e-3, rtol=1e-3), (
original_image_slice, image_slice_fused, atol=1e-3, rtol=1e-3 "Fusion of QKV projections shouldn't affect the outputs."
), "Fusion of QKV projections shouldn't affect the outputs." )
assert np.allclose( assert np.allclose(image_slice_fused, image_slice_disabled, atol=1e-3, rtol=1e-3), (
image_slice_fused, image_slice_disabled, atol=1e-3, rtol=1e-3 "Outputs, with QKV projection fusion enabled, shouldn't change when fused QKV projections are disabled."
), "Outputs, with QKV projection fusion enabled, shouldn't change when fused QKV projections are disabled." )
assert np.allclose( assert np.allclose(original_image_slice, image_slice_disabled, atol=1e-2, rtol=1e-2), (
original_image_slice, image_slice_disabled, atol=1e-2, rtol=1e-2 "Original outputs should match when fused QKV projections are disabled."
), "Original outputs should match when fused QKV projections are disabled." )
@slow @slow
......
...@@ -299,9 +299,9 @@ class CogVideoXFunControlPipelineFastTests(PipelineTesterMixin, unittest.TestCas ...@@ -299,9 +299,9 @@ class CogVideoXFunControlPipelineFastTests(PipelineTesterMixin, unittest.TestCas
original_image_slice = frames[0, -2:, -1, -3:, -3:] original_image_slice = frames[0, -2:, -1, -3:, -3:]
pipe.fuse_qkv_projections() pipe.fuse_qkv_projections()
assert check_qkv_fusion_processors_exist( assert check_qkv_fusion_processors_exist(pipe.transformer), (
pipe.transformer "Something wrong with the fused attention processors. Expected all the attention processors to be fused."
), "Something wrong with the fused attention processors. Expected all the attention processors to be fused." )
assert check_qkv_fusion_matches_attn_procs_length( assert check_qkv_fusion_matches_attn_procs_length(
pipe.transformer, pipe.transformer.original_attn_processors pipe.transformer, pipe.transformer.original_attn_processors
), "Something wrong with the attention processors concerning the fused QKV projections." ), "Something wrong with the attention processors concerning the fused QKV projections."
...@@ -315,12 +315,12 @@ class CogVideoXFunControlPipelineFastTests(PipelineTesterMixin, unittest.TestCas ...@@ -315,12 +315,12 @@ class CogVideoXFunControlPipelineFastTests(PipelineTesterMixin, unittest.TestCas
frames = pipe(**inputs).frames frames = pipe(**inputs).frames
image_slice_disabled = frames[0, -2:, -1, -3:, -3:] image_slice_disabled = frames[0, -2:, -1, -3:, -3:]
assert np.allclose( assert np.allclose(original_image_slice, image_slice_fused, atol=1e-3, rtol=1e-3), (
original_image_slice, image_slice_fused, atol=1e-3, rtol=1e-3 "Fusion of QKV projections shouldn't affect the outputs."
), "Fusion of QKV projections shouldn't affect the outputs." )
assert np.allclose( assert np.allclose(image_slice_fused, image_slice_disabled, atol=1e-3, rtol=1e-3), (
image_slice_fused, image_slice_disabled, atol=1e-3, rtol=1e-3 "Outputs, with QKV projection fusion enabled, shouldn't change when fused QKV projections are disabled."
), "Outputs, with QKV projection fusion enabled, shouldn't change when fused QKV projections are disabled." )
assert np.allclose( assert np.allclose(original_image_slice, image_slice_disabled, atol=1e-2, rtol=1e-2), (
original_image_slice, image_slice_disabled, atol=1e-2, rtol=1e-2 "Original outputs should match when fused QKV projections are disabled."
), "Original outputs should match when fused QKV projections are disabled." )
...@@ -317,9 +317,9 @@ class CogVideoXImageToVideoPipelineFastTests(PipelineTesterMixin, unittest.TestC ...@@ -317,9 +317,9 @@ class CogVideoXImageToVideoPipelineFastTests(PipelineTesterMixin, unittest.TestC
original_image_slice = frames[0, -2:, -1, -3:, -3:] original_image_slice = frames[0, -2:, -1, -3:, -3:]
pipe.fuse_qkv_projections() pipe.fuse_qkv_projections()
assert check_qkv_fusion_processors_exist( assert check_qkv_fusion_processors_exist(pipe.transformer), (
pipe.transformer "Something wrong with the fused attention processors. Expected all the attention processors to be fused."
), "Something wrong with the fused attention processors. Expected all the attention processors to be fused." )
assert check_qkv_fusion_matches_attn_procs_length( assert check_qkv_fusion_matches_attn_procs_length(
pipe.transformer, pipe.transformer.original_attn_processors pipe.transformer, pipe.transformer.original_attn_processors
), "Something wrong with the attention processors concerning the fused QKV projections." ), "Something wrong with the attention processors concerning the fused QKV projections."
...@@ -333,15 +333,15 @@ class CogVideoXImageToVideoPipelineFastTests(PipelineTesterMixin, unittest.TestC ...@@ -333,15 +333,15 @@ class CogVideoXImageToVideoPipelineFastTests(PipelineTesterMixin, unittest.TestC
frames = pipe(**inputs).frames frames = pipe(**inputs).frames
image_slice_disabled = frames[0, -2:, -1, -3:, -3:] image_slice_disabled = frames[0, -2:, -1, -3:, -3:]
assert np.allclose( assert np.allclose(original_image_slice, image_slice_fused, atol=1e-3, rtol=1e-3), (
original_image_slice, image_slice_fused, atol=1e-3, rtol=1e-3 "Fusion of QKV projections shouldn't affect the outputs."
), "Fusion of QKV projections shouldn't affect the outputs." )
assert np.allclose( assert np.allclose(image_slice_fused, image_slice_disabled, atol=1e-3, rtol=1e-3), (
image_slice_fused, image_slice_disabled, atol=1e-3, rtol=1e-3 "Outputs, with QKV projection fusion enabled, shouldn't change when fused QKV projections are disabled."
), "Outputs, with QKV projection fusion enabled, shouldn't change when fused QKV projections are disabled." )
assert np.allclose( assert np.allclose(original_image_slice, image_slice_disabled, atol=1e-2, rtol=1e-2), (
original_image_slice, image_slice_disabled, atol=1e-2, rtol=1e-2 "Original outputs should match when fused QKV projections are disabled."
), "Original outputs should match when fused QKV projections are disabled." )
@slow @slow
......
...@@ -298,9 +298,9 @@ class CogVideoXVideoToVideoPipelineFastTests(PipelineTesterMixin, unittest.TestC ...@@ -298,9 +298,9 @@ class CogVideoXVideoToVideoPipelineFastTests(PipelineTesterMixin, unittest.TestC
original_image_slice = frames[0, -2:, -1, -3:, -3:] original_image_slice = frames[0, -2:, -1, -3:, -3:]
pipe.fuse_qkv_projections() pipe.fuse_qkv_projections()
assert check_qkv_fusion_processors_exist( assert check_qkv_fusion_processors_exist(pipe.transformer), (
pipe.transformer "Something wrong with the fused attention processors. Expected all the attention processors to be fused."
), "Something wrong with the fused attention processors. Expected all the attention processors to be fused." )
assert check_qkv_fusion_matches_attn_procs_length( assert check_qkv_fusion_matches_attn_procs_length(
pipe.transformer, pipe.transformer.original_attn_processors pipe.transformer, pipe.transformer.original_attn_processors
), "Something wrong with the attention processors concerning the fused QKV projections." ), "Something wrong with the attention processors concerning the fused QKV projections."
...@@ -314,12 +314,12 @@ class CogVideoXVideoToVideoPipelineFastTests(PipelineTesterMixin, unittest.TestC ...@@ -314,12 +314,12 @@ class CogVideoXVideoToVideoPipelineFastTests(PipelineTesterMixin, unittest.TestC
frames = pipe(**inputs).frames frames = pipe(**inputs).frames
image_slice_disabled = frames[0, -2:, -1, -3:, -3:] image_slice_disabled = frames[0, -2:, -1, -3:, -3:]
assert np.allclose( assert np.allclose(original_image_slice, image_slice_fused, atol=1e-3, rtol=1e-3), (
original_image_slice, image_slice_fused, atol=1e-3, rtol=1e-3 "Fusion of QKV projections shouldn't affect the outputs."
), "Fusion of QKV projections shouldn't affect the outputs." )
assert np.allclose( assert np.allclose(image_slice_fused, image_slice_disabled, atol=1e-3, rtol=1e-3), (
image_slice_fused, image_slice_disabled, atol=1e-3, rtol=1e-3 "Outputs, with QKV projection fusion enabled, shouldn't change when fused QKV projections are disabled."
), "Outputs, with QKV projection fusion enabled, shouldn't change when fused QKV projections are disabled." )
assert np.allclose( assert np.allclose(original_image_slice, image_slice_disabled, atol=1e-2, rtol=1e-2), (
original_image_slice, image_slice_disabled, atol=1e-2, rtol=1e-2 "Original outputs should match when fused QKV projections are disabled."
), "Original outputs should match when fused QKV projections are disabled." )
...@@ -219,9 +219,9 @@ class BlipDiffusionControlNetPipelineFastTests(PipelineTesterMixin, unittest.Tes ...@@ -219,9 +219,9 @@ class BlipDiffusionControlNetPipelineFastTests(PipelineTesterMixin, unittest.Tes
assert image.shape == (1, 16, 16, 4) assert image.shape == (1, 16, 16, 4)
expected_slice = np.array([0.7953, 0.7136, 0.6597, 0.4779, 0.7389, 0.4111, 0.5826, 0.4150, 0.8422]) expected_slice = np.array([0.7953, 0.7136, 0.6597, 0.4779, 0.7389, 0.4111, 0.5826, 0.4150, 0.8422])
assert ( assert np.abs(image_slice.flatten() - expected_slice).max() < 1e-2, (
np.abs(image_slice.flatten() - expected_slice).max() < 1e-2 f" expected_slice {expected_slice}, but got {image_slice.flatten()}"
), f" expected_slice {expected_slice}, but got {image_slice.flatten()}" )
@unittest.skip("Test not supported because of complexities in deriving query_embeds.") @unittest.skip("Test not supported because of complexities in deriving query_embeds.")
def test_encode_prompt_works_in_isolation(self): def test_encode_prompt_works_in_isolation(self):
......
...@@ -178,9 +178,9 @@ class FluxControlNetPipelineFastTests(unittest.TestCase, PipelineTesterMixin, Fl ...@@ -178,9 +178,9 @@ class FluxControlNetPipelineFastTests(unittest.TestCase, PipelineTesterMixin, Fl
[0.47387695, 0.63134766, 0.5605469, 0.61621094, 0.7207031, 0.7089844, 0.70410156, 0.6113281, 0.64160156] [0.47387695, 0.63134766, 0.5605469, 0.61621094, 0.7207031, 0.7089844, 0.70410156, 0.6113281, 0.64160156]
) )
assert ( assert np.abs(image_slice.flatten() - expected_slice).max() < 1e-2, (
np.abs(image_slice.flatten() - expected_slice).max() < 1e-2 f"Expected: {expected_slice}, got: {image_slice.flatten()}"
), f"Expected: {expected_slice}, got: {image_slice.flatten()}" )
@unittest.skip("xFormersAttnProcessor does not work with SD3 Joint Attention") @unittest.skip("xFormersAttnProcessor does not work with SD3 Joint Attention")
def test_xformers_attention_forwardGenerator_pass(self): def test_xformers_attention_forwardGenerator_pass(self):
......
...@@ -170,9 +170,9 @@ class FluxControlNetImg2ImgPipelineFastTests(unittest.TestCase, PipelineTesterMi ...@@ -170,9 +170,9 @@ class FluxControlNetImg2ImgPipelineFastTests(unittest.TestCase, PipelineTesterMi
original_image_slice = image[0, -3:, -3:, -1] original_image_slice = image[0, -3:, -3:, -1]
pipe.transformer.fuse_qkv_projections() pipe.transformer.fuse_qkv_projections()
assert check_qkv_fusion_processors_exist( assert check_qkv_fusion_processors_exist(pipe.transformer), (
pipe.transformer "Something wrong with the fused attention processors. Expected all the attention processors to be fused."
), "Something wrong with the fused attention processors. Expected all the attention processors to be fused." )
assert check_qkv_fusion_matches_attn_procs_length( assert check_qkv_fusion_matches_attn_procs_length(
pipe.transformer, pipe.transformer.original_attn_processors pipe.transformer, pipe.transformer.original_attn_processors
), "Something wrong with the attention processors concerning the fused QKV projections." ), "Something wrong with the attention processors concerning the fused QKV projections."
...@@ -186,15 +186,15 @@ class FluxControlNetImg2ImgPipelineFastTests(unittest.TestCase, PipelineTesterMi ...@@ -186,15 +186,15 @@ class FluxControlNetImg2ImgPipelineFastTests(unittest.TestCase, PipelineTesterMi
image = pipe(**inputs).images image = pipe(**inputs).images
image_slice_disabled = image[0, -3:, -3:, -1] image_slice_disabled = image[0, -3:, -3:, -1]
assert np.allclose( assert np.allclose(original_image_slice, image_slice_fused, atol=1e-3, rtol=1e-3), (
original_image_slice, image_slice_fused, atol=1e-3, rtol=1e-3 "Fusion of QKV projections shouldn't affect the outputs."
), "Fusion of QKV projections shouldn't affect the outputs." )
assert np.allclose( assert np.allclose(image_slice_fused, image_slice_disabled, atol=1e-3, rtol=1e-3), (
image_slice_fused, image_slice_disabled, atol=1e-3, rtol=1e-3 "Outputs, with QKV projection fusion enabled, shouldn't change when fused QKV projections are disabled."
), "Outputs, with QKV projection fusion enabled, shouldn't change when fused QKV projections are disabled." )
assert np.allclose( assert np.allclose(original_image_slice, image_slice_disabled, atol=1e-2, rtol=1e-2), (
original_image_slice, image_slice_disabled, atol=1e-2, rtol=1e-2 "Original outputs should match when fused QKV projections are disabled."
), "Original outputs should match when fused QKV projections are disabled." )
def test_flux_image_output_shape(self): def test_flux_image_output_shape(self):
pipe = self.pipeline_class(**self.get_dummy_components()).to(torch_device) pipe = self.pipeline_class(**self.get_dummy_components()).to(torch_device)
......
...@@ -162,9 +162,9 @@ class HunyuanDiTControlNetPipelineFastTests(unittest.TestCase, PipelineTesterMix ...@@ -162,9 +162,9 @@ class HunyuanDiTControlNetPipelineFastTests(unittest.TestCase, PipelineTesterMix
[0.6953125, 0.89208984, 0.59375, 0.5078125, 0.5786133, 0.6035156, 0.5839844, 0.53564453, 0.52246094] [0.6953125, 0.89208984, 0.59375, 0.5078125, 0.5786133, 0.6035156, 0.5839844, 0.53564453, 0.52246094]
) )
assert ( assert np.abs(image_slice.flatten() - expected_slice).max() < 1e-2, (
np.abs(image_slice.flatten() - expected_slice).max() < 1e-2 f"Expected: {expected_slice}, got: {image_slice.flatten()}"
), f"Expected: {expected_slice}, got: {image_slice.flatten()}" )
def test_inference_batch_single_identical(self): def test_inference_batch_single_identical(self):
self._test_inference_batch_single_identical( self._test_inference_batch_single_identical(
......
...@@ -194,9 +194,9 @@ class StableDiffusion3ControlInpaintNetPipelineFastTests(unittest.TestCase, Pipe ...@@ -194,9 +194,9 @@ class StableDiffusion3ControlInpaintNetPipelineFastTests(unittest.TestCase, Pipe
[0.51708984, 0.7421875, 0.4580078, 0.6435547, 0.65625, 0.43603516, 0.5151367, 0.65722656, 0.60839844] [0.51708984, 0.7421875, 0.4580078, 0.6435547, 0.65625, 0.43603516, 0.5151367, 0.65722656, 0.60839844]
) )
assert ( assert np.abs(image_slice.flatten() - expected_slice).max() < 1e-2, (
np.abs(image_slice.flatten() - expected_slice).max() < 1e-2 f"Expected: {expected_slice}, got: {image_slice.flatten()}"
), f"Expected: {expected_slice}, got: {image_slice.flatten()}" )
@unittest.skip("xFormersAttnProcessor does not work with SD3 Joint Attention") @unittest.skip("xFormersAttnProcessor does not work with SD3 Joint Attention")
def test_xformers_attention_forwardGenerator_pass(self): def test_xformers_attention_forwardGenerator_pass(self):
......
...@@ -202,9 +202,9 @@ class StableDiffusion3ControlNetPipelineFastTests(unittest.TestCase, PipelineTes ...@@ -202,9 +202,9 @@ class StableDiffusion3ControlNetPipelineFastTests(unittest.TestCase, PipelineTes
else: else:
expected_slice = np.array([1.0000, 0.9072, 0.4209, 0.2744, 0.5737, 0.3840, 0.6113, 0.6250, 0.6328]) expected_slice = np.array([1.0000, 0.9072, 0.4209, 0.2744, 0.5737, 0.3840, 0.6113, 0.6250, 0.6328])
assert ( assert np.abs(image_slice.flatten() - expected_slice).max() < 1e-2, (
np.abs(image_slice.flatten() - expected_slice).max() < 1e-2 f"Expected: {expected_slice}, got: {image_slice.flatten()}"
), f"Expected: {expected_slice}, got: {image_slice.flatten()}" )
def test_controlnet_sd3(self): def test_controlnet_sd3(self):
components = self.get_dummy_components() components = self.get_dummy_components()
......
...@@ -149,8 +149,7 @@ class DiTPipelineIntegrationTests(unittest.TestCase): ...@@ -149,8 +149,7 @@ class DiTPipelineIntegrationTests(unittest.TestCase):
for word, image in zip(words, images): for word, image in zip(words, images):
expected_image = load_numpy( expected_image = load_numpy(
"https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main" f"https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main/dit/{word}_512.npy"
f"/dit/{word}_512.npy"
) )
assert np.abs((expected_image - image).max()) < 1e-1 assert np.abs((expected_image - image).max()) < 1e-1
...@@ -170,9 +170,9 @@ class FluxPipelineFastTests( ...@@ -170,9 +170,9 @@ class FluxPipelineFastTests(
# TODO (sayakpaul): will refactor this once `fuse_qkv_projections()` has been added # TODO (sayakpaul): will refactor this once `fuse_qkv_projections()` has been added
# to the pipeline level. # to the pipeline level.
pipe.transformer.fuse_qkv_projections() pipe.transformer.fuse_qkv_projections()
assert check_qkv_fusion_processors_exist( assert check_qkv_fusion_processors_exist(pipe.transformer), (
pipe.transformer "Something wrong with the fused attention processors. Expected all the attention processors to be fused."
), "Something wrong with the fused attention processors. Expected all the attention processors to be fused." )
assert check_qkv_fusion_matches_attn_procs_length( assert check_qkv_fusion_matches_attn_procs_length(
pipe.transformer, pipe.transformer.original_attn_processors pipe.transformer, pipe.transformer.original_attn_processors
), "Something wrong with the attention processors concerning the fused QKV projections." ), "Something wrong with the attention processors concerning the fused QKV projections."
...@@ -186,15 +186,15 @@ class FluxPipelineFastTests( ...@@ -186,15 +186,15 @@ class FluxPipelineFastTests(
image = pipe(**inputs).images image = pipe(**inputs).images
image_slice_disabled = image[0, -3:, -3:, -1] image_slice_disabled = image[0, -3:, -3:, -1]
assert np.allclose( assert np.allclose(original_image_slice, image_slice_fused, atol=1e-3, rtol=1e-3), (
original_image_slice, image_slice_fused, atol=1e-3, rtol=1e-3 "Fusion of QKV projections shouldn't affect the outputs."
), "Fusion of QKV projections shouldn't affect the outputs." )
assert np.allclose( assert np.allclose(image_slice_fused, image_slice_disabled, atol=1e-3, rtol=1e-3), (
image_slice_fused, image_slice_disabled, atol=1e-3, rtol=1e-3 "Outputs, with QKV projection fusion enabled, shouldn't change when fused QKV projections are disabled."
), "Outputs, with QKV projection fusion enabled, shouldn't change when fused QKV projections are disabled." )
assert np.allclose( assert np.allclose(original_image_slice, image_slice_disabled, atol=1e-2, rtol=1e-2), (
original_image_slice, image_slice_disabled, atol=1e-2, rtol=1e-2 "Original outputs should match when fused QKV projections are disabled."
), "Original outputs should match when fused QKV projections are disabled." )
def test_flux_image_output_shape(self): def test_flux_image_output_shape(self):
pipe = self.pipeline_class(**self.get_dummy_components()).to(torch_device) pipe = self.pipeline_class(**self.get_dummy_components()).to(torch_device)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment