diff --git a/src/diffusers/models/resnet.py b/src/diffusers/models/resnet.py index c0b4ad40055a..a98cb491146b 100644 --- a/src/diffusers/models/resnet.py +++ b/src/diffusers/models/resnet.py @@ -366,7 +366,12 @@ def forward(self, input_tensor: torch.Tensor, temb: torch.Tensor, *args, **kwarg hidden_states = self.conv2(hidden_states) if self.conv_shortcut is not None: - input_tensor = self.conv_shortcut(input_tensor.contiguous()) + # Only use contiguous() during training to avoid DDP gradient stride mismatch warning. + # In inference mode (eval or no_grad), skip contiguous() for better performance, especially on CPU. + # Issue: https://github.com/huggingface/diffusers/issues/12975 + if self.training: + input_tensor = input_tensor.contiguous() + input_tensor = self.conv_shortcut(input_tensor) output_tensor = (input_tensor + hidden_states) / self.output_scale_factor diff --git a/tests/pipelines/test_pipelines_common.py b/tests/pipelines/test_pipelines_common.py index 7db5f4da89ca..7d898919dfee 100644 --- a/tests/pipelines/test_pipelines_common.py +++ b/tests/pipelines/test_pipelines_common.py @@ -2212,7 +2212,7 @@ def test_StableDiffusionMixin_component(self): @require_hf_hub_version_greater("0.26.5") @require_transformers_version_greater("4.47.1") - def test_save_load_dduf(self, atol=1e-4, rtol=1e-4): + def test_save_load_dduf(self, atol=1e-3, rtol=1e-3): if not self.supports_dduf: return