Skip to content

Commit 5b0dab1

Browse files
authored
Introduce DeprecatedPipelineMixin to simplify pipeline deprecation process (#11596)
* update * update * update * update * update * update * update
1 parent 7c6e9ef commit 5b0dab1

File tree

34 files changed

+170
-55
lines changed

34 files changed

+170
-55
lines changed

src/diffusers/pipelines/amused/pipeline_amused.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
from ...models import UVit2DModel, VQModel
2222
from ...schedulers import AmusedScheduler
2323
from ...utils import is_torch_xla_available, replace_example_docstring
24-
from ..pipeline_utils import DiffusionPipeline, ImagePipelineOutput
24+
from ..pipeline_utils import DeprecatedPipelineMixin, DiffusionPipeline, ImagePipelineOutput
2525

2626

2727
if is_torch_xla_available():
@@ -47,7 +47,8 @@
4747
"""
4848

4949

50-
class AmusedPipeline(DiffusionPipeline):
50+
class AmusedPipeline(DeprecatedPipelineMixin, DiffusionPipeline):
51+
_last_supported_version = "0.33.1"
5152
image_processor: VaeImageProcessor
5253
vqvae: VQModel
5354
tokenizer: CLIPTokenizer

src/diffusers/pipelines/amused/pipeline_amused_img2img.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
from ...models import UVit2DModel, VQModel
2222
from ...schedulers import AmusedScheduler
2323
from ...utils import is_torch_xla_available, replace_example_docstring
24-
from ..pipeline_utils import DiffusionPipeline, ImagePipelineOutput
24+
from ..pipeline_utils import DeprecatedPipelineMixin, DiffusionPipeline, ImagePipelineOutput
2525

2626

2727
if is_torch_xla_available():
@@ -57,7 +57,8 @@
5757
"""
5858

5959

60-
class AmusedImg2ImgPipeline(DiffusionPipeline):
60+
class AmusedImg2ImgPipeline(DeprecatedPipelineMixin, DiffusionPipeline):
61+
_last_supported_version = "0.33.1"
6162
image_processor: VaeImageProcessor
6263
vqvae: VQModel
6364
tokenizer: CLIPTokenizer

src/diffusers/pipelines/amused/pipeline_amused_inpaint.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
from ...models import UVit2DModel, VQModel
2323
from ...schedulers import AmusedScheduler
2424
from ...utils import is_torch_xla_available, replace_example_docstring
25-
from ..pipeline_utils import DiffusionPipeline, ImagePipelineOutput
25+
from ..pipeline_utils import DeprecatedPipelineMixin, DiffusionPipeline, ImagePipelineOutput
2626

2727

2828
if is_torch_xla_available():
@@ -65,7 +65,8 @@
6565
"""
6666

6767

68-
class AmusedInpaintPipeline(DiffusionPipeline):
68+
class AmusedInpaintPipeline(DeprecatedPipelineMixin, DiffusionPipeline):
69+
_last_supported_version = "0.33.1"
6970
image_processor: VaeImageProcessor
7071
vqvae: VQModel
7172
tokenizer: CLIPTokenizer

src/diffusers/pipelines/audioldm/pipeline_audioldm.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
from ...schedulers import KarrasDiffusionSchedulers
2525
from ...utils import is_torch_xla_available, logging, replace_example_docstring
2626
from ...utils.torch_utils import randn_tensor
27-
from ..pipeline_utils import AudioPipelineOutput, DiffusionPipeline, StableDiffusionMixin
27+
from ..pipeline_utils import AudioPipelineOutput, DeprecatedPipelineMixin, DiffusionPipeline, StableDiffusionMixin
2828

2929

3030
if is_torch_xla_available():
@@ -57,7 +57,7 @@
5757
"""
5858

5959

60-
class AudioLDMPipeline(DiffusionPipeline, StableDiffusionMixin):
60+
class AudioLDMPipeline(DeprecatedPipelineMixin, DiffusionPipeline, StableDiffusionMixin):
6161
r"""
6262
Pipeline for text-to-audio generation using AudioLDM.
6363
@@ -81,6 +81,7 @@ class AudioLDMPipeline(DiffusionPipeline, StableDiffusionMixin):
8181
Vocoder of class `SpeechT5HifiGan`.
8282
"""
8383

84+
_last_supported_version = "0.33.1"
8485
model_cpu_offload_seq = "text_encoder->unet->vae"
8586

8687
def __init__(

src/diffusers/pipelines/blip_diffusion/pipeline_blip_diffusion.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
replace_example_docstring,
2626
)
2727
from ...utils.torch_utils import randn_tensor
28-
from ..pipeline_utils import DiffusionPipeline, ImagePipelineOutput
28+
from ..pipeline_utils import DeprecatedPipelineMixin, DiffusionPipeline, ImagePipelineOutput
2929
from .blip_image_processing import BlipImageProcessor
3030
from .modeling_blip2 import Blip2QFormerModel
3131
from .modeling_ctx_clip import ContextCLIPTextModel
@@ -81,7 +81,7 @@
8181
"""
8282

8383

84-
class BlipDiffusionPipeline(DiffusionPipeline):
84+
class BlipDiffusionPipeline(DeprecatedPipelineMixin, DiffusionPipeline):
8585
"""
8686
Pipeline for Zero-Shot Subject Driven Generation using Blip Diffusion.
8787
@@ -107,6 +107,7 @@ class BlipDiffusionPipeline(DiffusionPipeline):
107107
Position of the context token in the text encoder.
108108
"""
109109

110+
_last_supported_version = "0.33.1"
110111
model_cpu_offload_seq = "qformer->text_encoder->unet->vae"
111112

112113
def __init__(

src/diffusers/pipelines/controlnet_xs/pipeline_controlnet_xs.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
unscale_lora_layers,
3838
)
3939
from ...utils.torch_utils import is_compiled_module, is_torch_version, randn_tensor
40-
from ..pipeline_utils import DiffusionPipeline, StableDiffusionMixin
40+
from ..pipeline_utils import DeprecatedPipelineMixin, DiffusionPipeline, StableDiffusionMixin
4141
from ..stable_diffusion.pipeline_output import StableDiffusionPipelineOutput
4242
from ..stable_diffusion.safety_checker import StableDiffusionSafetyChecker
4343

@@ -98,6 +98,7 @@
9898

9999

100100
class StableDiffusionControlNetXSPipeline(
101+
DeprecatedPipelineMixin,
101102
DiffusionPipeline,
102103
StableDiffusionMixin,
103104
TextualInversionLoaderMixin,
@@ -138,6 +139,7 @@ class StableDiffusionControlNetXSPipeline(
138139
A `CLIPImageProcessor` to extract features from generated images; used as inputs to the `safety_checker`.
139140
"""
140141

142+
_last_supported_version = "0.33.1"
141143
model_cpu_offload_seq = "text_encoder->unet->vae"
142144
_optional_components = ["safety_checker", "feature_extractor"]
143145
_exclude_from_cpu_offload = ["safety_checker"]

src/diffusers/pipelines/controlnet_xs/pipeline_controlnet_xs_sd_xl.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
unscale_lora_layers,
4747
)
4848
from ...utils.torch_utils import is_compiled_module, is_torch_version, randn_tensor
49-
from ..pipeline_utils import DiffusionPipeline
49+
from ..pipeline_utils import DeprecatedPipelineMixin, DiffusionPipeline
5050
from ..stable_diffusion_xl.pipeline_output import StableDiffusionXLPipelineOutput
5151

5252

@@ -114,6 +114,7 @@
114114

115115

116116
class StableDiffusionXLControlNetXSPipeline(
117+
DeprecatedPipelineMixin,
117118
DiffusionPipeline,
118119
TextualInversionLoaderMixin,
119120
StableDiffusionXLLoraLoaderMixin,
@@ -158,6 +159,7 @@ class StableDiffusionXLControlNetXSPipeline(
158159
watermarker is used.
159160
"""
160161

162+
_last_supported_version = "0.33.1"
161163
model_cpu_offload_seq = "text_encoder->text_encoder_2->unet->vae"
162164
_optional_components = [
163165
"tokenizer",

src/diffusers/pipelines/dance_diffusion/pipeline_dance_diffusion.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
from ...schedulers import SchedulerMixin
2222
from ...utils import is_torch_xla_available, logging
2323
from ...utils.torch_utils import randn_tensor
24-
from ..pipeline_utils import AudioPipelineOutput, DiffusionPipeline
24+
from ..pipeline_utils import AudioPipelineOutput, DeprecatedPipelineMixin, DiffusionPipeline
2525

2626

2727
if is_torch_xla_available():
@@ -34,7 +34,7 @@
3434
logger = logging.get_logger(__name__) # pylint: disable=invalid-name
3535

3636

37-
class DanceDiffusionPipeline(DiffusionPipeline):
37+
class DanceDiffusionPipeline(DeprecatedPipelineMixin, DiffusionPipeline):
3838
r"""
3939
Pipeline for audio generation.
4040
@@ -49,6 +49,7 @@ class DanceDiffusionPipeline(DiffusionPipeline):
4949
[`IPNDMScheduler`].
5050
"""
5151

52+
_last_supported_version = "0.33.1"
5253
model_cpu_offload_seq = "unet"
5354

5455
def __init__(self, unet: UNet1DModel, scheduler: SchedulerMixin):

src/diffusers/pipelines/i2vgen_xl/pipeline_i2vgen_xl.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
)
3434
from ...utils.torch_utils import randn_tensor
3535
from ...video_processor import VideoProcessor
36-
from ..pipeline_utils import DiffusionPipeline, StableDiffusionMixin
36+
from ..pipeline_utils import DeprecatedPipelineMixin, DiffusionPipeline, StableDiffusionMixin
3737

3838

3939
if is_torch_xla_available():
@@ -97,9 +97,11 @@ class I2VGenXLPipelineOutput(BaseOutput):
9797

9898

9999
class I2VGenXLPipeline(
100+
DeprecatedPipelineMixin,
100101
DiffusionPipeline,
101102
StableDiffusionMixin,
102103
):
104+
_last_supported_version = "0.33.1"
103105
r"""
104106
Pipeline for image-to-video generation as proposed in [I2VGenXL](https://i2vgen-xl.github.io/).
105107

src/diffusers/pipelines/musicldm/pipeline_musicldm.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
replace_example_docstring,
3737
)
3838
from ...utils.torch_utils import randn_tensor
39-
from ..pipeline_utils import AudioPipelineOutput, DiffusionPipeline, StableDiffusionMixin
39+
from ..pipeline_utils import AudioPipelineOutput, DeprecatedPipelineMixin, DiffusionPipeline, StableDiffusionMixin
4040

4141

4242
if is_librosa_available():
@@ -76,7 +76,8 @@
7676
"""
7777

7878

79-
class MusicLDMPipeline(DiffusionPipeline, StableDiffusionMixin):
79+
class MusicLDMPipeline(DeprecatedPipelineMixin, DiffusionPipeline, StableDiffusionMixin):
80+
_last_supported_version = "0.33.1"
8081
r"""
8182
Pipeline for text-to-audio generation using MusicLDM.
8283

src/diffusers/pipelines/paint_by_example/pipeline_paint_by_example.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
from ...schedulers import DDIMScheduler, LMSDiscreteScheduler, PNDMScheduler
2626
from ...utils import deprecate, is_torch_xla_available, logging
2727
from ...utils.torch_utils import randn_tensor
28-
from ..pipeline_utils import DiffusionPipeline, StableDiffusionMixin
28+
from ..pipeline_utils import DeprecatedPipelineMixin, DiffusionPipeline, StableDiffusionMixin
2929
from ..stable_diffusion import StableDiffusionPipelineOutput
3030
from ..stable_diffusion.safety_checker import StableDiffusionSafetyChecker
3131
from .image_encoder import PaintByExampleImageEncoder
@@ -155,7 +155,8 @@ def prepare_mask_and_masked_image(image, mask):
155155
return mask, masked_image
156156

157157

158-
class PaintByExamplePipeline(DiffusionPipeline, StableDiffusionMixin):
158+
class PaintByExamplePipeline(DeprecatedPipelineMixin, DiffusionPipeline, StableDiffusionMixin):
159+
_last_supported_version = "0.33.1"
159160
r"""
160161
<Tip warning={true}>
161162

src/diffusers/pipelines/pia/pipeline_pia.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
from ...utils.torch_utils import randn_tensor
4747
from ...video_processor import VideoProcessor
4848
from ..free_init_utils import FreeInitMixin
49-
from ..pipeline_utils import DiffusionPipeline, StableDiffusionMixin
49+
from ..pipeline_utils import DeprecatedPipelineMixin, DiffusionPipeline, StableDiffusionMixin
5050

5151

5252
if is_torch_xla_available():
@@ -132,6 +132,7 @@ class PIAPipelineOutput(BaseOutput):
132132

133133

134134
class PIAPipeline(
135+
DeprecatedPipelineMixin,
135136
DiffusionPipeline,
136137
StableDiffusionMixin,
137138
TextualInversionLoaderMixin,
@@ -140,6 +141,7 @@ class PIAPipeline(
140141
FromSingleFileMixin,
141142
FreeInitMixin,
142143
):
144+
_last_supported_version = "0.33.1"
143145
r"""
144146
Pipeline for text-to-video generation.
145147

src/diffusers/pipelines/pipeline_utils.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,43 @@ class AudioPipelineOutput(BaseOutput):
139139
audios: np.ndarray
140140

141141

142+
class DeprecatedPipelineMixin:
143+
"""
144+
A mixin that can be used to mark a pipeline as deprecated.
145+
146+
Pipelines inheriting from this mixin will raise a warning when instantiated, indicating that they are deprecated
147+
and won't receive updates past the specified version. Tests will be skipped for pipelines that inherit from this
148+
mixin.
149+
150+
Example usage:
151+
```python
152+
class MyDeprecatedPipeline(DeprecatedPipelineMixin, DiffusionPipeline):
153+
_last_supported_version = "0.20.0"
154+
155+
def __init__(self, *args, **kwargs):
156+
super().__init__(*args, **kwargs)
157+
```
158+
"""
159+
160+
# Override this in the inheriting class to specify the last version that will support this pipeline
161+
_last_supported_version = None
162+
163+
def __init__(self, *args, **kwargs):
164+
# Get the class name for the warning message
165+
class_name = self.__class__.__name__
166+
167+
# Get the last supported version or use the current version if not specified
168+
version_info = getattr(self.__class__, "_last_supported_version", __version__)
169+
170+
# Raise a warning that this pipeline is deprecated
171+
logger.warning(
172+
f"The {class_name} has been deprecated and will not receive bug fixes or feature updates after Diffusers version {version_info}. "
173+
)
174+
175+
# Call the parent class's __init__ method
176+
super().__init__(*args, **kwargs)
177+
178+
142179
class DiffusionPipeline(ConfigMixin, PushToHubMixin):
143180
r"""
144181
Base class for all pipelines.

src/diffusers/pipelines/semantic_stable_diffusion/pipeline_semantic_stable_diffusion.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
from ...schedulers import KarrasDiffusionSchedulers
1212
from ...utils import deprecate, is_torch_xla_available, logging
1313
from ...utils.torch_utils import randn_tensor
14-
from ..pipeline_utils import DiffusionPipeline, StableDiffusionMixin
14+
from ..pipeline_utils import DeprecatedPipelineMixin, DiffusionPipeline, StableDiffusionMixin
1515
from .pipeline_output import SemanticStableDiffusionPipelineOutput
1616

1717

@@ -25,7 +25,8 @@
2525
logger = logging.get_logger(__name__) # pylint: disable=invalid-name
2626

2727

28-
class SemanticStableDiffusionPipeline(DiffusionPipeline, StableDiffusionMixin):
28+
class SemanticStableDiffusionPipeline(DeprecatedPipelineMixin, DiffusionPipeline, StableDiffusionMixin):
29+
_last_supported_version = "0.33.1"
2930
r"""
3031
Pipeline for text-to-image generation using Stable Diffusion with latent editing.
3132

src/diffusers/pipelines/stable_diffusion_attend_and_excite/pipeline_stable_diffusion_attend_and_excite.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
unscale_lora_layers,
3838
)
3939
from ...utils.torch_utils import randn_tensor
40-
from ..pipeline_utils import DiffusionPipeline, StableDiffusionMixin
40+
from ..pipeline_utils import DeprecatedPipelineMixin, DiffusionPipeline, StableDiffusionMixin
4141
from ..stable_diffusion import StableDiffusionPipelineOutput
4242
from ..stable_diffusion.safety_checker import StableDiffusionSafetyChecker
4343

@@ -179,7 +179,9 @@ def __call__(self, attn: Attention, hidden_states, encoder_hidden_states=None, a
179179
return hidden_states
180180

181181

182-
class StableDiffusionAttendAndExcitePipeline(DiffusionPipeline, StableDiffusionMixin, TextualInversionLoaderMixin):
182+
class StableDiffusionAttendAndExcitePipeline(
183+
DeprecatedPipelineMixin, DiffusionPipeline, StableDiffusionMixin, TextualInversionLoaderMixin
184+
):
183185
r"""
184186
Pipeline for text-to-image generation using Stable Diffusion and Attend-and-Excite.
185187
@@ -209,6 +211,8 @@ class StableDiffusionAttendAndExcitePipeline(DiffusionPipeline, StableDiffusionM
209211
A `CLIPImageProcessor` to extract features from generated images; used as inputs to the `safety_checker`.
210212
"""
211213

214+
_last_supported_version = "0.33.1"
215+
212216
model_cpu_offload_seq = "text_encoder->unet->vae"
213217
_optional_components = ["safety_checker", "feature_extractor"]
214218
_exclude_from_cpu_offload = ["safety_checker"]

src/diffusers/pipelines/stable_diffusion_diffedit/pipeline_stable_diffusion_diffedit.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
unscale_lora_layers,
4141
)
4242
from ...utils.torch_utils import randn_tensor
43-
from ..pipeline_utils import DiffusionPipeline, StableDiffusionMixin
43+
from ..pipeline_utils import DeprecatedPipelineMixin, DiffusionPipeline, StableDiffusionMixin
4444
from ..stable_diffusion import StableDiffusionPipelineOutput
4545
from ..stable_diffusion.safety_checker import StableDiffusionSafetyChecker
4646

@@ -242,7 +242,11 @@ def preprocess_mask(mask, batch_size: int = 1):
242242

243243

244244
class StableDiffusionDiffEditPipeline(
245-
DiffusionPipeline, StableDiffusionMixin, TextualInversionLoaderMixin, StableDiffusionLoraLoaderMixin
245+
DeprecatedPipelineMixin,
246+
DiffusionPipeline,
247+
StableDiffusionMixin,
248+
TextualInversionLoaderMixin,
249+
StableDiffusionLoraLoaderMixin,
246250
):
247251
r"""
248252
<Tip warning={true}>
@@ -282,6 +286,8 @@ class StableDiffusionDiffEditPipeline(
282286
A `CLIPImageProcessor` to extract features from generated images; used as inputs to the `safety_checker`.
283287
"""
284288

289+
_last_supported_version = "0.33.1"
290+
285291
model_cpu_offload_seq = "text_encoder->unet->vae"
286292
_optional_components = ["safety_checker", "feature_extractor", "inverse_scheduler"]
287293
_exclude_from_cpu_offload = ["safety_checker"]

0 commit comments

Comments
 (0)