From 1bc0d37ffe0eba638f230bdae2015f1ee4696e5f Mon Sep 17 00:00:00 2001 From: Jinay Jain <30903578+JinayJain@users.noreply.github.com> Date: Wed, 6 Mar 2024 03:35:07 -0500 Subject: [PATCH] [bug] Fix float/int guidance scale not working in `StableVideoDiffusionPipeline` (#7143) * [bug] Fix float/int guidance scale not working in `StableVideoDiffusionPipeline` * Add test to disable CFG on SVD --------- Co-authored-by: Sayak Paul --- .../pipeline_stable_video_diffusion.py | 2 +- .../test_stable_video_diffusion.py | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/diffusers/pipelines/stable_video_diffusion/pipeline_stable_video_diffusion.py b/src/diffusers/pipelines/stable_video_diffusion/pipeline_stable_video_diffusion.py index 5c755be470..1abe810fea 100644 --- a/src/diffusers/pipelines/stable_video_diffusion/pipeline_stable_video_diffusion.py +++ b/src/diffusers/pipelines/stable_video_diffusion/pipeline_stable_video_diffusion.py @@ -322,7 +322,7 @@ class StableVideoDiffusionPipeline(DiffusionPipeline): @property def do_classifier_free_guidance(self): if isinstance(self.guidance_scale, (int, float)): - return self.guidance_scale + return self.guidance_scale > 1 return self.guidance_scale.max() > 1 @property diff --git a/tests/pipelines/stable_video_diffusion/test_stable_video_diffusion.py b/tests/pipelines/stable_video_diffusion/test_stable_video_diffusion.py index 5a3c79422c..33cf4c7286 100644 --- a/tests/pipelines/stable_video_diffusion/test_stable_video_diffusion.py +++ b/tests/pipelines/stable_video_diffusion/test_stable_video_diffusion.py @@ -496,6 +496,22 @@ class StableVideoDiffusionPipelineFastTests(PipelineTesterMixin, unittest.TestCa max_diff = np.abs(to_np(output_with_offload) - to_np(output_without_offload)).max() self.assertLess(max_diff, expected_max_diff, "XFormers attention should not affect the inference results") + def test_disable_cfg(self): + components = self.get_dummy_components() + pipe = self.pipeline_class(**components) + for component in pipe.components.values(): + if hasattr(component, "set_default_attn_processor"): + component.set_default_attn_processor() + + pipe.to(torch_device) + pipe.set_progress_bar_config(disable=None) + + generator_device = "cpu" + inputs = self.get_dummy_inputs(generator_device) + inputs["max_guidance_scale"] = 1.0 + output = pipe(**inputs).frames + self.assertEqual(len(output.shape), 5) + @slow @require_torch_gpu