Skip to content

Commit 4f05058

Browse files
authored
Clean up flaky behaviour on Slow CUDA Pytorch Push Tests (huggingface#4759)
use max diff to compare model outputs
1 parent 5d44130 commit 4f05058

10 files changed

+19
-19
lines changed

tests/models/test_modeling_common.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,7 @@ class ModelTesterMixin:
195195
main_input_name = None # overwrite in model specific tester class
196196
base_precision = 1e-3
197197

198-
def test_from_save_pretrained(self):
198+
def test_from_save_pretrained(self, expected_max_diff=5e-5):
199199
init_dict, inputs_dict = self.prepare_init_args_and_inputs_for_common()
200200

201201
model = self.model_class(**init_dict)
@@ -221,8 +221,8 @@ def test_from_save_pretrained(self):
221221
if isinstance(new_image, dict):
222222
new_image = new_image.to_tuple()[0]
223223

224-
max_diff = (image - new_image).abs().sum().item()
225-
self.assertLessEqual(max_diff, 5e-5, "Models give different forward passes")
224+
max_diff = (image - new_image).abs().max().item()
225+
self.assertLessEqual(max_diff, expected_max_diff, "Models give different forward passes")
226226

227227
def test_getattr_is_correct(self):
228228
init_dict, inputs_dict = self.prepare_init_args_and_inputs_for_common()
@@ -316,7 +316,7 @@ def test_set_attn_processor_for_determinism(self):
316316
assert torch.allclose(output_2, output_5, atol=self.base_precision)
317317
assert torch.allclose(output_2, output_6, atol=self.base_precision)
318318

319-
def test_from_save_pretrained_variant(self):
319+
def test_from_save_pretrained_variant(self, expected_max_diff=5e-5):
320320
init_dict, inputs_dict = self.prepare_init_args_and_inputs_for_common()
321321

322322
model = self.model_class(**init_dict)
@@ -351,8 +351,8 @@ def test_from_save_pretrained_variant(self):
351351
if isinstance(new_image, dict):
352352
new_image = new_image.to_tuple()[0]
353353

354-
max_diff = (image - new_image).abs().sum().item()
355-
self.assertLessEqual(max_diff, 5e-5, "Models give different forward passes")
354+
max_diff = (image - new_image).abs().max().item()
355+
self.assertLessEqual(max_diff, expected_max_diff, "Models give different forward passes")
356356

357357
@require_torch_2
358358
def test_from_save_pretrained_dynamo(self):

tests/models/test_models_unet_2d_condition.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -589,10 +589,10 @@ def test_lora_save_load(self):
589589
with torch.no_grad():
590590
new_sample = new_model(**inputs_dict, cross_attention_kwargs={"scale": 0.5}).sample
591591

592-
assert (sample - new_sample).abs().max() < 1e-4
592+
assert (sample - new_sample).abs().max() < 5e-4
593593

594594
# LoRA and no LoRA should NOT be the same
595-
assert (sample - old_sample).abs().max() > 1e-4
595+
assert (sample - old_sample).abs().max() > 5e-4
596596

597597
def test_lora_save_load_safetensors(self):
598598
# enable deterministic behavior for gradient checkpointing

tests/pipelines/controlnet/test_controlnet.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -959,7 +959,7 @@ def test_load_local(self):
959959
gc.collect()
960960
torch.cuda.empty_cache()
961961

962-
assert np.abs(images[0] - images[1]).sum() < 1e-3
962+
assert np.abs(images[0] - images[1]).max() < 1e-3
963963

964964

965965
@slow

tests/pipelines/controlnet/test_controlnet_img2img.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -446,4 +446,4 @@ def test_load_local(self):
446446
gc.collect()
447447
torch.cuda.empty_cache()
448448

449-
assert np.abs(images[0] - images[1]).sum() < 1e-3
449+
assert np.abs(images[0] - images[1]).max() < 1e-3

tests/pipelines/controlnet/test_controlnet_inpaint.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -593,4 +593,4 @@ def test_load_local(self):
593593
gc.collect()
594594
torch.cuda.empty_cache()
595595

596-
assert np.abs(images[0] - images[1]).sum() < 1e-3
596+
assert np.abs(images[0] - images[1]).max() < 1e-3

tests/pipelines/test_pipelines.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ def _test_from_save_pretrained_dynamo(in_queue, out_queue, timeout):
122122
generator = torch.Generator(device=torch_device).manual_seed(0)
123123
new_image = new_ddpm(generator=generator, num_inference_steps=5, output_type="numpy").images
124124

125-
assert np.abs(image - new_image).sum() < 1e-5, "Models don't give the same forward pass"
125+
assert np.abs(image - new_image).max() < 1e-5, "Models don't give the same forward pass"
126126
except Exception:
127127
error = f"{traceback.format_exc()}"
128128

@@ -1543,7 +1543,7 @@ def test_from_save_pretrained(self):
15431543
generator = torch.Generator(device=torch_device).manual_seed(0)
15441544
new_image = new_ddpm(generator=generator, num_inference_steps=5, output_type="numpy").images
15451545

1546-
assert np.abs(image - new_image).sum() < 1e-5, "Models don't give the same forward pass"
1546+
assert np.abs(image - new_image).max() < 1e-5, "Models don't give the same forward pass"
15471547

15481548
@require_torch_2
15491549
def test_from_save_pretrained_dynamo(self):
@@ -1568,7 +1568,7 @@ def test_from_pretrained_hub(self):
15681568
generator = torch.Generator(device=torch_device).manual_seed(0)
15691569
new_image = ddpm_from_hub(generator=generator, num_inference_steps=5, output_type="numpy").images
15701570

1571-
assert np.abs(image - new_image).sum() < 1e-5, "Models don't give the same forward pass"
1571+
assert np.abs(image - new_image).max() < 1e-5, "Models don't give the same forward pass"
15721572

15731573
def test_from_pretrained_hub_pass_model(self):
15741574
model_path = "google/ddpm-cifar10-32"
@@ -1591,7 +1591,7 @@ def test_from_pretrained_hub_pass_model(self):
15911591
generator = torch.Generator(device=torch_device).manual_seed(0)
15921592
new_image = ddpm_from_hub(generator=generator, num_inference_steps=5, output_type="numpy").images
15931593

1594-
assert np.abs(image - new_image).sum() < 1e-5, "Models don't give the same forward pass"
1594+
assert np.abs(image - new_image).max() < 1e-5, "Models don't give the same forward pass"
15951595

15961596
def test_output_format(self):
15971597
model_path = "google/ddpm-cifar10-32"

tests/pipelines/test_pipelines_common.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -296,7 +296,7 @@ def tearDown(self):
296296
gc.collect()
297297
torch.cuda.empty_cache()
298298

299-
def test_save_load_local(self, expected_max_difference=1e-4):
299+
def test_save_load_local(self, expected_max_difference=5e-4):
300300
components = self.get_dummy_components()
301301
pipe = self.pipeline_class(**components)
302302
pipe.to(torch_device)

tests/pipelines/versatile_diffusion/test_versatile_diffusion_dual_guided.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ def test_remove_unused_weights_save_load(self):
7676
output_type="numpy",
7777
).images
7878

79-
assert np.abs(image - new_image).sum() < 1e-5, "Models don't have the same forward pass"
79+
assert np.abs(image - new_image).max() < 1e-5, "Models don't have the same forward pass"
8080

8181
def test_inference_dual_guided(self):
8282
pipe = VersatileDiffusionDualGuidedPipeline.from_pretrained("shi-labs/versatile-diffusion")

tests/pipelines/versatile_diffusion/test_versatile_diffusion_mega.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ def test_from_save_pretrained(self):
7777
output_type="numpy",
7878
).images
7979

80-
assert np.abs(image - new_image).sum() < 1e-5, "Models don't have the same forward pass"
80+
assert np.abs(image - new_image).max() < 1e-5, "Models don't have the same forward pass"
8181

8282
def test_inference_dual_guided_then_text_to_image(self):
8383
pipe = VersatileDiffusionPipeline.from_pretrained("shi-labs/versatile-diffusion", torch_dtype=torch.float16)

tests/pipelines/versatile_diffusion/test_versatile_diffusion_text_to_image.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ def test_remove_unused_weights_save_load(self):
6464
prompt=prompt, generator=generator, guidance_scale=7.5, num_inference_steps=2, output_type="numpy"
6565
).images
6666

67-
assert np.abs(image - new_image).sum() < 1e-5, "Models don't have the same forward pass"
67+
assert np.abs(image - new_image).max() < 1e-5, "Models don't have the same forward pass"
6868

6969
def test_inference_text2img(self):
7070
pipe = VersatileDiffusionTextToImagePipeline.from_pretrained(

0 commit comments

Comments
 (0)