diff --git a/tests/pipelines/stable_diffusion_k_diffusion/__init__.py b/tests/pipelines/stable_diffusion_k_diffusion/__init__.py deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/tests/pipelines/stable_diffusion_k_diffusion/test_stable_diffusion_k_diffusion.py b/tests/pipelines/stable_diffusion_k_diffusion/test_stable_diffusion_k_diffusion.py deleted file mode 100644 index dc7e62078a71..000000000000 --- a/tests/pipelines/stable_diffusion_k_diffusion/test_stable_diffusion_k_diffusion.py +++ /dev/null @@ -1,147 +0,0 @@ -# coding=utf-8 -# Copyright 2025 HuggingFace Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import gc -import unittest - -import numpy as np -import torch - -from diffusers import StableDiffusionKDiffusionPipeline -from diffusers.utils.testing_utils import ( - backend_empty_cache, - enable_full_determinism, - nightly, - require_torch_accelerator, - torch_device, -) - - -enable_full_determinism() - - -@nightly -@require_torch_accelerator -class StableDiffusionPipelineIntegrationTests(unittest.TestCase): - def setUp(self): - # clean up the VRAM before each test - super().setUp() - gc.collect() - backend_empty_cache(torch_device) - - def tearDown(self): - # clean up the VRAM after each test - super().tearDown() - gc.collect() - backend_empty_cache(torch_device) - - def test_stable_diffusion_1(self): - sd_pipe = StableDiffusionKDiffusionPipeline.from_pretrained("CompVis/stable-diffusion-v1-4") - sd_pipe = sd_pipe.to(torch_device) - sd_pipe.set_progress_bar_config(disable=None) - - sd_pipe.set_scheduler("sample_euler") - - prompt = "A painting of a squirrel eating a burger" - generator = torch.manual_seed(0) - output = sd_pipe([prompt], generator=generator, guidance_scale=9.0, num_inference_steps=20, output_type="np") - - image = output.images - - image_slice = image[0, -3:, -3:, -1] - - assert image.shape == (1, 512, 512, 3) - expected_slice = np.array([0.0447, 0.0492, 0.0468, 0.0408, 0.0383, 0.0408, 0.0354, 0.0380, 0.0339]) - - assert np.abs(image_slice.flatten() - expected_slice).max() < 1e-2 - - def test_stable_diffusion_2(self): - sd_pipe = StableDiffusionKDiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-2-1-base") - sd_pipe = sd_pipe.to(torch_device) - sd_pipe.set_progress_bar_config(disable=None) - - sd_pipe.set_scheduler("sample_euler") - - prompt = "A painting of a squirrel eating a burger" - generator = torch.manual_seed(0) - output = sd_pipe([prompt], generator=generator, guidance_scale=9.0, num_inference_steps=20, output_type="np") - - image = output.images - - image_slice = image[0, -3:, -3:, -1] - - assert image.shape == (1, 512, 512, 3) - expected_slice = np.array([0.1237, 0.1320, 0.1438, 0.1359, 0.1390, 0.1132, 0.1277, 0.1175, 0.1112]) - - assert np.abs(image_slice.flatten() - expected_slice).max() < 5e-1 - - def test_stable_diffusion_karras_sigmas(self): - sd_pipe = StableDiffusionKDiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-2-1-base") - sd_pipe = sd_pipe.to(torch_device) - sd_pipe.set_progress_bar_config(disable=None) - - sd_pipe.set_scheduler("sample_dpmpp_2m") - - prompt = "A painting of a squirrel eating a burger" - generator = torch.manual_seed(0) - output = sd_pipe( - [prompt], - generator=generator, - guidance_scale=7.5, - num_inference_steps=15, - output_type="np", - use_karras_sigmas=True, - ) - - image = output.images - - image_slice = image[0, -3:, -3:, -1] - - assert image.shape == (1, 512, 512, 3) - expected_slice = np.array( - [0.11381689, 0.12112921, 0.1389457, 0.12549606, 0.1244964, 0.10831517, 0.11562866, 0.10867816, 0.10499048] - ) - - assert np.abs(image_slice.flatten() - expected_slice).max() < 1e-2 - - def test_stable_diffusion_noise_sampler_seed(self): - sd_pipe = StableDiffusionKDiffusionPipeline.from_pretrained("CompVis/stable-diffusion-v1-4") - sd_pipe = sd_pipe.to(torch_device) - sd_pipe.set_progress_bar_config(disable=None) - - sd_pipe.set_scheduler("sample_dpmpp_sde") - - prompt = "A painting of a squirrel eating a burger" - seed = 0 - images1 = sd_pipe( - [prompt], - generator=torch.manual_seed(seed), - noise_sampler_seed=seed, - guidance_scale=9.0, - num_inference_steps=20, - output_type="np", - ).images - images2 = sd_pipe( - [prompt], - generator=torch.manual_seed(seed), - noise_sampler_seed=seed, - guidance_scale=9.0, - num_inference_steps=20, - output_type="np", - ).images - - assert images1.shape == (1, 512, 512, 3) - assert images2.shape == (1, 512, 512, 3) - assert np.abs(images1.flatten() - images2.flatten()).max() < 1e-2 diff --git a/tests/pipelines/stable_diffusion_xl/test_stable_diffusion_xl_k_diffusion.py b/tests/pipelines/stable_diffusion_xl/test_stable_diffusion_xl_k_diffusion.py deleted file mode 100644 index ae131d1d4f65..000000000000 --- a/tests/pipelines/stable_diffusion_xl/test_stable_diffusion_xl_k_diffusion.py +++ /dev/null @@ -1,178 +0,0 @@ -# coding=utf-8 -# Copyright 2025 HuggingFace Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import gc -import unittest - -import numpy as np -import torch - -from diffusers import StableDiffusionXLKDiffusionPipeline -from diffusers.utils.testing_utils import ( - Expectations, - backend_empty_cache, - enable_full_determinism, - require_torch_accelerator, - slow, - torch_device, -) - - -enable_full_determinism() - - -@slow -@require_torch_accelerator -class StableDiffusionXLKPipelineIntegrationTests(unittest.TestCase): - dtype = torch.float16 - - def setUp(self): - # clean up the VRAM before each test - super().setUp() - gc.collect() - backend_empty_cache(torch_device) - - def tearDown(self): - # clean up the VRAM after each test - super().tearDown() - gc.collect() - backend_empty_cache(torch_device) - - def test_stable_diffusion_xl(self): - sd_pipe = StableDiffusionXLKDiffusionPipeline.from_pretrained( - "stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=self.dtype - ) - sd_pipe = sd_pipe.to(torch_device) - sd_pipe.set_progress_bar_config(disable=None) - - sd_pipe.set_scheduler("sample_euler") - - prompt = "A painting of a squirrel eating a burger" - generator = torch.manual_seed(0) - output = sd_pipe( - [prompt], - generator=generator, - guidance_scale=9.0, - num_inference_steps=2, - height=512, - width=512, - output_type="np", - ) - - image = output.images - - image_slice = image[0, -3:, -3:, -1] - - assert image.shape == (1, 512, 512, 3) - expected_slice = np.array([0.5420, 0.5038, 0.2439, 0.5371, 0.4660, 0.1906, 0.5221, 0.4290, 0.2566]) - - assert np.abs(image_slice.flatten() - expected_slice).max() < 1e-2 - - def test_stable_diffusion_karras_sigmas(self): - sd_pipe = StableDiffusionXLKDiffusionPipeline.from_pretrained( - "stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=self.dtype - ) - sd_pipe = sd_pipe.to(torch_device) - sd_pipe.set_progress_bar_config(disable=None) - - sd_pipe.set_scheduler("sample_dpmpp_2m") - - prompt = "A painting of a squirrel eating a burger" - generator = torch.manual_seed(0) - output = sd_pipe( - [prompt], - generator=generator, - guidance_scale=7.5, - num_inference_steps=2, - output_type="np", - use_karras_sigmas=True, - height=512, - width=512, - ) - - image = output.images - - image_slice = image[0, -3:, -3:, -1] - - assert image.shape == (1, 512, 512, 3) - expected_slices = Expectations( - { - ("xpu", 3): np.array( - [ - 0.6128, - 0.6108, - 0.6109, - 0.5997, - 0.5988, - 0.5948, - 0.5903, - 0.597, - 0.5973, - ] - ), - ("cuda", 7): np.array( - [ - 0.6418, - 0.6424, - 0.6462, - 0.6271, - 0.6314, - 0.6295, - 0.6249, - 0.6339, - 0.6335, - ] - ), - } - ) - - expected_slice = expected_slices.get_expectation() - - assert np.abs(image_slice.flatten() - expected_slice).max() < 1e-2 - - def test_stable_diffusion_noise_sampler_seed(self): - sd_pipe = StableDiffusionXLKDiffusionPipeline.from_pretrained( - "stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=self.dtype - ) - sd_pipe = sd_pipe.to(torch_device) - sd_pipe.set_progress_bar_config(disable=None) - - sd_pipe.set_scheduler("sample_dpmpp_sde") - - prompt = "A painting of a squirrel eating a burger" - seed = 0 - images1 = sd_pipe( - [prompt], - generator=torch.manual_seed(seed), - noise_sampler_seed=seed, - guidance_scale=9.0, - num_inference_steps=2, - output_type="np", - height=512, - width=512, - ).images - images2 = sd_pipe( - [prompt], - generator=torch.manual_seed(seed), - noise_sampler_seed=seed, - guidance_scale=9.0, - num_inference_steps=2, - output_type="np", - height=512, - width=512, - ).images - assert images1.shape == (1, 512, 512, 3) - assert images2.shape == (1, 512, 512, 3) - assert np.abs(images1.flatten() - images2.flatten()).max() < 1e-2