diff --git a/src/diffusers/pipelines/amused/pipeline_amused.py b/src/diffusers/pipelines/amused/pipeline_amused.py index bb33bd578fb2..ba8e560e91ba 100644 --- a/src/diffusers/pipelines/amused/pipeline_amused.py +++ b/src/diffusers/pipelines/amused/pipeline_amused.py @@ -21,7 +21,7 @@ from ...models import UVit2DModel, VQModel from ...schedulers import AmusedScheduler from ...utils import is_torch_xla_available, replace_example_docstring -from ..pipeline_utils import DiffusionPipeline, ImagePipelineOutput +from ..pipeline_utils import DeprecatedPipelineMixin, DiffusionPipeline, ImagePipelineOutput if is_torch_xla_available(): @@ -47,7 +47,8 @@ """ -class AmusedPipeline(DiffusionPipeline): +class AmusedPipeline(DeprecatedPipelineMixin, DiffusionPipeline): + _last_supported_version = "0.33.1" image_processor: VaeImageProcessor vqvae: VQModel tokenizer: CLIPTokenizer diff --git a/src/diffusers/pipelines/amused/pipeline_amused_img2img.py b/src/diffusers/pipelines/amused/pipeline_amused_img2img.py index cfb706c5c847..7b7231494f8b 100644 --- a/src/diffusers/pipelines/amused/pipeline_amused_img2img.py +++ b/src/diffusers/pipelines/amused/pipeline_amused_img2img.py @@ -21,7 +21,7 @@ from ...models import UVit2DModel, VQModel from ...schedulers import AmusedScheduler from ...utils import is_torch_xla_available, replace_example_docstring -from ..pipeline_utils import DiffusionPipeline, ImagePipelineOutput +from ..pipeline_utils import DeprecatedPipelineMixin, DiffusionPipeline, ImagePipelineOutput if is_torch_xla_available(): @@ -57,7 +57,8 @@ """ -class AmusedImg2ImgPipeline(DiffusionPipeline): +class AmusedImg2ImgPipeline(DeprecatedPipelineMixin, DiffusionPipeline): + _last_supported_version = "0.33.1" image_processor: VaeImageProcessor vqvae: VQModel tokenizer: CLIPTokenizer diff --git a/src/diffusers/pipelines/amused/pipeline_amused_inpaint.py b/src/diffusers/pipelines/amused/pipeline_amused_inpaint.py index 8148c9bba7dd..66bb880fd6ad 100644 --- a/src/diffusers/pipelines/amused/pipeline_amused_inpaint.py +++ b/src/diffusers/pipelines/amused/pipeline_amused_inpaint.py @@ -22,7 +22,7 @@ from ...models import UVit2DModel, VQModel from ...schedulers import AmusedScheduler from ...utils import is_torch_xla_available, replace_example_docstring -from ..pipeline_utils import DiffusionPipeline, ImagePipelineOutput +from ..pipeline_utils import DeprecatedPipelineMixin, DiffusionPipeline, ImagePipelineOutput if is_torch_xla_available(): @@ -65,7 +65,8 @@ """ -class AmusedInpaintPipeline(DiffusionPipeline): +class AmusedInpaintPipeline(DeprecatedPipelineMixin, DiffusionPipeline): + _last_supported_version = "0.33.1" image_processor: VaeImageProcessor vqvae: VQModel tokenizer: CLIPTokenizer diff --git a/src/diffusers/pipelines/audioldm/pipeline_audioldm.py b/src/diffusers/pipelines/audioldm/pipeline_audioldm.py index 73fa44bad179..4944714a4451 100644 --- a/src/diffusers/pipelines/audioldm/pipeline_audioldm.py +++ b/src/diffusers/pipelines/audioldm/pipeline_audioldm.py @@ -24,7 +24,7 @@ from ...schedulers import KarrasDiffusionSchedulers from ...utils import is_torch_xla_available, logging, replace_example_docstring from ...utils.torch_utils import randn_tensor -from ..pipeline_utils import AudioPipelineOutput, DiffusionPipeline, StableDiffusionMixin +from ..pipeline_utils import AudioPipelineOutput, DeprecatedPipelineMixin, DiffusionPipeline, StableDiffusionMixin if is_torch_xla_available(): @@ -57,7 +57,7 @@ """ -class AudioLDMPipeline(DiffusionPipeline, StableDiffusionMixin): +class AudioLDMPipeline(DeprecatedPipelineMixin, DiffusionPipeline, StableDiffusionMixin): r""" Pipeline for text-to-audio generation using AudioLDM. @@ -81,6 +81,7 @@ class AudioLDMPipeline(DiffusionPipeline, StableDiffusionMixin): Vocoder of class `SpeechT5HifiGan`. """ + _last_supported_version = "0.33.1" model_cpu_offload_seq = "text_encoder->unet->vae" def __init__( diff --git a/src/diffusers/pipelines/blip_diffusion/pipeline_blip_diffusion.py b/src/diffusers/pipelines/blip_diffusion/pipeline_blip_diffusion.py index 28c7058c4e6c..61d00145669a 100644 --- a/src/diffusers/pipelines/blip_diffusion/pipeline_blip_diffusion.py +++ b/src/diffusers/pipelines/blip_diffusion/pipeline_blip_diffusion.py @@ -25,7 +25,7 @@ replace_example_docstring, ) from ...utils.torch_utils import randn_tensor -from ..pipeline_utils import DiffusionPipeline, ImagePipelineOutput +from ..pipeline_utils import DeprecatedPipelineMixin, DiffusionPipeline, ImagePipelineOutput from .blip_image_processing import BlipImageProcessor from .modeling_blip2 import Blip2QFormerModel from .modeling_ctx_clip import ContextCLIPTextModel @@ -81,7 +81,7 @@ """ -class BlipDiffusionPipeline(DiffusionPipeline): +class BlipDiffusionPipeline(DeprecatedPipelineMixin, DiffusionPipeline): """ Pipeline for Zero-Shot Subject Driven Generation using Blip Diffusion. @@ -107,6 +107,7 @@ class BlipDiffusionPipeline(DiffusionPipeline): Position of the context token in the text encoder. """ + _last_supported_version = "0.33.1" model_cpu_offload_seq = "qformer->text_encoder->unet->vae" def __init__( diff --git a/src/diffusers/pipelines/controlnet_xs/pipeline_controlnet_xs.py b/src/diffusers/pipelines/controlnet_xs/pipeline_controlnet_xs.py index ecc7cd4ad726..e780d6966a82 100644 --- a/src/diffusers/pipelines/controlnet_xs/pipeline_controlnet_xs.py +++ b/src/diffusers/pipelines/controlnet_xs/pipeline_controlnet_xs.py @@ -37,7 +37,7 @@ unscale_lora_layers, ) from ...utils.torch_utils import is_compiled_module, is_torch_version, randn_tensor -from ..pipeline_utils import DiffusionPipeline, StableDiffusionMixin +from ..pipeline_utils import DeprecatedPipelineMixin, DiffusionPipeline, StableDiffusionMixin from ..stable_diffusion.pipeline_output import StableDiffusionPipelineOutput from ..stable_diffusion.safety_checker import StableDiffusionSafetyChecker @@ -98,6 +98,7 @@ class StableDiffusionControlNetXSPipeline( + DeprecatedPipelineMixin, DiffusionPipeline, StableDiffusionMixin, TextualInversionLoaderMixin, @@ -138,6 +139,7 @@ class StableDiffusionControlNetXSPipeline( A `CLIPImageProcessor` to extract features from generated images; used as inputs to the `safety_checker`. """ + _last_supported_version = "0.33.1" model_cpu_offload_seq = "text_encoder->unet->vae" _optional_components = ["safety_checker", "feature_extractor"] _exclude_from_cpu_offload = ["safety_checker"] diff --git a/src/diffusers/pipelines/controlnet_xs/pipeline_controlnet_xs_sd_xl.py b/src/diffusers/pipelines/controlnet_xs/pipeline_controlnet_xs_sd_xl.py index 479426d749e3..f130de5cde6e 100644 --- a/src/diffusers/pipelines/controlnet_xs/pipeline_controlnet_xs_sd_xl.py +++ b/src/diffusers/pipelines/controlnet_xs/pipeline_controlnet_xs_sd_xl.py @@ -46,7 +46,7 @@ unscale_lora_layers, ) from ...utils.torch_utils import is_compiled_module, is_torch_version, randn_tensor -from ..pipeline_utils import DiffusionPipeline +from ..pipeline_utils import DeprecatedPipelineMixin, DiffusionPipeline from ..stable_diffusion_xl.pipeline_output import StableDiffusionXLPipelineOutput @@ -114,6 +114,7 @@ class StableDiffusionXLControlNetXSPipeline( + DeprecatedPipelineMixin, DiffusionPipeline, TextualInversionLoaderMixin, StableDiffusionXLLoraLoaderMixin, @@ -158,6 +159,7 @@ class StableDiffusionXLControlNetXSPipeline( watermarker is used. """ + _last_supported_version = "0.33.1" model_cpu_offload_seq = "text_encoder->text_encoder_2->unet->vae" _optional_components = [ "tokenizer", diff --git a/src/diffusers/pipelines/dance_diffusion/pipeline_dance_diffusion.py b/src/diffusers/pipelines/dance_diffusion/pipeline_dance_diffusion.py index b33c3735c2fb..62ffeb9f49a6 100644 --- a/src/diffusers/pipelines/dance_diffusion/pipeline_dance_diffusion.py +++ b/src/diffusers/pipelines/dance_diffusion/pipeline_dance_diffusion.py @@ -21,7 +21,7 @@ from ...schedulers import SchedulerMixin from ...utils import is_torch_xla_available, logging from ...utils.torch_utils import randn_tensor -from ..pipeline_utils import AudioPipelineOutput, DiffusionPipeline +from ..pipeline_utils import AudioPipelineOutput, DeprecatedPipelineMixin, DiffusionPipeline if is_torch_xla_available(): @@ -34,7 +34,7 @@ logger = logging.get_logger(__name__) # pylint: disable=invalid-name -class DanceDiffusionPipeline(DiffusionPipeline): +class DanceDiffusionPipeline(DeprecatedPipelineMixin, DiffusionPipeline): r""" Pipeline for audio generation. @@ -49,6 +49,7 @@ class DanceDiffusionPipeline(DiffusionPipeline): [`IPNDMScheduler`]. """ + _last_supported_version = "0.33.1" model_cpu_offload_seq = "unet" def __init__(self, unet: UNet1DModel, scheduler: SchedulerMixin): diff --git a/src/diffusers/pipelines/i2vgen_xl/pipeline_i2vgen_xl.py b/src/diffusers/pipelines/i2vgen_xl/pipeline_i2vgen_xl.py index e16e34b0258f..90d20552f493 100644 --- a/src/diffusers/pipelines/i2vgen_xl/pipeline_i2vgen_xl.py +++ b/src/diffusers/pipelines/i2vgen_xl/pipeline_i2vgen_xl.py @@ -33,7 +33,7 @@ ) from ...utils.torch_utils import randn_tensor from ...video_processor import VideoProcessor -from ..pipeline_utils import DiffusionPipeline, StableDiffusionMixin +from ..pipeline_utils import DeprecatedPipelineMixin, DiffusionPipeline, StableDiffusionMixin if is_torch_xla_available(): @@ -97,9 +97,11 @@ class I2VGenXLPipelineOutput(BaseOutput): class I2VGenXLPipeline( + DeprecatedPipelineMixin, DiffusionPipeline, StableDiffusionMixin, ): + _last_supported_version = "0.33.1" r""" Pipeline for image-to-video generation as proposed in [I2VGenXL](https://i2vgen-xl.github.io/). diff --git a/src/diffusers/pipelines/musicldm/pipeline_musicldm.py b/src/diffusers/pipelines/musicldm/pipeline_musicldm.py index d28864298d42..d340738c86ca 100644 --- a/src/diffusers/pipelines/musicldm/pipeline_musicldm.py +++ b/src/diffusers/pipelines/musicldm/pipeline_musicldm.py @@ -36,7 +36,7 @@ replace_example_docstring, ) from ...utils.torch_utils import randn_tensor -from ..pipeline_utils import AudioPipelineOutput, DiffusionPipeline, StableDiffusionMixin +from ..pipeline_utils import AudioPipelineOutput, DeprecatedPipelineMixin, DiffusionPipeline, StableDiffusionMixin if is_librosa_available(): @@ -76,7 +76,8 @@ """ -class MusicLDMPipeline(DiffusionPipeline, StableDiffusionMixin): +class MusicLDMPipeline(DeprecatedPipelineMixin, DiffusionPipeline, StableDiffusionMixin): + _last_supported_version = "0.33.1" r""" Pipeline for text-to-audio generation using MusicLDM. diff --git a/src/diffusers/pipelines/paint_by_example/pipeline_paint_by_example.py b/src/diffusers/pipelines/paint_by_example/pipeline_paint_by_example.py index 3e18fd0419fa..e1ae3010f0b2 100644 --- a/src/diffusers/pipelines/paint_by_example/pipeline_paint_by_example.py +++ b/src/diffusers/pipelines/paint_by_example/pipeline_paint_by_example.py @@ -25,7 +25,7 @@ from ...schedulers import DDIMScheduler, LMSDiscreteScheduler, PNDMScheduler from ...utils import deprecate, is_torch_xla_available, logging from ...utils.torch_utils import randn_tensor -from ..pipeline_utils import DiffusionPipeline, StableDiffusionMixin +from ..pipeline_utils import DeprecatedPipelineMixin, DiffusionPipeline, StableDiffusionMixin from ..stable_diffusion import StableDiffusionPipelineOutput from ..stable_diffusion.safety_checker import StableDiffusionSafetyChecker from .image_encoder import PaintByExampleImageEncoder @@ -155,7 +155,8 @@ def prepare_mask_and_masked_image(image, mask): return mask, masked_image -class PaintByExamplePipeline(DiffusionPipeline, StableDiffusionMixin): +class PaintByExamplePipeline(DeprecatedPipelineMixin, DiffusionPipeline, StableDiffusionMixin): + _last_supported_version = "0.33.1" r""" diff --git a/src/diffusers/pipelines/pia/pipeline_pia.py b/src/diffusers/pipelines/pia/pipeline_pia.py index 44d6c3a4b243..6c220b5431f9 100644 --- a/src/diffusers/pipelines/pia/pipeline_pia.py +++ b/src/diffusers/pipelines/pia/pipeline_pia.py @@ -46,7 +46,7 @@ from ...utils.torch_utils import randn_tensor from ...video_processor import VideoProcessor from ..free_init_utils import FreeInitMixin -from ..pipeline_utils import DiffusionPipeline, StableDiffusionMixin +from ..pipeline_utils import DeprecatedPipelineMixin, DiffusionPipeline, StableDiffusionMixin if is_torch_xla_available(): @@ -132,6 +132,7 @@ class PIAPipelineOutput(BaseOutput): class PIAPipeline( + DeprecatedPipelineMixin, DiffusionPipeline, StableDiffusionMixin, TextualInversionLoaderMixin, @@ -140,6 +141,7 @@ class PIAPipeline( FromSingleFileMixin, FreeInitMixin, ): + _last_supported_version = "0.33.1" r""" Pipeline for text-to-video generation. diff --git a/src/diffusers/pipelines/pipeline_utils.py b/src/diffusers/pipelines/pipeline_utils.py index 3d92034aef15..06c2ec88a366 100644 --- a/src/diffusers/pipelines/pipeline_utils.py +++ b/src/diffusers/pipelines/pipeline_utils.py @@ -139,6 +139,43 @@ class AudioPipelineOutput(BaseOutput): audios: np.ndarray +class DeprecatedPipelineMixin: + """ + A mixin that can be used to mark a pipeline as deprecated. + + Pipelines inheriting from this mixin will raise a warning when instantiated, indicating that they are deprecated + and won't receive updates past the specified version. Tests will be skipped for pipelines that inherit from this + mixin. + + Example usage: + ```python + class MyDeprecatedPipeline(DeprecatedPipelineMixin, DiffusionPipeline): + _last_supported_version = "0.20.0" + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + ``` + """ + + # Override this in the inheriting class to specify the last version that will support this pipeline + _last_supported_version = None + + def __init__(self, *args, **kwargs): + # Get the class name for the warning message + class_name = self.__class__.__name__ + + # Get the last supported version or use the current version if not specified + version_info = getattr(self.__class__, "_last_supported_version", __version__) + + # Raise a warning that this pipeline is deprecated + logger.warning( + f"The {class_name} has been deprecated and will not receive bug fixes or feature updates after Diffusers version {version_info}. " + ) + + # Call the parent class's __init__ method + super().__init__(*args, **kwargs) + + class DiffusionPipeline(ConfigMixin, PushToHubMixin): r""" Base class for all pipelines. diff --git a/src/diffusers/pipelines/semantic_stable_diffusion/pipeline_semantic_stable_diffusion.py b/src/diffusers/pipelines/semantic_stable_diffusion/pipeline_semantic_stable_diffusion.py index d3779f9c8bfc..a5f67bffe6f0 100644 --- a/src/diffusers/pipelines/semantic_stable_diffusion/pipeline_semantic_stable_diffusion.py +++ b/src/diffusers/pipelines/semantic_stable_diffusion/pipeline_semantic_stable_diffusion.py @@ -11,7 +11,7 @@ from ...schedulers import KarrasDiffusionSchedulers from ...utils import deprecate, is_torch_xla_available, logging from ...utils.torch_utils import randn_tensor -from ..pipeline_utils import DiffusionPipeline, StableDiffusionMixin +from ..pipeline_utils import DeprecatedPipelineMixin, DiffusionPipeline, StableDiffusionMixin from .pipeline_output import SemanticStableDiffusionPipelineOutput @@ -25,7 +25,8 @@ logger = logging.get_logger(__name__) # pylint: disable=invalid-name -class SemanticStableDiffusionPipeline(DiffusionPipeline, StableDiffusionMixin): +class SemanticStableDiffusionPipeline(DeprecatedPipelineMixin, DiffusionPipeline, StableDiffusionMixin): + _last_supported_version = "0.33.1" r""" Pipeline for text-to-image generation using Stable Diffusion with latent editing. diff --git a/src/diffusers/pipelines/stable_diffusion_attend_and_excite/pipeline_stable_diffusion_attend_and_excite.py b/src/diffusers/pipelines/stable_diffusion_attend_and_excite/pipeline_stable_diffusion_attend_and_excite.py index 893039316b2f..b5331fa92db2 100644 --- a/src/diffusers/pipelines/stable_diffusion_attend_and_excite/pipeline_stable_diffusion_attend_and_excite.py +++ b/src/diffusers/pipelines/stable_diffusion_attend_and_excite/pipeline_stable_diffusion_attend_and_excite.py @@ -37,7 +37,7 @@ unscale_lora_layers, ) from ...utils.torch_utils import randn_tensor -from ..pipeline_utils import DiffusionPipeline, StableDiffusionMixin +from ..pipeline_utils import DeprecatedPipelineMixin, DiffusionPipeline, StableDiffusionMixin from ..stable_diffusion import StableDiffusionPipelineOutput from ..stable_diffusion.safety_checker import StableDiffusionSafetyChecker @@ -179,7 +179,9 @@ def __call__(self, attn: Attention, hidden_states, encoder_hidden_states=None, a return hidden_states -class StableDiffusionAttendAndExcitePipeline(DiffusionPipeline, StableDiffusionMixin, TextualInversionLoaderMixin): +class StableDiffusionAttendAndExcitePipeline( + DeprecatedPipelineMixin, DiffusionPipeline, StableDiffusionMixin, TextualInversionLoaderMixin +): r""" Pipeline for text-to-image generation using Stable Diffusion and Attend-and-Excite. @@ -209,6 +211,8 @@ class StableDiffusionAttendAndExcitePipeline(DiffusionPipeline, StableDiffusionM A `CLIPImageProcessor` to extract features from generated images; used as inputs to the `safety_checker`. """ + _last_supported_version = "0.33.1" + model_cpu_offload_seq = "text_encoder->unet->vae" _optional_components = ["safety_checker", "feature_extractor"] _exclude_from_cpu_offload = ["safety_checker"] diff --git a/src/diffusers/pipelines/stable_diffusion_diffedit/pipeline_stable_diffusion_diffedit.py b/src/diffusers/pipelines/stable_diffusion_diffedit/pipeline_stable_diffusion_diffedit.py index 0343a1aa6feb..b104a5ac7cf5 100644 --- a/src/diffusers/pipelines/stable_diffusion_diffedit/pipeline_stable_diffusion_diffedit.py +++ b/src/diffusers/pipelines/stable_diffusion_diffedit/pipeline_stable_diffusion_diffedit.py @@ -40,7 +40,7 @@ unscale_lora_layers, ) from ...utils.torch_utils import randn_tensor -from ..pipeline_utils import DiffusionPipeline, StableDiffusionMixin +from ..pipeline_utils import DeprecatedPipelineMixin, DiffusionPipeline, StableDiffusionMixin from ..stable_diffusion import StableDiffusionPipelineOutput from ..stable_diffusion.safety_checker import StableDiffusionSafetyChecker @@ -242,7 +242,11 @@ def preprocess_mask(mask, batch_size: int = 1): class StableDiffusionDiffEditPipeline( - DiffusionPipeline, StableDiffusionMixin, TextualInversionLoaderMixin, StableDiffusionLoraLoaderMixin + DeprecatedPipelineMixin, + DiffusionPipeline, + StableDiffusionMixin, + TextualInversionLoaderMixin, + StableDiffusionLoraLoaderMixin, ): r""" @@ -282,6 +286,8 @@ class StableDiffusionDiffEditPipeline( A `CLIPImageProcessor` to extract features from generated images; used as inputs to the `safety_checker`. """ + _last_supported_version = "0.33.1" + model_cpu_offload_seq = "text_encoder->unet->vae" _optional_components = ["safety_checker", "feature_extractor", "inverse_scheduler"] _exclude_from_cpu_offload = ["safety_checker"] diff --git a/src/diffusers/pipelines/stable_diffusion_gligen/pipeline_stable_diffusion_gligen.py b/src/diffusers/pipelines/stable_diffusion_gligen/pipeline_stable_diffusion_gligen.py index 14bac0fafc55..b4c4f384face 100644 --- a/src/diffusers/pipelines/stable_diffusion_gligen/pipeline_stable_diffusion_gligen.py +++ b/src/diffusers/pipelines/stable_diffusion_gligen/pipeline_stable_diffusion_gligen.py @@ -36,7 +36,7 @@ unscale_lora_layers, ) from ...utils.torch_utils import randn_tensor -from ..pipeline_utils import DiffusionPipeline, StableDiffusionMixin +from ..pipeline_utils import DeprecatedPipelineMixin, DiffusionPipeline, StableDiffusionMixin from ..stable_diffusion import StableDiffusionPipelineOutput from ..stable_diffusion.safety_checker import StableDiffusionSafetyChecker @@ -108,7 +108,7 @@ """ -class StableDiffusionGLIGENPipeline(DiffusionPipeline, StableDiffusionMixin): +class StableDiffusionGLIGENPipeline(DeprecatedPipelineMixin, DiffusionPipeline, StableDiffusionMixin): r""" Pipeline for text-to-image generation using Stable Diffusion with Grounded-Language-to-Image Generation (GLIGEN). @@ -135,6 +135,8 @@ class StableDiffusionGLIGENPipeline(DiffusionPipeline, StableDiffusionMixin): A `CLIPImageProcessor` to extract features from generated images; used as inputs to the `safety_checker`. """ + _last_supported_version = "0.33.1" + _optional_components = ["safety_checker", "feature_extractor"] model_cpu_offload_seq = "text_encoder->unet->vae" _exclude_from_cpu_offload = ["safety_checker"] diff --git a/src/diffusers/pipelines/stable_diffusion_gligen/pipeline_stable_diffusion_gligen_text_image.py b/src/diffusers/pipelines/stable_diffusion_gligen/pipeline_stable_diffusion_gligen_text_image.py index f61a8ac23129..ca48955c0ddd 100644 --- a/src/diffusers/pipelines/stable_diffusion_gligen/pipeline_stable_diffusion_gligen_text_image.py +++ b/src/diffusers/pipelines/stable_diffusion_gligen/pipeline_stable_diffusion_gligen_text_image.py @@ -41,7 +41,7 @@ unscale_lora_layers, ) from ...utils.torch_utils import randn_tensor -from ..pipeline_utils import DiffusionPipeline, StableDiffusionMixin +from ..pipeline_utils import DeprecatedPipelineMixin, DiffusionPipeline, StableDiffusionMixin from ..stable_diffusion import StableDiffusionPipelineOutput from ..stable_diffusion.clip_image_project_model import CLIPImageProjection from ..stable_diffusion.safety_checker import StableDiffusionSafetyChecker @@ -160,7 +160,7 @@ """ -class StableDiffusionGLIGENTextImagePipeline(DiffusionPipeline, StableDiffusionMixin): +class StableDiffusionGLIGENTextImagePipeline(DeprecatedPipelineMixin, DiffusionPipeline, StableDiffusionMixin): r""" Pipeline for text-to-image generation using Stable Diffusion with Grounded-Language-to-Image Generation (GLIGEN). @@ -193,6 +193,8 @@ class StableDiffusionGLIGENTextImagePipeline(DiffusionPipeline, StableDiffusionM A `CLIPImageProcessor` to extract features from generated images; used as inputs to the `safety_checker`. """ + _last_supported_version = "0.33.1" + model_cpu_offload_seq = "text_encoder->unet->vae" _optional_components = ["safety_checker", "feature_extractor"] _exclude_from_cpu_offload = ["safety_checker"] diff --git a/src/diffusers/pipelines/stable_diffusion_k_diffusion/pipeline_stable_diffusion_k_diffusion.py b/src/diffusers/pipelines/stable_diffusion_k_diffusion/pipeline_stable_diffusion_k_diffusion.py index 85c67f08ff8a..263478032453 100755 --- a/src/diffusers/pipelines/stable_diffusion_k_diffusion/pipeline_stable_diffusion_k_diffusion.py +++ b/src/diffusers/pipelines/stable_diffusion_k_diffusion/pipeline_stable_diffusion_k_diffusion.py @@ -42,7 +42,7 @@ unscale_lora_layers, ) from ...utils.torch_utils import randn_tensor -from ..pipeline_utils import DiffusionPipeline, StableDiffusionMixin +from ..pipeline_utils import DeprecatedPipelineMixin, DiffusionPipeline, StableDiffusionMixin from ..stable_diffusion import StableDiffusionPipelineOutput, StableDiffusionSafetyChecker @@ -64,7 +64,11 @@ def apply_model(self, *args, **kwargs): class StableDiffusionKDiffusionPipeline( - DiffusionPipeline, StableDiffusionMixin, TextualInversionLoaderMixin, StableDiffusionLoraLoaderMixin + DeprecatedPipelineMixin, + DiffusionPipeline, + StableDiffusionMixin, + TextualInversionLoaderMixin, + StableDiffusionLoraLoaderMixin, ): r""" Pipeline for text-to-image generation using Stable Diffusion. @@ -105,6 +109,8 @@ class StableDiffusionKDiffusionPipeline( Model that extracts features from generated images to be used as inputs for the `safety_checker`. """ + _last_supported_version = "0.33.1" + model_cpu_offload_seq = "text_encoder->unet->vae" _optional_components = ["safety_checker", "feature_extractor"] _exclude_from_cpu_offload = ["safety_checker"] diff --git a/src/diffusers/pipelines/stable_diffusion_k_diffusion/pipeline_stable_diffusion_xl_k_diffusion.py b/src/diffusers/pipelines/stable_diffusion_k_diffusion/pipeline_stable_diffusion_xl_k_diffusion.py index ead6de6943a9..6d28a205788e 100644 --- a/src/diffusers/pipelines/stable_diffusion_k_diffusion/pipeline_stable_diffusion_xl_k_diffusion.py +++ b/src/diffusers/pipelines/stable_diffusion_k_diffusion/pipeline_stable_diffusion_xl_k_diffusion.py @@ -48,7 +48,7 @@ unscale_lora_layers, ) from ...utils.torch_utils import randn_tensor -from ..pipeline_utils import DiffusionPipeline, StableDiffusionMixin +from ..pipeline_utils import DeprecatedPipelineMixin, DiffusionPipeline, StableDiffusionMixin from ..stable_diffusion_xl.pipeline_output import StableDiffusionXLPipelineOutput @@ -88,6 +88,7 @@ def apply_model(self, *args, **kwargs): class StableDiffusionXLKDiffusionPipeline( + DeprecatedPipelineMixin, DiffusionPipeline, StableDiffusionMixin, FromSingleFileMixin, @@ -95,6 +96,8 @@ class StableDiffusionXLKDiffusionPipeline( TextualInversionLoaderMixin, IPAdapterMixin, ): + _last_supported_version = "0.33.1" + r""" Pipeline for text-to-image generation using Stable Diffusion XL and k-diffusion. diff --git a/src/diffusers/pipelines/stable_diffusion_ldm3d/pipeline_stable_diffusion_ldm3d.py b/src/diffusers/pipelines/stable_diffusion_ldm3d/pipeline_stable_diffusion_ldm3d.py index b6a214b0c44e..281962108ef9 100644 --- a/src/diffusers/pipelines/stable_diffusion_ldm3d/pipeline_stable_diffusion_ldm3d.py +++ b/src/diffusers/pipelines/stable_diffusion_ldm3d/pipeline_stable_diffusion_ldm3d.py @@ -37,7 +37,7 @@ unscale_lora_layers, ) from ...utils.torch_utils import randn_tensor -from ..pipeline_utils import DiffusionPipeline, StableDiffusionMixin +from ..pipeline_utils import DeprecatedPipelineMixin, DiffusionPipeline, StableDiffusionMixin from ..stable_diffusion.safety_checker import StableDiffusionSafetyChecker @@ -178,6 +178,7 @@ class LDM3DPipelineOutput(BaseOutput): class StableDiffusionLDM3DPipeline( + DeprecatedPipelineMixin, DiffusionPipeline, StableDiffusionMixin, TextualInversionLoaderMixin, @@ -185,6 +186,8 @@ class StableDiffusionLDM3DPipeline( StableDiffusionLoraLoaderMixin, FromSingleFileMixin, ): + _last_supported_version = "0.33.1" + r""" Pipeline for text-to-image and 3D generation using LDM3D. diff --git a/src/diffusers/pipelines/stable_diffusion_panorama/pipeline_stable_diffusion_panorama.py b/src/diffusers/pipelines/stable_diffusion_panorama/pipeline_stable_diffusion_panorama.py index f3c887ed0bc5..11eea2b85871 100644 --- a/src/diffusers/pipelines/stable_diffusion_panorama/pipeline_stable_diffusion_panorama.py +++ b/src/diffusers/pipelines/stable_diffusion_panorama/pipeline_stable_diffusion_panorama.py @@ -33,7 +33,7 @@ unscale_lora_layers, ) from ...utils.torch_utils import randn_tensor -from ..pipeline_utils import DiffusionPipeline, StableDiffusionMixin +from ..pipeline_utils import DeprecatedPipelineMixin, DiffusionPipeline, StableDiffusionMixin from ..stable_diffusion import StableDiffusionPipelineOutput from ..stable_diffusion.safety_checker import StableDiffusionSafetyChecker @@ -156,12 +156,15 @@ def retrieve_timesteps( class StableDiffusionPanoramaPipeline( + DeprecatedPipelineMixin, DiffusionPipeline, StableDiffusionMixin, TextualInversionLoaderMixin, StableDiffusionLoraLoaderMixin, IPAdapterMixin, ): + _last_supported_version = "0.33.1" + r""" Pipeline for text-to-image generation using MultiDiffusion. diff --git a/src/diffusers/pipelines/stable_diffusion_safe/pipeline_stable_diffusion_safe.py b/src/diffusers/pipelines/stable_diffusion_safe/pipeline_stable_diffusion_safe.py index 5b9695f78e08..d334107b0703 100644 --- a/src/diffusers/pipelines/stable_diffusion_safe/pipeline_stable_diffusion_safe.py +++ b/src/diffusers/pipelines/stable_diffusion_safe/pipeline_stable_diffusion_safe.py @@ -14,7 +14,7 @@ from ...schedulers import KarrasDiffusionSchedulers from ...utils import deprecate, is_torch_xla_available, logging from ...utils.torch_utils import randn_tensor -from ..pipeline_utils import DiffusionPipeline, StableDiffusionMixin +from ..pipeline_utils import DeprecatedPipelineMixin, DiffusionPipeline, StableDiffusionMixin from . import StableDiffusionSafePipelineOutput from .safety_checker import SafeStableDiffusionSafetyChecker @@ -29,7 +29,9 @@ logger = logging.get_logger(__name__) # pylint: disable=invalid-name -class StableDiffusionPipelineSafe(DiffusionPipeline, StableDiffusionMixin, IPAdapterMixin): +class StableDiffusionPipelineSafe(DeprecatedPipelineMixin, DiffusionPipeline, StableDiffusionMixin, IPAdapterMixin): + _last_supported_version = "0.33.1" + r""" Pipeline based on the [`StableDiffusionPipeline`] for text-to-image generation using Safe Latent Diffusion. diff --git a/src/diffusers/pipelines/stable_diffusion_sag/pipeline_stable_diffusion_sag.py b/src/diffusers/pipelines/stable_diffusion_sag/pipeline_stable_diffusion_sag.py index 2a808dd9466f..0745ba00182e 100644 --- a/src/diffusers/pipelines/stable_diffusion_sag/pipeline_stable_diffusion_sag.py +++ b/src/diffusers/pipelines/stable_diffusion_sag/pipeline_stable_diffusion_sag.py @@ -34,7 +34,7 @@ unscale_lora_layers, ) from ...utils.torch_utils import randn_tensor -from ..pipeline_utils import DiffusionPipeline, StableDiffusionMixin +from ..pipeline_utils import DeprecatedPipelineMixin, DiffusionPipeline, StableDiffusionMixin from ..stable_diffusion import StableDiffusionPipelineOutput from ..stable_diffusion.safety_checker import StableDiffusionSafetyChecker @@ -107,7 +107,11 @@ def __call__( # Modified to get self-attention guidance scale in this paper (https://huggingface.co/papers/2210.00939) as an input -class StableDiffusionSAGPipeline(DiffusionPipeline, StableDiffusionMixin, TextualInversionLoaderMixin, IPAdapterMixin): +class StableDiffusionSAGPipeline( + DeprecatedPipelineMixin, DiffusionPipeline, StableDiffusionMixin, TextualInversionLoaderMixin, IPAdapterMixin +): + _last_supported_version = "0.33.1" + r""" Pipeline for text-to-image generation using Stable Diffusion. diff --git a/src/diffusers/pipelines/text_to_video_synthesis/pipeline_text_to_video_synth.py b/src/diffusers/pipelines/text_to_video_synthesis/pipeline_text_to_video_synth.py index 4e41ce99003b..1a059da69e56 100644 --- a/src/diffusers/pipelines/text_to_video_synthesis/pipeline_text_to_video_synth.py +++ b/src/diffusers/pipelines/text_to_video_synthesis/pipeline_text_to_video_synth.py @@ -33,7 +33,7 @@ ) from ...utils.torch_utils import randn_tensor from ...video_processor import VideoProcessor -from ..pipeline_utils import DiffusionPipeline, StableDiffusionMixin +from ..pipeline_utils import DeprecatedPipelineMixin, DiffusionPipeline, StableDiffusionMixin from . import TextToVideoSDPipelineOutput @@ -68,8 +68,13 @@ class TextToVideoSDPipeline( - DiffusionPipeline, StableDiffusionMixin, TextualInversionLoaderMixin, StableDiffusionLoraLoaderMixin + DeprecatedPipelineMixin, + DiffusionPipeline, + StableDiffusionMixin, + TextualInversionLoaderMixin, + StableDiffusionLoraLoaderMixin, ): + _last_supported_version = "0.33.1" r""" Pipeline for text-to-video generation. diff --git a/src/diffusers/pipelines/text_to_video_synthesis/pipeline_text_to_video_synth_img2img.py b/src/diffusers/pipelines/text_to_video_synthesis/pipeline_text_to_video_synth_img2img.py index 37a830891b4a..6114d8084e49 100644 --- a/src/diffusers/pipelines/text_to_video_synthesis/pipeline_text_to_video_synth_img2img.py +++ b/src/diffusers/pipelines/text_to_video_synthesis/pipeline_text_to_video_synth_img2img.py @@ -34,7 +34,7 @@ ) from ...utils.torch_utils import randn_tensor from ...video_processor import VideoProcessor -from ..pipeline_utils import DiffusionPipeline, StableDiffusionMixin +from ..pipeline_utils import DeprecatedPipelineMixin, DiffusionPipeline, StableDiffusionMixin from . import TextToVideoSDPipelineOutput @@ -103,8 +103,13 @@ def retrieve_latents( class VideoToVideoSDPipeline( - DiffusionPipeline, StableDiffusionMixin, TextualInversionLoaderMixin, StableDiffusionLoraLoaderMixin + DeprecatedPipelineMixin, + DiffusionPipeline, + StableDiffusionMixin, + TextualInversionLoaderMixin, + StableDiffusionLoraLoaderMixin, ): + _last_supported_version = "0.33.1" r""" Pipeline for text-guided video-to-video generation. diff --git a/src/diffusers/pipelines/text_to_video_synthesis/pipeline_text_to_video_zero.py b/src/diffusers/pipelines/text_to_video_synthesis/pipeline_text_to_video_zero.py index 7a8db4a8e522..800cf7b65af9 100644 --- a/src/diffusers/pipelines/text_to_video_synthesis/pipeline_text_to_video_zero.py +++ b/src/diffusers/pipelines/text_to_video_synthesis/pipeline_text_to_video_zero.py @@ -24,7 +24,7 @@ unscale_lora_layers, ) from ...utils.torch_utils import randn_tensor -from ..pipeline_utils import DiffusionPipeline, StableDiffusionMixin +from ..pipeline_utils import DeprecatedPipelineMixin, DiffusionPipeline, StableDiffusionMixin from ..stable_diffusion import StableDiffusionSafetyChecker @@ -296,12 +296,14 @@ def create_motion_field_and_warp_latents(motion_field_strength_x, motion_field_s class TextToVideoZeroPipeline( + DeprecatedPipelineMixin, DiffusionPipeline, StableDiffusionMixin, TextualInversionLoaderMixin, StableDiffusionLoraLoaderMixin, FromSingleFileMixin, ): + _last_supported_version = "0.33.1" r""" Pipeline for zero-shot text-to-video generation using Stable Diffusion. diff --git a/src/diffusers/pipelines/text_to_video_synthesis/pipeline_text_to_video_zero_sdxl.py b/src/diffusers/pipelines/text_to_video_synthesis/pipeline_text_to_video_zero_sdxl.py index d38e65ec97c7..a9fa43c1f5c5 100644 --- a/src/diffusers/pipelines/text_to_video_synthesis/pipeline_text_to_video_zero_sdxl.py +++ b/src/diffusers/pipelines/text_to_video_synthesis/pipeline_text_to_video_zero_sdxl.py @@ -35,7 +35,7 @@ unscale_lora_layers, ) from ...utils.torch_utils import randn_tensor -from ..pipeline_utils import DiffusionPipeline, StableDiffusionMixin +from ..pipeline_utils import DeprecatedPipelineMixin, DiffusionPipeline, StableDiffusionMixin if is_invisible_watermark_available(): @@ -346,11 +346,13 @@ def rescale_noise_cfg(noise_cfg, noise_pred_text, guidance_rescale=0.0): class TextToVideoZeroSDXLPipeline( + DeprecatedPipelineMixin, DiffusionPipeline, StableDiffusionMixin, StableDiffusionXLLoraLoaderMixin, TextualInversionLoaderMixin, ): + _last_supported_version = "0.33.1" r""" Pipeline for zero-shot text-to-video generation using Stable Diffusion XL. diff --git a/src/diffusers/pipelines/unclip/pipeline_unclip.py b/src/diffusers/pipelines/unclip/pipeline_unclip.py index bf42d44f74c1..26dc8e78f516 100644 --- a/src/diffusers/pipelines/unclip/pipeline_unclip.py +++ b/src/diffusers/pipelines/unclip/pipeline_unclip.py @@ -24,7 +24,7 @@ from ...schedulers import UnCLIPScheduler from ...utils import is_torch_xla_available, logging from ...utils.torch_utils import randn_tensor -from ..pipeline_utils import DiffusionPipeline, ImagePipelineOutput +from ..pipeline_utils import DeprecatedPipelineMixin, DiffusionPipeline, ImagePipelineOutput from .text_proj import UnCLIPTextProjModel @@ -38,7 +38,7 @@ logger = logging.get_logger(__name__) # pylint: disable=invalid-name -class UnCLIPPipeline(DiffusionPipeline): +class UnCLIPPipeline(DeprecatedPipelineMixin, DiffusionPipeline): """ Pipeline for text-to-image generation using unCLIP. @@ -69,6 +69,7 @@ class UnCLIPPipeline(DiffusionPipeline): """ + _last_supported_version = "0.33.1" _exclude_from_cpu_offload = ["prior"] prior: PriorTransformer diff --git a/src/diffusers/pipelines/unclip/pipeline_unclip_image_variation.py b/src/diffusers/pipelines/unclip/pipeline_unclip_image_variation.py index 8fa0a848f7e7..496e409edcae 100644 --- a/src/diffusers/pipelines/unclip/pipeline_unclip_image_variation.py +++ b/src/diffusers/pipelines/unclip/pipeline_unclip_image_variation.py @@ -29,7 +29,7 @@ from ...schedulers import UnCLIPScheduler from ...utils import is_torch_xla_available, logging from ...utils.torch_utils import randn_tensor -from ..pipeline_utils import DiffusionPipeline, ImagePipelineOutput +from ..pipeline_utils import DeprecatedPipelineMixin, DiffusionPipeline, ImagePipelineOutput from .text_proj import UnCLIPTextProjModel @@ -43,7 +43,7 @@ logger = logging.get_logger(__name__) # pylint: disable=invalid-name -class UnCLIPImageVariationPipeline(DiffusionPipeline): +class UnCLIPImageVariationPipeline(DeprecatedPipelineMixin, DiffusionPipeline): """ Pipeline to generate image variations from an input image using UnCLIP. @@ -73,6 +73,7 @@ class UnCLIPImageVariationPipeline(DiffusionPipeline): Scheduler used in the super resolution denoising process (a modified [`DDPMScheduler`]). """ + _last_supported_version = "0.33.1" decoder: UNet2DConditionModel text_proj: UnCLIPTextProjModel text_encoder: CLIPTextModelWithProjection diff --git a/src/diffusers/pipelines/unidiffuser/pipeline_unidiffuser.py b/src/diffusers/pipelines/unidiffuser/pipeline_unidiffuser.py index 49d301a5cfe8..40fd3b337301 100644 --- a/src/diffusers/pipelines/unidiffuser/pipeline_unidiffuser.py +++ b/src/diffusers/pipelines/unidiffuser/pipeline_unidiffuser.py @@ -28,7 +28,7 @@ ) from ...utils.outputs import BaseOutput from ...utils.torch_utils import randn_tensor -from ..pipeline_utils import DiffusionPipeline +from ..pipeline_utils import DeprecatedPipelineMixin, DiffusionPipeline from .modeling_text_decoder import UniDiffuserTextDecoder from .modeling_uvit import UniDiffuserModel @@ -62,7 +62,7 @@ class ImageTextPipelineOutput(BaseOutput): text: Optional[Union[List[str], List[List[str]]]] -class UniDiffuserPipeline(DiffusionPipeline): +class UniDiffuserPipeline(DeprecatedPipelineMixin, DiffusionPipeline): r""" Pipeline for a bimodal image-text model which supports unconditional text and image generation, text-conditioned image generation, image-conditioned text generation, and joint image-text generation. @@ -96,6 +96,7 @@ class UniDiffuserPipeline(DiffusionPipeline): original UniDiffuser paper uses the [`DPMSolverMultistepScheduler`] scheduler. """ + _last_supported_version = "0.33.1" # TODO: support for moving submodules for components with enable_model_cpu_offload model_cpu_offload_seq = "text_encoder->image_encoder->unet->vae->text_decoder" diff --git a/src/diffusers/pipelines/wuerstchen/pipeline_wuerstchen.py b/src/diffusers/pipelines/wuerstchen/pipeline_wuerstchen.py index f4092ca885df..1da4f99ee0f9 100644 --- a/src/diffusers/pipelines/wuerstchen/pipeline_wuerstchen.py +++ b/src/diffusers/pipelines/wuerstchen/pipeline_wuerstchen.py @@ -21,7 +21,7 @@ from ...schedulers import DDPMWuerstchenScheduler from ...utils import deprecate, is_torch_xla_available, logging, replace_example_docstring from ...utils.torch_utils import randn_tensor -from ..pipeline_utils import DiffusionPipeline, ImagePipelineOutput +from ..pipeline_utils import DeprecatedPipelineMixin, DiffusionPipeline, ImagePipelineOutput from .modeling_paella_vq_model import PaellaVQModel from .modeling_wuerstchen_diffnext import WuerstchenDiffNeXt @@ -56,7 +56,7 @@ """ -class WuerstchenDecoderPipeline(DiffusionPipeline): +class WuerstchenDecoderPipeline(DeprecatedPipelineMixin, DiffusionPipeline): """ Pipeline for generating images from the Wuerstchen model. diff --git a/src/diffusers/pipelines/wuerstchen/pipeline_wuerstchen_combined.py b/src/diffusers/pipelines/wuerstchen/pipeline_wuerstchen_combined.py index e4756efbac92..0e7158ee6b79 100644 --- a/src/diffusers/pipelines/wuerstchen/pipeline_wuerstchen_combined.py +++ b/src/diffusers/pipelines/wuerstchen/pipeline_wuerstchen_combined.py @@ -18,7 +18,7 @@ from ...schedulers import DDPMWuerstchenScheduler from ...utils import deprecate, replace_example_docstring -from ..pipeline_utils import DiffusionPipeline +from ..pipeline_utils import DeprecatedPipelineMixin, DiffusionPipeline from .modeling_paella_vq_model import PaellaVQModel from .modeling_wuerstchen_diffnext import WuerstchenDiffNeXt from .modeling_wuerstchen_prior import WuerstchenPrior @@ -40,7 +40,7 @@ """ -class WuerstchenCombinedPipeline(DiffusionPipeline): +class WuerstchenCombinedPipeline(DeprecatedPipelineMixin, DiffusionPipeline): """ Combined Pipeline for text-to-image generation using Wuerstchen @@ -68,6 +68,7 @@ class WuerstchenCombinedPipeline(DiffusionPipeline): The scheduler to be used for prior pipeline. """ + _last_supported_version = "0.33.1" _load_connected_pipes = True def __init__( diff --git a/tests/pipelines/test_pipelines_common.py b/tests/pipelines/test_pipelines_common.py index af3a832d31a6..f2d4a5b98b11 100644 --- a/tests/pipelines/test_pipelines_common.py +++ b/tests/pipelines/test_pipelines_common.py @@ -1115,6 +1115,14 @@ def setUp(self): gc.collect() backend_empty_cache(torch_device) + # Skip tests for pipelines that inherit from DeprecatedPipelineMixin + from diffusers.pipelines.pipeline_utils import DeprecatedPipelineMixin + + if hasattr(self, "pipeline_class") and issubclass(self.pipeline_class, DeprecatedPipelineMixin): + import pytest + + pytest.skip(reason=f"Deprecated Pipeline: {self.pipeline_class.__name__}") + def tearDown(self): # clean up the VRAM after each test in case of CUDA runtime errors super().tearDown()