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

Cleanup pass for flaky Slow Tests for Stable diffusion (#4415)

* update expected slice so img2img compile tests pass

* use default attn processor

* use default attn processor and update expected slice value to pass test

* use default attn processor

* set default attn processor and update expected slice

* set default attn processor and change precision for check

* set unet to use default attn processor
parent 05a1cb90
...@@ -63,9 +63,9 @@ def _test_img2img_compile(in_queue, out_queue, timeout): ...@@ -63,9 +63,9 @@ def _test_img2img_compile(in_queue, out_queue, timeout):
pipe = StableDiffusionImg2ImgPipeline.from_pretrained("CompVis/stable-diffusion-v1-4", safety_checker=None) pipe = StableDiffusionImg2ImgPipeline.from_pretrained("CompVis/stable-diffusion-v1-4", safety_checker=None)
pipe.scheduler = DDIMScheduler.from_config(pipe.scheduler.config) pipe.scheduler = DDIMScheduler.from_config(pipe.scheduler.config)
pipe.unet.set_default_attn_processor()
pipe.to(torch_device) pipe.to(torch_device)
pipe.set_progress_bar_config(disable=None) pipe.set_progress_bar_config(disable=None)
pipe.unet.to(memory_format=torch.channels_last) pipe.unet.to(memory_format=torch.channels_last)
pipe.unet = torch.compile(pipe.unet, mode="reduce-overhead", fullgraph=True) pipe.unet = torch.compile(pipe.unet, mode="reduce-overhead", fullgraph=True)
...@@ -73,7 +73,7 @@ def _test_img2img_compile(in_queue, out_queue, timeout): ...@@ -73,7 +73,7 @@ def _test_img2img_compile(in_queue, out_queue, timeout):
image_slice = image[0, -3:, -3:, -1].flatten() image_slice = image[0, -3:, -3:, -1].flatten()
assert image.shape == (1, 512, 768, 3) assert image.shape == (1, 512, 768, 3)
expected_slice = np.array([0.0593, 0.0607, 0.0851, 0.0582, 0.0636, 0.0721, 0.0751, 0.0981, 0.0781]) expected_slice = np.array([0.0606, 0.0570, 0.0805, 0.0579, 0.0628, 0.0623, 0.0843, 0.1115, 0.0806])
assert np.abs(expected_slice - image_slice).max() < 1e-3 assert np.abs(expected_slice - image_slice).max() < 1e-3
except Exception: except Exception:
......
...@@ -64,6 +64,7 @@ def _test_inpaint_compile(in_queue, out_queue, timeout): ...@@ -64,6 +64,7 @@ def _test_inpaint_compile(in_queue, out_queue, timeout):
pipe = StableDiffusionInpaintPipeline.from_pretrained( pipe = StableDiffusionInpaintPipeline.from_pretrained(
"runwayml/stable-diffusion-inpainting", safety_checker=None "runwayml/stable-diffusion-inpainting", safety_checker=None
) )
pipe.unet.set_default_attn_processor()
pipe.scheduler = PNDMScheduler.from_config(pipe.scheduler.config) pipe.scheduler = PNDMScheduler.from_config(pipe.scheduler.config)
pipe.to(torch_device) pipe.to(torch_device)
pipe.set_progress_bar_config(disable=None) pipe.set_progress_bar_config(disable=None)
...@@ -75,8 +76,7 @@ def _test_inpaint_compile(in_queue, out_queue, timeout): ...@@ -75,8 +76,7 @@ def _test_inpaint_compile(in_queue, out_queue, timeout):
image_slice = image[0, 253:256, 253:256, -1].flatten() image_slice = image[0, 253:256, 253:256, -1].flatten()
assert image.shape == (1, 512, 512, 3) assert image.shape == (1, 512, 512, 3)
expected_slice = np.array([0.0425, 0.0273, 0.0344, 0.1694, 0.1727, 0.1812, 0.3256, 0.3311, 0.3272]) expected_slice = np.array([0.0689, 0.0699, 0.0790, 0.0536, 0.0470, 0.0488, 0.041, 0.0508, 0.04179])
assert np.abs(expected_slice - image_slice).max() < 3e-3 assert np.abs(expected_slice - image_slice).max() < 3e-3
except Exception: except Exception:
error = f"{traceback.format_exc()}" error = f"{traceback.format_exc()}"
...@@ -382,6 +382,7 @@ class StableDiffusionInpaintPipelineSlowTests(unittest.TestCase): ...@@ -382,6 +382,7 @@ class StableDiffusionInpaintPipelineSlowTests(unittest.TestCase):
pipe = StableDiffusionInpaintPipeline.from_pretrained( pipe = StableDiffusionInpaintPipeline.from_pretrained(
"runwayml/stable-diffusion-inpainting", torch_dtype=torch.float16, safety_checker=None "runwayml/stable-diffusion-inpainting", torch_dtype=torch.float16, safety_checker=None
) )
pipe.unet.set_default_attn_processor()
pipe.to(torch_device) pipe.to(torch_device)
pipe.set_progress_bar_config(disable=None) pipe.set_progress_bar_config(disable=None)
pipe.enable_attention_slicing() pipe.enable_attention_slicing()
...@@ -391,8 +392,7 @@ class StableDiffusionInpaintPipelineSlowTests(unittest.TestCase): ...@@ -391,8 +392,7 @@ class StableDiffusionInpaintPipelineSlowTests(unittest.TestCase):
image_slice = image[0, 253:256, 253:256, -1].flatten() image_slice = image[0, 253:256, 253:256, -1].flatten()
assert image.shape == (1, 512, 512, 3) assert image.shape == (1, 512, 512, 3)
expected_slice = np.array([0.1350, 0.1123, 0.1350, 0.1641, 0.1328, 0.1230, 0.1289, 0.1531, 0.1687]) expected_slice = np.array([0.1509, 0.1245, 0.1672, 0.1655, 0.1519, 0.1226, 0.1462, 0.1567, 0.2451])
assert np.abs(expected_slice - image_slice).max() < 5e-2 assert np.abs(expected_slice - image_slice).max() < 5e-2
def test_stable_diffusion_inpaint_pndm(self): def test_stable_diffusion_inpaint_pndm(self):
...@@ -485,6 +485,7 @@ class StableDiffusionInpaintPipelineSlowTests(unittest.TestCase): ...@@ -485,6 +485,7 @@ class StableDiffusionInpaintPipelineSlowTests(unittest.TestCase):
"runwayml/stable-diffusion-inpainting", safety_checker=None "runwayml/stable-diffusion-inpainting", safety_checker=None
) )
pipe.scheduler = LMSDiscreteScheduler.from_config(pipe.scheduler.config) pipe.scheduler = LMSDiscreteScheduler.from_config(pipe.scheduler.config)
pipe.unet.set_default_attn_processor()
pipe.to(torch_device) pipe.to(torch_device)
pipe.set_progress_bar_config(disable=None) pipe.set_progress_bar_config(disable=None)
pipe.enable_attention_slicing() pipe.enable_attention_slicing()
...@@ -497,11 +498,12 @@ class StableDiffusionInpaintPipelineSlowTests(unittest.TestCase): ...@@ -497,11 +498,12 @@ class StableDiffusionInpaintPipelineSlowTests(unittest.TestCase):
assert image.shape == (1, 512, 512, 3) assert image.shape == (1, 512, 512, 3)
image_slice = image[0, 253:256, 253:256, -1].flatten() image_slice = image[0, 253:256, 253:256, -1].flatten()
expected_slice = np.array([0.0021, 0.2350, 0.3712, 0.0575, 0.2485, 0.3451, 0.1857, 0.3156, 0.3943]) expected_slice = np.array([0.2728, 0.2803, 0.2665, 0.2511, 0.2774, 0.2586, 0.2391, 0.2392, 0.2582])
assert np.abs(expected_slice - image_slice).max() < 3e-3 assert np.abs(expected_slice - image_slice).max() < 1e-3
def test_stable_diffusion_simple_inpaint_ddim(self): def test_stable_diffusion_simple_inpaint_ddim(self):
pipe = StableDiffusionInpaintPipeline.from_pretrained("runwayml/stable-diffusion-v1-5", safety_checker=None) pipe = StableDiffusionInpaintPipeline.from_pretrained("runwayml/stable-diffusion-v1-5", safety_checker=None)
pipe.unet.set_default_attn_processor()
pipe.to(torch_device) pipe.to(torch_device)
pipe.set_progress_bar_config(disable=None) pipe.set_progress_bar_config(disable=None)
pipe.enable_attention_slicing() pipe.enable_attention_slicing()
...@@ -512,9 +514,8 @@ class StableDiffusionInpaintPipelineSlowTests(unittest.TestCase): ...@@ -512,9 +514,8 @@ class StableDiffusionInpaintPipelineSlowTests(unittest.TestCase):
image_slice = image[0, 253:256, 253:256, -1].flatten() image_slice = image[0, 253:256, 253:256, -1].flatten()
assert image.shape == (1, 512, 512, 3) assert image.shape == (1, 512, 512, 3)
expected_slice = np.array([0.5157, 0.6858, 0.6873, 0.4619, 0.6416, 0.6898, 0.3702, 0.5960, 0.6935]) expected_slice = np.array([0.3757, 0.3875, 0.4445, 0.4353, 0.3780, 0.4513, 0.3965, 0.3984, 0.4362])
assert np.abs(expected_slice - image_slice).max() < 1e-3
assert np.abs(expected_slice - image_slice).max() < 6e-4
def test_download_local(self): def test_download_local(self):
filename = hf_hub_download("runwayml/stable-diffusion-inpainting", filename="sd-v1-5-inpainting.ckpt") filename = hf_hub_download("runwayml/stable-diffusion-inpainting", filename="sd-v1-5-inpainting.ckpt")
......
...@@ -299,6 +299,7 @@ class StableDiffusionPanoramaSlowTests(unittest.TestCase): ...@@ -299,6 +299,7 @@ class StableDiffusionPanoramaSlowTests(unittest.TestCase):
"stabilityai/stable-diffusion-2-base", safety_checker=None "stabilityai/stable-diffusion-2-base", safety_checker=None
) )
pipe.scheduler = LMSDiscreteScheduler.from_config(pipe.scheduler.config) pipe.scheduler = LMSDiscreteScheduler.from_config(pipe.scheduler.config)
pipe.unet.set_default_attn_processor()
pipe.to(torch_device) pipe.to(torch_device)
pipe.set_progress_bar_config(disable=None) pipe.set_progress_bar_config(disable=None)
pipe.enable_attention_slicing() pipe.enable_attention_slicing()
...@@ -306,7 +307,6 @@ class StableDiffusionPanoramaSlowTests(unittest.TestCase): ...@@ -306,7 +307,6 @@ class StableDiffusionPanoramaSlowTests(unittest.TestCase):
inputs = self.get_inputs() inputs = self.get_inputs()
image = pipe(**inputs).images image = pipe(**inputs).images
image_slice = image[0, -3:, -3:, -1].flatten() image_slice = image[0, -3:, -3:, -1].flatten()
assert image.shape == (1, 512, 2048, 3) assert image.shape == (1, 512, 2048, 3)
expected_slice = np.array( expected_slice = np.array(
...@@ -325,7 +325,7 @@ class StableDiffusionPanoramaSlowTests(unittest.TestCase): ...@@ -325,7 +325,7 @@ class StableDiffusionPanoramaSlowTests(unittest.TestCase):
] ]
) )
assert np.abs(expected_slice - image_slice).max() < 1e-3 assert np.abs(expected_slice - image_slice).max() < 1e-2
def test_stable_diffusion_panorama_intermediate_state(self): def test_stable_diffusion_panorama_intermediate_state(self):
number_of_steps = 0 number_of_steps = 0
......
...@@ -344,6 +344,7 @@ class StableDiffusion2PipelineSlowTests(unittest.TestCase): ...@@ -344,6 +344,7 @@ class StableDiffusion2PipelineSlowTests(unittest.TestCase):
pipe = StableDiffusionPipeline.from_pretrained( pipe = StableDiffusionPipeline.from_pretrained(
"stabilityai/stable-diffusion-2-base", torch_dtype=torch.float16 "stabilityai/stable-diffusion-2-base", torch_dtype=torch.float16
) )
pipe.unet.set_default_attn_processor()
pipe = pipe.to(torch_device) pipe = pipe.to(torch_device)
pipe.set_progress_bar_config(disable=None) pipe.set_progress_bar_config(disable=None)
...@@ -359,6 +360,7 @@ class StableDiffusion2PipelineSlowTests(unittest.TestCase): ...@@ -359,6 +360,7 @@ class StableDiffusion2PipelineSlowTests(unittest.TestCase):
# disable slicing # disable slicing
pipe.disable_attention_slicing() pipe.disable_attention_slicing()
pipe.unet.set_default_attn_processor()
inputs = self.get_inputs(torch_device, dtype=torch.float16) inputs = self.get_inputs(torch_device, dtype=torch.float16)
image = pipe(**inputs).images image = pipe(**inputs).images
......
...@@ -417,6 +417,7 @@ class StableDiffusionDepth2ImgPipelineSlowTests(unittest.TestCase): ...@@ -417,6 +417,7 @@ class StableDiffusionDepth2ImgPipelineSlowTests(unittest.TestCase):
pipe = StableDiffusionDepth2ImgPipeline.from_pretrained( pipe = StableDiffusionDepth2ImgPipeline.from_pretrained(
"stabilityai/stable-diffusion-2-depth", safety_checker=None "stabilityai/stable-diffusion-2-depth", safety_checker=None
) )
pipe.unet.set_default_attn_processor()
pipe.scheduler = LMSDiscreteScheduler.from_config(pipe.scheduler.config) pipe.scheduler = LMSDiscreteScheduler.from_config(pipe.scheduler.config)
pipe.to(torch_device) pipe.to(torch_device)
pipe.set_progress_bar_config(disable=None) pipe.set_progress_bar_config(disable=None)
......
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