From e75156f856a344b3cec092d4c15a89f1b411c417 Mon Sep 17 00:00:00 2001 From: menglcai Date: Tue, 14 Jul 2026 15:49:10 +0800 Subject: [PATCH 1/3] update --- src/diffusers/models/transformers/transformer_sd3.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/diffusers/models/transformers/transformer_sd3.py b/src/diffusers/models/transformers/transformer_sd3.py index ead657d0cfd2..d053500b343a 100644 --- a/src/diffusers/models/transformers/transformer_sd3.py +++ b/src/diffusers/models/transformers/transformer_sd3.py @@ -318,6 +318,11 @@ def forward( joint_attention_kwargs=joint_attention_kwargs, ) + # Ensure contiguous memory layout for downstream ops. + hidden_states = hidden_states.contiguous() + if encoder_hidden_states is not None: + encoder_hidden_states = encoder_hidden_states.contiguous() + # controlnet residual if block_controlnet_hidden_states is not None and block.context_pre_only is False: interval_control = len(self.transformer_blocks) / len(block_controlnet_hidden_states) From fcbb0b88c46ee44cebc0f466b3e543c46512f2cf Mon Sep 17 00:00:00 2001 From: menglcai Date: Wed, 15 Jul 2026 03:54:56 +0800 Subject: [PATCH 2/3] moved the .contiguous() call to immediately after self.pos_embed(hidden_states) --- src/diffusers/models/transformers/transformer_sd3.py | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/diffusers/models/transformers/transformer_sd3.py b/src/diffusers/models/transformers/transformer_sd3.py index d053500b343a..57f365803766 100644 --- a/src/diffusers/models/transformers/transformer_sd3.py +++ b/src/diffusers/models/transformers/transformer_sd3.py @@ -289,6 +289,8 @@ def forward( height, width = hidden_states.shape[-2:] hidden_states = self.pos_embed(hidden_states) # takes care of adding positional embeddings too. + # pos_embed output is non-contiguous due to flatten+transpose in PatchEmbed (BCHW -> BNC). + hidden_states = hidden_states.contiguous() temb = self.time_text_embed(timestep, pooled_projections) encoder_hidden_states = self.context_embedder(encoder_hidden_states) @@ -317,12 +319,6 @@ def forward( temb=temb, joint_attention_kwargs=joint_attention_kwargs, ) - - # Ensure contiguous memory layout for downstream ops. - hidden_states = hidden_states.contiguous() - if encoder_hidden_states is not None: - encoder_hidden_states = encoder_hidden_states.contiguous() - # controlnet residual if block_controlnet_hidden_states is not None and block.context_pre_only is False: interval_control = len(self.transformer_blocks) / len(block_controlnet_hidden_states) From 1a62199e35f2788d9fea949207f824b27e09875f Mon Sep 17 00:00:00 2001 From: menglcai Date: Wed, 15 Jul 2026 11:09:42 +0800 Subject: [PATCH 3/3] fix typo --- src/diffusers/models/transformers/transformer_sd3.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/diffusers/models/transformers/transformer_sd3.py b/src/diffusers/models/transformers/transformer_sd3.py index 57f365803766..9a56ca4e226d 100644 --- a/src/diffusers/models/transformers/transformer_sd3.py +++ b/src/diffusers/models/transformers/transformer_sd3.py @@ -319,6 +319,7 @@ def forward( temb=temb, joint_attention_kwargs=joint_attention_kwargs, ) + # controlnet residual if block_controlnet_hidden_states is not None and block.context_pre_only is False: interval_control = len(self.transformer_blocks) / len(block_controlnet_hidden_states)