diff --git a/modules/apg/pipeline_stable_diffusion_apg.py b/modules/apg/pipeline_stable_diffusion_apg.py index 57aebafca..1508b3f13 100644 --- a/modules/apg/pipeline_stable_diffusion_apg.py +++ b/modules/apg/pipeline_stable_diffusion_apg.py @@ -404,7 +404,8 @@ class StableDiffusionPipelineAPG( # representations. The `last_hidden_states` that we typically use for # obtaining the final prompt representations passes through the LayerNorm # layer. - prompt_embeds = self.text_encoder.text_model.final_layer_norm(prompt_embeds) + # transformers >=5.6 flattened CLIPTextModel; CLIPTextModelWithProjection still nests it under .text_model + prompt_embeds = getattr(self.text_encoder, 'text_model', self.text_encoder).final_layer_norm(prompt_embeds) if self.text_encoder is not None: prompt_embeds_dtype = self.text_encoder.dtype diff --git a/modules/control/units/xs_pipe.py b/modules/control/units/xs_pipe.py index 282b4f996..078293831 100644 --- a/modules/control/units/xs_pipe.py +++ b/modules/control/units/xs_pipe.py @@ -1321,7 +1321,8 @@ class StableDiffusionControlNetXSPipeline( # representations. The `last_hidden_states` that we typically use for # obtaining the final prompt representations passes through the LayerNorm # layer. - prompt_embeds = self.text_encoder.text_model.final_layer_norm(prompt_embeds) + # transformers >=5.6 flattened CLIPTextModel; CLIPTextModelWithProjection still nests it under .text_model + prompt_embeds = getattr(self.text_encoder, 'text_model', self.text_encoder).final_layer_norm(prompt_embeds) if self.text_encoder is not None: prompt_embeds_dtype = self.text_encoder.dtype diff --git a/modules/pag/pipe_sd.py b/modules/pag/pipe_sd.py index 9a7af9bda..8e3f24429 100644 --- a/modules/pag/pipe_sd.py +++ b/modules/pag/pipe_sd.py @@ -619,7 +619,8 @@ class StableDiffusionPAGPipeline( # representations. The `last_hidden_states` that we typically use for # obtaining the final prompt representations passes through the LayerNorm # layer. - prompt_embeds = self.text_encoder.text_model.final_layer_norm(prompt_embeds) + # transformers >=5.6 flattened CLIPTextModel; CLIPTextModelWithProjection still nests it under .text_model + prompt_embeds = getattr(self.text_encoder, 'text_model', self.text_encoder).final_layer_norm(prompt_embeds) if self.text_encoder is not None: prompt_embeds_dtype = self.text_encoder.dtype diff --git a/scripts/differential_diffusion.py b/scripts/differential_diffusion.py index 2843bf62f..11eb177af 100644 --- a/scripts/differential_diffusion.py +++ b/scripts/differential_diffusion.py @@ -1546,7 +1546,8 @@ class StableDiffusionDiffImg2ImgPipeline(DiffusionPipeline): # representations. The `last_hidden_states` that we typically use for # obtaining the final prompt representations passes through the LayerNorm # layer. - prompt_embeds = self.text_encoder.text_model.final_layer_norm(prompt_embeds) + # transformers >=5.6 flattened CLIPTextModel; CLIPTextModelWithProjection still nests it under .text_model + prompt_embeds = getattr(self.text_encoder, 'text_model', self.text_encoder).final_layer_norm(prompt_embeds) if self.text_encoder is not None: prompt_embeds_dtype = self.text_encoder.dtype