Unverified Commit 5b0dab12 authored by Dhruv Nair's avatar Dhruv Nair Committed by GitHub
Browse files

Introduce DeprecatedPipelineMixin to simplify pipeline deprecation process (#11596)

* update

* update

* update

* update

* update

* update

* update
parent 7c6e9ef4
...@@ -37,7 +37,7 @@ from ...utils import ( ...@@ -37,7 +37,7 @@ from ...utils import (
unscale_lora_layers, unscale_lora_layers,
) )
from ...utils.torch_utils import randn_tensor 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 from ..stable_diffusion.safety_checker import StableDiffusionSafetyChecker
...@@ -178,6 +178,7 @@ class LDM3DPipelineOutput(BaseOutput): ...@@ -178,6 +178,7 @@ class LDM3DPipelineOutput(BaseOutput):
class StableDiffusionLDM3DPipeline( class StableDiffusionLDM3DPipeline(
DeprecatedPipelineMixin,
DiffusionPipeline, DiffusionPipeline,
StableDiffusionMixin, StableDiffusionMixin,
TextualInversionLoaderMixin, TextualInversionLoaderMixin,
...@@ -185,6 +186,8 @@ class StableDiffusionLDM3DPipeline( ...@@ -185,6 +186,8 @@ class StableDiffusionLDM3DPipeline(
StableDiffusionLoraLoaderMixin, StableDiffusionLoraLoaderMixin,
FromSingleFileMixin, FromSingleFileMixin,
): ):
_last_supported_version = "0.33.1"
r""" r"""
Pipeline for text-to-image and 3D generation using LDM3D. Pipeline for text-to-image and 3D generation using LDM3D.
......
...@@ -33,7 +33,7 @@ from ...utils import ( ...@@ -33,7 +33,7 @@ from ...utils import (
unscale_lora_layers, unscale_lora_layers,
) )
from ...utils.torch_utils import randn_tensor 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 import StableDiffusionPipelineOutput
from ..stable_diffusion.safety_checker import StableDiffusionSafetyChecker from ..stable_diffusion.safety_checker import StableDiffusionSafetyChecker
...@@ -156,12 +156,15 @@ def retrieve_timesteps( ...@@ -156,12 +156,15 @@ def retrieve_timesteps(
class StableDiffusionPanoramaPipeline( class StableDiffusionPanoramaPipeline(
DeprecatedPipelineMixin,
DiffusionPipeline, DiffusionPipeline,
StableDiffusionMixin, StableDiffusionMixin,
TextualInversionLoaderMixin, TextualInversionLoaderMixin,
StableDiffusionLoraLoaderMixin, StableDiffusionLoraLoaderMixin,
IPAdapterMixin, IPAdapterMixin,
): ):
_last_supported_version = "0.33.1"
r""" r"""
Pipeline for text-to-image generation using MultiDiffusion. Pipeline for text-to-image generation using MultiDiffusion.
......
...@@ -14,7 +14,7 @@ from ...models import AutoencoderKL, ImageProjection, UNet2DConditionModel ...@@ -14,7 +14,7 @@ from ...models import AutoencoderKL, ImageProjection, UNet2DConditionModel
from ...schedulers import KarrasDiffusionSchedulers from ...schedulers import KarrasDiffusionSchedulers
from ...utils import deprecate, is_torch_xla_available, logging from ...utils import deprecate, is_torch_xla_available, logging
from ...utils.torch_utils import randn_tensor from ...utils.torch_utils import randn_tensor
from ..pipeline_utils import DiffusionPipeline, StableDiffusionMixin from ..pipeline_utils import DeprecatedPipelineMixin, DiffusionPipeline, StableDiffusionMixin
from . import StableDiffusionSafePipelineOutput from . import StableDiffusionSafePipelineOutput
from .safety_checker import SafeStableDiffusionSafetyChecker from .safety_checker import SafeStableDiffusionSafetyChecker
...@@ -29,7 +29,9 @@ else: ...@@ -29,7 +29,9 @@ else:
logger = logging.get_logger(__name__) # pylint: disable=invalid-name 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""" r"""
Pipeline based on the [`StableDiffusionPipeline`] for text-to-image generation using Safe Latent Diffusion. Pipeline based on the [`StableDiffusionPipeline`] for text-to-image generation using Safe Latent Diffusion.
......
...@@ -34,7 +34,7 @@ from ...utils import ( ...@@ -34,7 +34,7 @@ from ...utils import (
unscale_lora_layers, unscale_lora_layers,
) )
from ...utils.torch_utils import randn_tensor 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 import StableDiffusionPipelineOutput
from ..stable_diffusion.safety_checker import StableDiffusionSafetyChecker from ..stable_diffusion.safety_checker import StableDiffusionSafetyChecker
...@@ -107,7 +107,11 @@ class CrossAttnStoreProcessor: ...@@ -107,7 +107,11 @@ class CrossAttnStoreProcessor:
# Modified to get self-attention guidance scale in this paper (https://huggingface.co/papers/2210.00939) as an input # 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""" r"""
Pipeline for text-to-image generation using Stable Diffusion. Pipeline for text-to-image generation using Stable Diffusion.
......
...@@ -33,7 +33,7 @@ from ...utils import ( ...@@ -33,7 +33,7 @@ from ...utils import (
) )
from ...utils.torch_utils import randn_tensor from ...utils.torch_utils import randn_tensor
from ...video_processor import VideoProcessor from ...video_processor import VideoProcessor
from ..pipeline_utils import DiffusionPipeline, StableDiffusionMixin from ..pipeline_utils import DeprecatedPipelineMixin, DiffusionPipeline, StableDiffusionMixin
from . import TextToVideoSDPipelineOutput from . import TextToVideoSDPipelineOutput
...@@ -68,8 +68,13 @@ EXAMPLE_DOC_STRING = """ ...@@ -68,8 +68,13 @@ EXAMPLE_DOC_STRING = """
class TextToVideoSDPipeline( class TextToVideoSDPipeline(
DiffusionPipeline, StableDiffusionMixin, TextualInversionLoaderMixin, StableDiffusionLoraLoaderMixin DeprecatedPipelineMixin,
DiffusionPipeline,
StableDiffusionMixin,
TextualInversionLoaderMixin,
StableDiffusionLoraLoaderMixin,
): ):
_last_supported_version = "0.33.1"
r""" r"""
Pipeline for text-to-video generation. Pipeline for text-to-video generation.
......
...@@ -34,7 +34,7 @@ from ...utils import ( ...@@ -34,7 +34,7 @@ from ...utils import (
) )
from ...utils.torch_utils import randn_tensor from ...utils.torch_utils import randn_tensor
from ...video_processor import VideoProcessor from ...video_processor import VideoProcessor
from ..pipeline_utils import DiffusionPipeline, StableDiffusionMixin from ..pipeline_utils import DeprecatedPipelineMixin, DiffusionPipeline, StableDiffusionMixin
from . import TextToVideoSDPipelineOutput from . import TextToVideoSDPipelineOutput
...@@ -103,8 +103,13 @@ def retrieve_latents( ...@@ -103,8 +103,13 @@ def retrieve_latents(
class VideoToVideoSDPipeline( class VideoToVideoSDPipeline(
DiffusionPipeline, StableDiffusionMixin, TextualInversionLoaderMixin, StableDiffusionLoraLoaderMixin DeprecatedPipelineMixin,
DiffusionPipeline,
StableDiffusionMixin,
TextualInversionLoaderMixin,
StableDiffusionLoraLoaderMixin,
): ):
_last_supported_version = "0.33.1"
r""" r"""
Pipeline for text-guided video-to-video generation. Pipeline for text-guided video-to-video generation.
......
...@@ -24,7 +24,7 @@ from ...utils import ( ...@@ -24,7 +24,7 @@ from ...utils import (
unscale_lora_layers, unscale_lora_layers,
) )
from ...utils.torch_utils import randn_tensor 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 from ..stable_diffusion import StableDiffusionSafetyChecker
...@@ -296,12 +296,14 @@ def create_motion_field_and_warp_latents(motion_field_strength_x, motion_field_s ...@@ -296,12 +296,14 @@ def create_motion_field_and_warp_latents(motion_field_strength_x, motion_field_s
class TextToVideoZeroPipeline( class TextToVideoZeroPipeline(
DeprecatedPipelineMixin,
DiffusionPipeline, DiffusionPipeline,
StableDiffusionMixin, StableDiffusionMixin,
TextualInversionLoaderMixin, TextualInversionLoaderMixin,
StableDiffusionLoraLoaderMixin, StableDiffusionLoraLoaderMixin,
FromSingleFileMixin, FromSingleFileMixin,
): ):
_last_supported_version = "0.33.1"
r""" r"""
Pipeline for zero-shot text-to-video generation using Stable Diffusion. Pipeline for zero-shot text-to-video generation using Stable Diffusion.
......
...@@ -35,7 +35,7 @@ from ...utils import ( ...@@ -35,7 +35,7 @@ from ...utils import (
unscale_lora_layers, unscale_lora_layers,
) )
from ...utils.torch_utils import randn_tensor 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(): if is_invisible_watermark_available():
...@@ -346,11 +346,13 @@ def rescale_noise_cfg(noise_cfg, noise_pred_text, guidance_rescale=0.0): ...@@ -346,11 +346,13 @@ def rescale_noise_cfg(noise_cfg, noise_pred_text, guidance_rescale=0.0):
class TextToVideoZeroSDXLPipeline( class TextToVideoZeroSDXLPipeline(
DeprecatedPipelineMixin,
DiffusionPipeline, DiffusionPipeline,
StableDiffusionMixin, StableDiffusionMixin,
StableDiffusionXLLoraLoaderMixin, StableDiffusionXLLoraLoaderMixin,
TextualInversionLoaderMixin, TextualInversionLoaderMixin,
): ):
_last_supported_version = "0.33.1"
r""" r"""
Pipeline for zero-shot text-to-video generation using Stable Diffusion XL. Pipeline for zero-shot text-to-video generation using Stable Diffusion XL.
......
...@@ -24,7 +24,7 @@ from ...models import PriorTransformer, UNet2DConditionModel, UNet2DModel ...@@ -24,7 +24,7 @@ from ...models import PriorTransformer, UNet2DConditionModel, UNet2DModel
from ...schedulers import UnCLIPScheduler from ...schedulers import UnCLIPScheduler
from ...utils import is_torch_xla_available, logging from ...utils import is_torch_xla_available, logging
from ...utils.torch_utils import randn_tensor 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 from .text_proj import UnCLIPTextProjModel
...@@ -38,7 +38,7 @@ else: ...@@ -38,7 +38,7 @@ else:
logger = logging.get_logger(__name__) # pylint: disable=invalid-name logger = logging.get_logger(__name__) # pylint: disable=invalid-name
class UnCLIPPipeline(DiffusionPipeline): class UnCLIPPipeline(DeprecatedPipelineMixin, DiffusionPipeline):
""" """
Pipeline for text-to-image generation using unCLIP. Pipeline for text-to-image generation using unCLIP.
...@@ -69,6 +69,7 @@ class UnCLIPPipeline(DiffusionPipeline): ...@@ -69,6 +69,7 @@ class UnCLIPPipeline(DiffusionPipeline):
""" """
_last_supported_version = "0.33.1"
_exclude_from_cpu_offload = ["prior"] _exclude_from_cpu_offload = ["prior"]
prior: PriorTransformer prior: PriorTransformer
......
...@@ -29,7 +29,7 @@ from ...models import UNet2DConditionModel, UNet2DModel ...@@ -29,7 +29,7 @@ from ...models import UNet2DConditionModel, UNet2DModel
from ...schedulers import UnCLIPScheduler from ...schedulers import UnCLIPScheduler
from ...utils import is_torch_xla_available, logging from ...utils import is_torch_xla_available, logging
from ...utils.torch_utils import randn_tensor 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 from .text_proj import UnCLIPTextProjModel
...@@ -43,7 +43,7 @@ else: ...@@ -43,7 +43,7 @@ else:
logger = logging.get_logger(__name__) # pylint: disable=invalid-name 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. Pipeline to generate image variations from an input image using UnCLIP.
...@@ -73,6 +73,7 @@ class UnCLIPImageVariationPipeline(DiffusionPipeline): ...@@ -73,6 +73,7 @@ class UnCLIPImageVariationPipeline(DiffusionPipeline):
Scheduler used in the super resolution denoising process (a modified [`DDPMScheduler`]). Scheduler used in the super resolution denoising process (a modified [`DDPMScheduler`]).
""" """
_last_supported_version = "0.33.1"
decoder: UNet2DConditionModel decoder: UNet2DConditionModel
text_proj: UnCLIPTextProjModel text_proj: UnCLIPTextProjModel
text_encoder: CLIPTextModelWithProjection text_encoder: CLIPTextModelWithProjection
......
...@@ -28,7 +28,7 @@ from ...utils import ( ...@@ -28,7 +28,7 @@ from ...utils import (
) )
from ...utils.outputs import BaseOutput from ...utils.outputs import BaseOutput
from ...utils.torch_utils import randn_tensor 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_text_decoder import UniDiffuserTextDecoder
from .modeling_uvit import UniDiffuserModel from .modeling_uvit import UniDiffuserModel
...@@ -62,7 +62,7 @@ class ImageTextPipelineOutput(BaseOutput): ...@@ -62,7 +62,7 @@ class ImageTextPipelineOutput(BaseOutput):
text: Optional[Union[List[str], List[List[str]]]] text: Optional[Union[List[str], List[List[str]]]]
class UniDiffuserPipeline(DiffusionPipeline): class UniDiffuserPipeline(DeprecatedPipelineMixin, DiffusionPipeline):
r""" r"""
Pipeline for a bimodal image-text model which supports unconditional text and image generation, text-conditioned 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. image generation, image-conditioned text generation, and joint image-text generation.
...@@ -96,6 +96,7 @@ class UniDiffuserPipeline(DiffusionPipeline): ...@@ -96,6 +96,7 @@ class UniDiffuserPipeline(DiffusionPipeline):
original UniDiffuser paper uses the [`DPMSolverMultistepScheduler`] scheduler. 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 # TODO: support for moving submodules for components with enable_model_cpu_offload
model_cpu_offload_seq = "text_encoder->image_encoder->unet->vae->text_decoder" model_cpu_offload_seq = "text_encoder->image_encoder->unet->vae->text_decoder"
......
...@@ -21,7 +21,7 @@ from transformers import CLIPTextModel, CLIPTokenizer ...@@ -21,7 +21,7 @@ from transformers import CLIPTextModel, CLIPTokenizer
from ...schedulers import DDPMWuerstchenScheduler from ...schedulers import DDPMWuerstchenScheduler
from ...utils import deprecate, is_torch_xla_available, logging, replace_example_docstring from ...utils import deprecate, is_torch_xla_available, logging, replace_example_docstring
from ...utils.torch_utils import randn_tensor 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_paella_vq_model import PaellaVQModel
from .modeling_wuerstchen_diffnext import WuerstchenDiffNeXt from .modeling_wuerstchen_diffnext import WuerstchenDiffNeXt
...@@ -56,7 +56,7 @@ EXAMPLE_DOC_STRING = """ ...@@ -56,7 +56,7 @@ EXAMPLE_DOC_STRING = """
""" """
class WuerstchenDecoderPipeline(DiffusionPipeline): class WuerstchenDecoderPipeline(DeprecatedPipelineMixin, DiffusionPipeline):
""" """
Pipeline for generating images from the Wuerstchen model. Pipeline for generating images from the Wuerstchen model.
......
...@@ -18,7 +18,7 @@ from transformers import CLIPTextModel, CLIPTokenizer ...@@ -18,7 +18,7 @@ from transformers import CLIPTextModel, CLIPTokenizer
from ...schedulers import DDPMWuerstchenScheduler from ...schedulers import DDPMWuerstchenScheduler
from ...utils import deprecate, replace_example_docstring 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_paella_vq_model import PaellaVQModel
from .modeling_wuerstchen_diffnext import WuerstchenDiffNeXt from .modeling_wuerstchen_diffnext import WuerstchenDiffNeXt
from .modeling_wuerstchen_prior import WuerstchenPrior from .modeling_wuerstchen_prior import WuerstchenPrior
...@@ -40,7 +40,7 @@ TEXT2IMAGE_EXAMPLE_DOC_STRING = """ ...@@ -40,7 +40,7 @@ TEXT2IMAGE_EXAMPLE_DOC_STRING = """
""" """
class WuerstchenCombinedPipeline(DiffusionPipeline): class WuerstchenCombinedPipeline(DeprecatedPipelineMixin, DiffusionPipeline):
""" """
Combined Pipeline for text-to-image generation using Wuerstchen Combined Pipeline for text-to-image generation using Wuerstchen
...@@ -68,6 +68,7 @@ class WuerstchenCombinedPipeline(DiffusionPipeline): ...@@ -68,6 +68,7 @@ class WuerstchenCombinedPipeline(DiffusionPipeline):
The scheduler to be used for prior pipeline. The scheduler to be used for prior pipeline.
""" """
_last_supported_version = "0.33.1"
_load_connected_pipes = True _load_connected_pipes = True
def __init__( def __init__(
......
...@@ -1115,6 +1115,14 @@ class PipelineTesterMixin: ...@@ -1115,6 +1115,14 @@ class PipelineTesterMixin:
gc.collect() gc.collect()
backend_empty_cache(torch_device) 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): def tearDown(self):
# clean up the VRAM after each test in case of CUDA runtime errors # clean up the VRAM after each test in case of CUDA runtime errors
super().tearDown() super().tearDown()
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment