From ffb0664a577026584ea3ed009dda9ff333f54543 Mon Sep 17 00:00:00 2001 From: xodn348 Date: Thu, 7 May 2026 07:21:49 +0000 Subject: [PATCH] fix(deepfloyd_if): remove @torch.no_grad() from encode_prompt in all IF pipeline variants Removes the method-level @torch.no_grad() decorator from encode_prompt() in all six DeepFloyd IF pipeline files. The helper-level decorator prevented callers who invoke encode_prompt() directly (e.g. prompt-embedding optimisation loops, training-style workflows) from receiving gradient-tracked tensors even when they passed requires_grad=True inputs. Inference behaviour is unchanged: __call__() retains its own @torch.no_grad() context, so encode_prompt() continues to run without tracking gradients on the standard inference path. Refs #13646 --- src/diffusers/pipelines/deepfloyd_if/pipeline_if.py | 1 - src/diffusers/pipelines/deepfloyd_if/pipeline_if_img2img.py | 1 - .../deepfloyd_if/pipeline_if_img2img_superresolution.py | 1 - src/diffusers/pipelines/deepfloyd_if/pipeline_if_inpainting.py | 1 - .../deepfloyd_if/pipeline_if_inpainting_superresolution.py | 1 - .../pipelines/deepfloyd_if/pipeline_if_superresolution.py | 1 - 6 files changed, 6 deletions(-) diff --git a/src/diffusers/pipelines/deepfloyd_if/pipeline_if.py b/src/diffusers/pipelines/deepfloyd_if/pipeline_if.py index b8c70fc6528c..a890350cde0d 100644 --- a/src/diffusers/pipelines/deepfloyd_if/pipeline_if.py +++ b/src/diffusers/pipelines/deepfloyd_if/pipeline_if.py @@ -165,7 +165,6 @@ def __init__( ) self.register_to_config(requires_safety_checker=requires_safety_checker) - @torch.no_grad() def encode_prompt( self, prompt: str | list[str], diff --git a/src/diffusers/pipelines/deepfloyd_if/pipeline_if_img2img.py b/src/diffusers/pipelines/deepfloyd_if/pipeline_if_img2img.py index 3dadc63f4952..386b983fe29c 100644 --- a/src/diffusers/pipelines/deepfloyd_if/pipeline_if_img2img.py +++ b/src/diffusers/pipelines/deepfloyd_if/pipeline_if_img2img.py @@ -189,7 +189,6 @@ def __init__( ) self.register_to_config(requires_safety_checker=requires_safety_checker) - @torch.no_grad() def encode_prompt( self, prompt: str | list[str], diff --git a/src/diffusers/pipelines/deepfloyd_if/pipeline_if_img2img_superresolution.py b/src/diffusers/pipelines/deepfloyd_if/pipeline_if_img2img_superresolution.py index 4839a0860462..b3fc6bbc4322 100644 --- a/src/diffusers/pipelines/deepfloyd_if/pipeline_if_img2img_superresolution.py +++ b/src/diffusers/pipelines/deepfloyd_if/pipeline_if_img2img_superresolution.py @@ -341,7 +341,6 @@ def _clean_caption(self, caption): return caption.strip() - @torch.no_grad() # Copied from diffusers.pipelines.deepfloyd_if.pipeline_if.IFPipeline.encode_prompt def encode_prompt( self, diff --git a/src/diffusers/pipelines/deepfloyd_if/pipeline_if_inpainting.py b/src/diffusers/pipelines/deepfloyd_if/pipeline_if_inpainting.py index 03a9d6f7c5e8..1dff95a9412f 100644 --- a/src/diffusers/pipelines/deepfloyd_if/pipeline_if_inpainting.py +++ b/src/diffusers/pipelines/deepfloyd_if/pipeline_if_inpainting.py @@ -192,7 +192,6 @@ def __init__( ) self.register_to_config(requires_safety_checker=requires_safety_checker) - @torch.no_grad() # Copied from diffusers.pipelines.deepfloyd_if.pipeline_if.IFPipeline.encode_prompt def encode_prompt( self, diff --git a/src/diffusers/pipelines/deepfloyd_if/pipeline_if_inpainting_superresolution.py b/src/diffusers/pipelines/deepfloyd_if/pipeline_if_inpainting_superresolution.py index 841382ad9c63..124ccd45226c 100644 --- a/src/diffusers/pipelines/deepfloyd_if/pipeline_if_inpainting_superresolution.py +++ b/src/diffusers/pipelines/deepfloyd_if/pipeline_if_inpainting_superresolution.py @@ -343,7 +343,6 @@ def _clean_caption(self, caption): return caption.strip() - @torch.no_grad() # Copied from diffusers.pipelines.deepfloyd_if.pipeline_if.IFPipeline.encode_prompt def encode_prompt( self, diff --git a/src/diffusers/pipelines/deepfloyd_if/pipeline_if_superresolution.py b/src/diffusers/pipelines/deepfloyd_if/pipeline_if_superresolution.py index 52ebebb6f9b4..7ec0f68c8ae9 100644 --- a/src/diffusers/pipelines/deepfloyd_if/pipeline_if_superresolution.py +++ b/src/diffusers/pipelines/deepfloyd_if/pipeline_if_superresolution.py @@ -299,7 +299,6 @@ def _clean_caption(self, caption): return caption.strip() - @torch.no_grad() # Copied from diffusers.pipelines.deepfloyd_if.pipeline_if.IFPipeline.encode_prompt def encode_prompt( self,