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

Lazy Import for Diffusers (#4829)



* initial commit

* move modules to import struct

* add dummy objects and _LazyModule

* add lazy import to schedulers

* clean up unused imports

* lazy import on models module

* lazy import for schedulers module

* add lazy import to pipelines module

* lazy import altdiffusion

* lazy import audio diffusion

* lazy import audioldm

* lazy import consistency model

* lazy import controlnet

* lazy import dance diffusion ddim ddpm

* lazy import deepfloyd

* lazy import kandinksy

* lazy imports

* lazy import semantic diffusion

* lazy imports

* lazy import stable diffusion

* move sd output to its own module

* clean up

* lazy import t2iadapter

* lazy import unclip

* lazy import versatile and vq diffsuion

* lazy import vq diffusion

* helper to fetch objects from modules

* lazy import sdxl

* lazy import txt2vid

* lazy import stochastic karras

* fix model imports

* fix bug

* lazy import

* clean up

* clean up

* fixes for tests

* fixes for tests

* clean up

* remove import of torch_utils from utils module

* clean up

* clean up

* fix mistake import statement

* dedicated modules for exporting and loading

* remove testing utils from utils module

* fixes from  merge conflicts

* Update src/diffusers/pipelines/kandinsky2_2/__init__.py

* fix docs

* fix alt diffusion copied from

* fix check dummies

* fix more docs

* remove accelerate import from utils module

* add type checking

* make style

* fix check dummies

* remove torch import from xformers check

* clean up error message

* fixes after upstream merges

* dummy objects fix

* fix tests

* remove unused module import

---------
Co-authored-by: default avatarPatrick von Platen <patrick.v.platen@gmail.com>
parent 88735249
...@@ -19,7 +19,8 @@ from diffusers import ( ...@@ -19,7 +19,8 @@ from diffusers import (
UNet2DModel, UNet2DModel,
) )
from diffusers.pipelines.unclip import UnCLIPTextProjModel from diffusers.pipelines.unclip import UnCLIPTextProjModel
from diffusers.utils import is_accelerate_available, logging, randn_tensor from diffusers.utils import is_accelerate_available, logging
from diffusers.utils.torch_utils import randn_tensor
logger = logging.get_logger(__name__) # pylint: disable=invalid-name logger = logging.get_logger(__name__) # pylint: disable=invalid-name
......
...@@ -15,7 +15,8 @@ from diffusers import ( ...@@ -15,7 +15,8 @@ from diffusers import (
UNet2DModel, UNet2DModel,
) )
from diffusers.pipelines.unclip import UnCLIPTextProjModel from diffusers.pipelines.unclip import UnCLIPTextProjModel
from diffusers.utils import is_accelerate_available, logging, randn_tensor from diffusers.utils import is_accelerate_available, logging
from diffusers.utils.torch_utils import randn_tensor
logger = logging.get_logger(__name__) # pylint: disable=invalid-name logger = logging.get_logger(__name__) # pylint: disable=invalid-name
......
This diff is collapsed.
...@@ -18,8 +18,8 @@ import tqdm ...@@ -18,8 +18,8 @@ import tqdm
from ...models.unet_1d import UNet1DModel from ...models.unet_1d import UNet1DModel
from ...pipelines import DiffusionPipeline from ...pipelines import DiffusionPipeline
from ...utils import randn_tensor
from ...utils.dummy_pt_objects import DDPMScheduler from ...utils.dummy_pt_objects import DDPMScheduler
from ...utils.torch_utils import randn_tensor
class ValueGuidedRLPipeline(DiffusionPipeline): class ValueGuidedRLPipeline(DiffusionPipeline):
......
...@@ -12,27 +12,35 @@ ...@@ -12,27 +12,35 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
from ..utils import is_flax_available, is_torch_available from ..utils import _LazyModule, is_flax_available, is_torch_available
_import_structure = {}
if is_torch_available(): if is_torch_available():
from .adapter import MultiAdapter, T2IAdapter _import_structure["adapter"] = ["MultiAdapter", "T2IAdapter"]
from .autoencoder_asym_kl import AsymmetricAutoencoderKL _import_structure["autoencoder_asym_kl"] = ["AsymmetricAutoencoderKL"]
from .autoencoder_kl import AutoencoderKL _import_structure["autoencoder_kl"] = ["AutoencoderKL"]
from .autoencoder_tiny import AutoencoderTiny _import_structure["autoencoder_tiny"] = ["AutoencoderTiny"]
from .controlnet import ControlNetModel _import_structure["controlnet"] = ["ControlNetModel"]
from .dual_transformer_2d import DualTransformer2DModel _import_structure["dual_transformer_2d"] = ["DualTransformer2DModel"]
from .modeling_utils import ModelMixin _import_structure["modeling_utils"] = ["ModelMixin"]
from .prior_transformer import PriorTransformer _import_structure["prior_transformer"] = ["PriorTransformer"]
from .t5_film_transformer import T5FilmDecoder _import_structure["t5_film_transformer"] = ["T5FilmDecoder"]
from .transformer_2d import Transformer2DModel _import_structure["transformer_2d"] = ["Transformer2DModel"]
from .unet_1d import UNet1DModel _import_structure["transformer_temporal"] = ["TransformerTemporalModel"]
from .unet_2d import UNet2DModel _import_structure["unet_1d"] = ["UNet1DModel"]
from .unet_2d_condition import UNet2DConditionModel _import_structure["unet_2d"] = ["UNet2DModel"]
from .unet_3d_condition import UNet3DConditionModel _import_structure["unet_2d_condition"] = ["UNet2DConditionModel"]
from .vq_model import VQModel _import_structure["unet_3d_condition"] = ["UNet3DConditionModel"]
_import_structure["vq_model"] = ["VQModel"]
if is_flax_available(): if is_flax_available():
from .controlnet_flax import FlaxControlNetModel _import_structure["controlnet_flax"] = ["FlaxControlNetModel"]
from .unet_2d_condition_flax import FlaxUNet2DConditionModel _import_structure["unet_2d_condition_flax"] = ["FlaxUNet2DConditionModel"]
from .vae_flax import FlaxAutoencoderKL _import_structure["vae_flax"] = ["FlaxAutoencoderKL"]
import sys
sys.modules[__name__] = _LazyModule(__name__, globals()["__file__"], _import_structure, module_spec=__spec__)
...@@ -17,7 +17,7 @@ import torch ...@@ -17,7 +17,7 @@ import torch
import torch.nn.functional as F import torch.nn.functional as F
from torch import nn from torch import nn
from ..utils import maybe_allow_in_graph from ..utils.torch_utils import maybe_allow_in_graph
from .activations import get_activation from .activations import get_activation
from .attention_processor import Attention from .attention_processor import Attention
from .embeddings import CombinedTimestepLabelEmbeddings from .embeddings import CombinedTimestepLabelEmbeddings
......
...@@ -18,8 +18,9 @@ import torch ...@@ -18,8 +18,9 @@ import torch
import torch.nn.functional as F import torch.nn.functional as F
from torch import nn from torch import nn
from ..utils import deprecate, logging, maybe_allow_in_graph from ..utils import deprecate, logging
from ..utils.import_utils import is_xformers_available from ..utils.import_utils import is_xformers_available
from ..utils.torch_utils import maybe_allow_in_graph
from .lora import LoRACompatibleLinear, LoRALinearLayer from .lora import LoRACompatibleLinear, LoRALinearLayer
......
...@@ -17,7 +17,7 @@ import torch ...@@ -17,7 +17,7 @@ import torch
import torch.nn as nn import torch.nn as nn
from ..configuration_utils import ConfigMixin, register_to_config from ..configuration_utils import ConfigMixin, register_to_config
from ..utils import apply_forward_hook from ..utils.accelerate_utils import apply_forward_hook
from .autoencoder_kl import AutoencoderKLOutput from .autoencoder_kl import AutoencoderKLOutput
from .modeling_utils import ModelMixin from .modeling_utils import ModelMixin
from .vae import DecoderOutput, DiagonalGaussianDistribution, Encoder, MaskConditionDecoder from .vae import DecoderOutput, DiagonalGaussianDistribution, Encoder, MaskConditionDecoder
......
...@@ -19,7 +19,8 @@ import torch.nn as nn ...@@ -19,7 +19,8 @@ import torch.nn as nn
from ..configuration_utils import ConfigMixin, register_to_config from ..configuration_utils import ConfigMixin, register_to_config
from ..loaders import FromOriginalVAEMixin from ..loaders import FromOriginalVAEMixin
from ..utils import BaseOutput, apply_forward_hook from ..utils import BaseOutput
from ..utils.accelerate_utils import apply_forward_hook
from .attention_processor import ( from .attention_processor import (
ADDED_KV_ATTENTION_PROCESSORS, ADDED_KV_ATTENTION_PROCESSORS,
CROSS_ATTENTION_PROCESSORS, CROSS_ATTENTION_PROCESSORS,
......
...@@ -19,7 +19,8 @@ from typing import Tuple, Union ...@@ -19,7 +19,8 @@ from typing import Tuple, Union
import torch import torch
from ..configuration_utils import ConfigMixin, register_to_config from ..configuration_utils import ConfigMixin, register_to_config
from ..utils import BaseOutput, apply_forward_hook from ..utils import BaseOutput
from ..utils.accelerate_utils import apply_forward_hook
from .modeling_utils import ModelMixin from .modeling_utils import ModelMixin
from .vae import DecoderOutput, DecoderTiny, EncoderTiny from .vae import DecoderOutput, DecoderTiny, EncoderTiny
......
...@@ -18,7 +18,8 @@ import numpy as np ...@@ -18,7 +18,8 @@ import numpy as np
import torch import torch
import torch.nn as nn import torch.nn as nn
from ..utils import BaseOutput, is_torch_version, randn_tensor from ..utils import BaseOutput, is_torch_version
from ..utils.torch_utils import randn_tensor
from .activations import get_activation from .activations import get_activation
from .attention_processor import SpatialNorm from .attention_processor import SpatialNorm
from .unet_2d_blocks import AutoencoderTinyBlock, UNetMidBlock2D, get_down_block, get_up_block from .unet_2d_blocks import AutoencoderTinyBlock, UNetMidBlock2D, get_down_block, get_up_block
......
...@@ -18,7 +18,8 @@ import torch ...@@ -18,7 +18,8 @@ import torch
import torch.nn as nn import torch.nn as nn
from ..configuration_utils import ConfigMixin, register_to_config from ..configuration_utils import ConfigMixin, register_to_config
from ..utils import BaseOutput, apply_forward_hook from ..utils import BaseOutput
from ..utils.accelerate_utils import apply_forward_hook
from .modeling_utils import ModelMixin from .modeling_utils import ModelMixin
from .vae import Decoder, DecoderOutput, Encoder, VectorQuantizer from .vae import Decoder, DecoderOutput, Encoder, VectorQuantizer
......
from ..utils import ( from ..utils import (
OptionalDependencyNotAvailable, OptionalDependencyNotAvailable,
_LazyModule,
get_objects_from_module,
is_flax_available, is_flax_available,
is_k_diffusion_available, is_k_diffusion_available,
is_librosa_available, is_librosa_available,
...@@ -10,187 +12,256 @@ from ..utils import ( ...@@ -10,187 +12,256 @@ from ..utils import (
) )
# These modules contain pipelines from multiple libraries/frameworks
_import_structure = {"stable_diffusion": [], "latent_diffusion": [], "controlnet": []}
_dummy_objects = {}
try: try:
if not is_torch_available(): if not is_torch_available():
raise OptionalDependencyNotAvailable() raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable: except OptionalDependencyNotAvailable:
from ..utils.dummy_pt_objects import * # noqa F403 from ..utils import dummy_pt_objects # noqa F403
_dummy_objects.update(get_objects_from_module(dummy_pt_objects))
else: else:
from .auto_pipeline import AutoPipelineForImage2Image, AutoPipelineForInpainting, AutoPipelineForText2Image _import_structure["auto_pipeline"] = [
from .consistency_models import ConsistencyModelPipeline "AutoPipelineForImage2Image",
from .dance_diffusion import DanceDiffusionPipeline "AutoPipelineForInpainting",
from .ddim import DDIMPipeline "AutoPipelineForText2Image",
from .ddpm import DDPMPipeline ]
from .dit import DiTPipeline _import_structure["consistency_models"] = ["ConsistencyModelPipeline"]
from .latent_diffusion import LDMSuperResolutionPipeline _import_structure["dance_diffusion"] = ["DanceDiffusionPipeline"]
from .latent_diffusion_uncond import LDMPipeline _import_structure["ddim"] = ["DDIMPipeline"]
from .pipeline_utils import AudioPipelineOutput, DiffusionPipeline, ImagePipelineOutput _import_structure["ddpm"] = ["DDPMPipeline"]
from .pndm import PNDMPipeline _import_structure["dit"] = ["DiTPipeline"]
from .repaint import RePaintPipeline _import_structure["latent_diffusion"].extend(["LDMSuperResolutionPipeline"])
from .score_sde_ve import ScoreSdeVePipeline _import_structure["latent_diffusion_uncond"] = ["LDMPipeline"]
from .stochastic_karras_ve import KarrasVePipeline _import_structure["pipeline_utils"] = ["AudioPipelineOutput", "DiffusionPipeline", "ImagePipelineOutput"]
_import_structure["pndm"] = ["PNDMPipeline"]
_import_structure["repaint"] = ["RePaintPipeline"]
_import_structure["score_sde_ve"] = ["ScoreSdeVePipeline"]
_import_structure["stochastic_karras_ve"] = ["KarrasVePipeline"]
try: try:
if not (is_torch_available() and is_librosa_available()): if not (is_torch_available() and is_librosa_available()):
raise OptionalDependencyNotAvailable() raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable: except OptionalDependencyNotAvailable:
from ..utils.dummy_torch_and_librosa_objects import * # noqa F403 from ..utils import dummy_torch_and_librosa_objects # noqa F403
_dummy_objects.update(get_objects_from_module(dummy_torch_and_librosa_objects))
else: else:
from .audio_diffusion import AudioDiffusionPipeline, Mel _import_structure["audio_diffusion"] = ["AudioDiffusionPipeline", "Mel"]
try: try:
if not (is_torch_available() and is_transformers_available()): if not (is_torch_available() and is_transformers_available()):
raise OptionalDependencyNotAvailable() raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable: except OptionalDependencyNotAvailable:
from ..utils.dummy_torch_and_transformers_objects import * # noqa F403 from ..utils import dummy_torch_and_transformers_objects # noqa F403
_dummy_objects.update(get_objects_from_module(dummy_torch_and_transformers_objects))
else: else:
from .alt_diffusion import AltDiffusionImg2ImgPipeline, AltDiffusionPipeline _import_structure["alt_diffusion"] = ["AltDiffusionImg2ImgPipeline", "AltDiffusionPipeline"]
from .audioldm import AudioLDMPipeline _import_structure["audioldm"] = ["AudioLDMPipeline"]
from .audioldm2 import AudioLDM2Pipeline, AudioLDM2ProjectionModel, AudioLDM2UNet2DConditionModel _import_structure["audioldm2"] = ["AudioLDM2Pipeline", "AudioLDM2ProjectionModel", "AudioLDM2UNet2DConditionModel"]
from .controlnet import ( _import_structure["controlnet"].extend(
StableDiffusionControlNetImg2ImgPipeline, [
StableDiffusionControlNetInpaintPipeline, "StableDiffusionControlNetImg2ImgPipeline",
StableDiffusionControlNetPipeline, "StableDiffusionControlNetInpaintPipeline",
StableDiffusionXLControlNetImg2ImgPipeline, "StableDiffusionControlNetPipeline",
StableDiffusionXLControlNetInpaintPipeline, "StableDiffusionXLControlNetImg2ImgPipeline",
StableDiffusionXLControlNetPipeline, "StableDiffusionXLControlNetInpaintPipeline",
) "StableDiffusionXLControlNetPipeline",
from .deepfloyd_if import ( ]
IFImg2ImgPipeline,
IFImg2ImgSuperResolutionPipeline,
IFInpaintingPipeline,
IFInpaintingSuperResolutionPipeline,
IFPipeline,
IFSuperResolutionPipeline,
) )
from .kandinsky import ( _import_structure["deepfloyd_if"] = [
KandinskyCombinedPipeline, "IFImg2ImgPipeline",
KandinskyImg2ImgCombinedPipeline, "IFImg2ImgSuperResolutionPipeline",
KandinskyImg2ImgPipeline, "IFInpaintingPipeline",
KandinskyInpaintCombinedPipeline, "IFInpaintingSuperResolutionPipeline",
KandinskyInpaintPipeline, "IFPipeline",
KandinskyPipeline, "IFSuperResolutionPipeline",
KandinskyPriorPipeline, ]
_import_structure["kandinsky"] = [
"KandinskyCombinedPipeline",
"KandinskyImg2ImgCombinedPipeline",
"KandinskyImg2ImgPipeline",
"KandinskyInpaintCombinedPipeline",
"KandinskyInpaintPipeline",
"KandinskyPipeline",
"KandinskyPriorPipeline",
]
_import_structure["kandinsky2_2"] = [
"KandinskyV22CombinedPipeline",
"KandinskyV22ControlnetImg2ImgPipeline",
"KandinskyV22ControlnetPipeline",
"KandinskyV22Img2ImgCombinedPipeline",
"KandinskyV22Img2ImgPipeline",
"KandinskyV22InpaintCombinedPipeline",
"KandinskyV22InpaintPipeline",
"KandinskyV22Pipeline",
"KandinskyV22PriorEmb2EmbPipeline",
"KandinskyV22PriorPipeline",
]
_import_structure["latent_diffusion"].extend(["LDMTextToImagePipeline"])
_import_structure["musicldm"] = ["MusicLDMPipeline"]
_import_structure["paint_by_example"] = ["PaintByExamplePipeline"]
_import_structure["semantic_stable_diffusion"] = ["SemanticStableDiffusionPipeline"]
_import_structure["shap_e"] = ["ShapEImg2ImgPipeline", "ShapEPipeline"]
_import_structure["stable_diffusion"].extend(
[
"CycleDiffusionPipeline",
"StableDiffusionAttendAndExcitePipeline",
"StableDiffusionDepth2ImgPipeline",
"StableDiffusionDiffEditPipeline",
"StableDiffusionGLIGENPipeline",
"StableDiffusionImageVariationPipeline",
"StableDiffusionImg2ImgPipeline",
"StableDiffusionInpaintPipeline",
"StableDiffusionInpaintPipelineLegacy",
"StableDiffusionInstructPix2PixPipeline",
"StableDiffusionLatentUpscalePipeline",
"StableDiffusionLDM3DPipeline",
"StableDiffusionModelEditingPipeline",
"StableDiffusionPanoramaPipeline",
"StableDiffusionParadigmsPipeline",
"StableDiffusionPipeline",
"StableDiffusionPix2PixZeroPipeline",
"StableDiffusionSAGPipeline",
"StableDiffusionUpscalePipeline",
"StableUnCLIPImg2ImgPipeline",
"StableUnCLIPPipeline",
"StableDiffusionGLIGENTextImagePipeline",
"StableDiffusionGLIGENPipeline",
]
) )
from .kandinsky2_2 import ( _import_structure["stable_diffusion_safe"] = ["StableDiffusionPipelineSafe"]
KandinskyV22CombinedPipeline, _import_structure["stable_diffusion_xl"] = [
KandinskyV22ControlnetImg2ImgPipeline, "StableDiffusionXLImg2ImgPipeline",
KandinskyV22ControlnetPipeline, "StableDiffusionXLInpaintPipeline",
KandinskyV22Img2ImgCombinedPipeline, "StableDiffusionXLInstructPix2PixPipeline",
KandinskyV22Img2ImgPipeline, "StableDiffusionXLPipeline",
KandinskyV22InpaintCombinedPipeline, ]
KandinskyV22InpaintPipeline, _import_structure["t2i_adapter"] = ["StableDiffusionAdapterPipeline", "StableDiffusionXLAdapterPipeline"]
KandinskyV22Pipeline, _import_structure["text_to_video_synthesis"] = [
KandinskyV22PriorEmb2EmbPipeline, "TextToVideoSDPipeline",
KandinskyV22PriorPipeline, "TextToVideoZeroPipeline",
) "VideoToVideoSDPipeline",
from .latent_diffusion import LDMTextToImagePipeline ]
from .musicldm import MusicLDMPipeline _import_structure["unclip"] = ["UnCLIPImageVariationPipeline", "UnCLIPPipeline"]
from .paint_by_example import PaintByExamplePipeline _import_structure["unidiffuser"] = [
from .semantic_stable_diffusion import SemanticStableDiffusionPipeline "ImageTextPipelineOutput",
from .shap_e import ShapEImg2ImgPipeline, ShapEPipeline "UniDiffuserModel",
from .stable_diffusion import ( "UniDiffuserPipeline",
CycleDiffusionPipeline, "UniDiffuserTextDecoder",
StableDiffusionAttendAndExcitePipeline, ]
StableDiffusionDepth2ImgPipeline, _import_structure["versatile_diffusion"] = [
StableDiffusionDiffEditPipeline, "VersatileDiffusionDualGuidedPipeline",
StableDiffusionGLIGENPipeline, "VersatileDiffusionImageVariationPipeline",
StableDiffusionGLIGENTextImagePipeline, "VersatileDiffusionPipeline",
StableDiffusionImageVariationPipeline, "VersatileDiffusionTextToImagePipeline",
StableDiffusionImg2ImgPipeline, ]
StableDiffusionInpaintPipeline, _import_structure["vq_diffusion"] = ["VQDiffusionPipeline"]
StableDiffusionInpaintPipelineLegacy, _import_structure["wuerstchen"] = [
StableDiffusionInstructPix2PixPipeline, "WuerstchenCombinedPipeline",
StableDiffusionLatentUpscalePipeline, "WuerstchenDecoderPipeline",
StableDiffusionLDM3DPipeline, "WuerstchenPriorPipeline",
StableDiffusionModelEditingPipeline, ]
StableDiffusionPanoramaPipeline,
StableDiffusionParadigmsPipeline,
StableDiffusionPipeline,
StableDiffusionPix2PixZeroPipeline,
StableDiffusionSAGPipeline,
StableDiffusionUpscalePipeline,
StableUnCLIPImg2ImgPipeline,
StableUnCLIPPipeline,
)
from .stable_diffusion.clip_image_project_model import CLIPImageProjection
from .stable_diffusion_safe import StableDiffusionPipelineSafe
from .stable_diffusion_xl import (
StableDiffusionXLImg2ImgPipeline,
StableDiffusionXLInpaintPipeline,
StableDiffusionXLInstructPix2PixPipeline,
StableDiffusionXLPipeline,
)
from .t2i_adapter import StableDiffusionAdapterPipeline, StableDiffusionXLAdapterPipeline
from .text_to_video_synthesis import TextToVideoSDPipeline, TextToVideoZeroPipeline, VideoToVideoSDPipeline
from .unclip import UnCLIPImageVariationPipeline, UnCLIPPipeline
from .unidiffuser import ImageTextPipelineOutput, UniDiffuserModel, UniDiffuserPipeline, UniDiffuserTextDecoder
from .versatile_diffusion import (
VersatileDiffusionDualGuidedPipeline,
VersatileDiffusionImageVariationPipeline,
VersatileDiffusionPipeline,
VersatileDiffusionTextToImagePipeline,
)
from .vq_diffusion import VQDiffusionPipeline
from .wuerstchen import WuerstchenCombinedPipeline, WuerstchenDecoderPipeline, WuerstchenPriorPipeline
try: try:
if not is_onnx_available(): if not is_onnx_available():
raise OptionalDependencyNotAvailable() raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable: except OptionalDependencyNotAvailable:
from ..utils.dummy_onnx_objects import * # noqa F403 from ..utils import dummy_onnx_objects # noqa F403
_dummy_objects.update(get_objects_from_module(dummy_onnx_objects))
else: else:
from .onnx_utils import OnnxRuntimeModel _import_structure["onnx_utils"] = ["OnnxRuntimeModel"]
try: try:
if not (is_torch_available() and is_transformers_available() and is_onnx_available()): if not (is_torch_available() and is_transformers_available() and is_onnx_available()):
raise OptionalDependencyNotAvailable() raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable: except OptionalDependencyNotAvailable:
from ..utils.dummy_torch_and_transformers_and_onnx_objects import * # noqa F403 from ..utils import dummy_torch_and_transformers_and_onnx_objects # noqa F403
_dummy_objects.update(get_objects_from_module(dummy_torch_and_transformers_and_onnx_objects))
else: else:
from .stable_diffusion import ( _import_structure["stable_diffusion"].extend(
OnnxStableDiffusionImg2ImgPipeline, [
OnnxStableDiffusionInpaintPipeline, "OnnxStableDiffusionImg2ImgPipeline",
OnnxStableDiffusionInpaintPipelineLegacy, "OnnxStableDiffusionInpaintPipeline",
OnnxStableDiffusionPipeline, "OnnxStableDiffusionInpaintPipelineLegacy",
OnnxStableDiffusionUpscalePipeline, "OnnxStableDiffusionPipeline",
StableDiffusionOnnxPipeline, "OnnxStableDiffusionUpscalePipeline",
"StableDiffusionOnnxPipeline",
]
) )
try: try:
if not (is_torch_available() and is_transformers_available() and is_k_diffusion_available()): if not (is_torch_available() and is_transformers_available() and is_k_diffusion_available()):
raise OptionalDependencyNotAvailable() raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable: except OptionalDependencyNotAvailable:
from ..utils.dummy_torch_and_transformers_and_k_diffusion_objects import * # noqa F403 from ..utils import dummy_torch_and_transformers_and_k_diffusion_objects # noqa F403
_dummy_objects.update(get_objects_from_module(dummy_torch_and_transformers_and_k_diffusion_objects))
else: else:
from .stable_diffusion import StableDiffusionKDiffusionPipeline _import_structure["stable_diffusion"].extend(["StableDiffusionKDiffusionPipeline"])
try: try:
if not is_flax_available(): if not is_flax_available():
raise OptionalDependencyNotAvailable() raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable: except OptionalDependencyNotAvailable:
from ..utils.dummy_flax_objects import * # noqa F403 from ..utils import dummy_flax_objects # noqa F403
_dummy_objects.update(get_objects_from_module(dummy_flax_objects))
else: else:
from .pipeline_flax_utils import FlaxDiffusionPipeline _import_structure["pipeline_flax_utils"] = ["FlaxDiffusionPipeline"]
try: try:
if not (is_flax_available() and is_transformers_available()): if not (is_flax_available() and is_transformers_available()):
raise OptionalDependencyNotAvailable() raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable: except OptionalDependencyNotAvailable:
from ..utils.dummy_flax_and_transformers_objects import * # noqa F403 from ..utils import dummy_flax_and_transformers_objects # noqa F403
_dummy_objects.update(get_objects_from_module(dummy_flax_and_transformers_objects))
else: else:
from .controlnet import FlaxStableDiffusionControlNetPipeline _import_structure["controlnet"].extend(["FlaxStableDiffusionControlNetPipeline"])
from .stable_diffusion import ( _import_structure["stable_diffusion"].extend(
FlaxStableDiffusionImg2ImgPipeline, [
FlaxStableDiffusionInpaintPipeline, "FlaxStableDiffusionImg2ImgPipeline",
FlaxStableDiffusionPipeline, "FlaxStableDiffusionInpaintPipeline",
"FlaxStableDiffusionPipeline",
]
) )
try: try:
if not (is_transformers_available() and is_torch_available() and is_note_seq_available()): if not (is_transformers_available() and is_torch_available() and is_note_seq_available()):
raise OptionalDependencyNotAvailable() raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable: except OptionalDependencyNotAvailable:
from ..utils.dummy_transformers_and_torch_and_note_seq_objects import * # noqa F403 from ..utils import dummy_transformers_and_torch_and_note_seq_objects # noqa F403
_dummy_objects.update(get_objects_from_module(dummy_transformers_and_torch_and_note_seq_objects))
else: else:
from .spectrogram_diffusion import MidiProcessor, SpectrogramDiffusionPipeline _import_structure["spectrogram_diffusion"] = ["MidiProcessor", "SpectrogramDiffusionPipeline"]
import sys
sys.modules[__name__] = _LazyModule(
__name__,
globals()["__file__"],
_import_structure,
module_spec=__spec__,
)
for name, value in _dummy_objects.items():
setattr(sys.modules[__name__], name, value)
from dataclasses import dataclass from ...utils import (
from typing import List, Optional, Union OptionalDependencyNotAvailable,
_LazyModule,
get_objects_from_module,
is_torch_available,
is_transformers_available,
)
import numpy as np
import PIL
from PIL import Image
from ...utils import BaseOutput, OptionalDependencyNotAvailable, is_torch_available, is_transformers_available
@dataclass
# Copied from diffusers.pipelines.stable_diffusion.__init__.StableDiffusionPipelineOutput with Stable->Alt
class AltDiffusionPipelineOutput(BaseOutput):
"""
Output class for Alt Diffusion pipelines.
Args:
images (`List[PIL.Image.Image]` or `np.ndarray`)
List of denoised PIL images of length `batch_size` or NumPy array of shape `(batch_size, height, width,
num_channels)`.
nsfw_content_detected (`List[bool]`)
List indicating whether the corresponding generated image contains "not-safe-for-work" (nsfw) content or
`None` if safety checking could not be performed.
"""
images: Union[List[PIL.Image.Image], np.ndarray]
nsfw_content_detected: Optional[List[bool]]
_import_structure = {}
_dummy_objects = {}
try: try:
if not (is_transformers_available() and is_torch_available()): if not (is_transformers_available() and is_torch_available()):
raise OptionalDependencyNotAvailable() raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable: except OptionalDependencyNotAvailable:
from ...utils.dummy_torch_and_transformers_objects import ShapEPipeline from ...utils import dummy_torch_and_transformers_objects
_dummy_objects.update(get_objects_from_module(dummy_torch_and_transformers_objects))
else: else:
from .modeling_roberta_series import RobertaSeriesModelWithTransformation _import_structure["pipeline_output"] = ["AltDiffusionPipelineOutput"]
from .pipeline_alt_diffusion import AltDiffusionPipeline _import_structure["modeling_roberta_series"] = ["RobertaSeriesModelWithTransformation"]
from .pipeline_alt_diffusion_img2img import AltDiffusionImg2ImgPipeline _import_structure["pipeline_alt_diffusion"] = ["AltDiffusionPipeline"]
_import_structure["pipeline_alt_diffusion_img2img"] = ["AltDiffusionImg2ImgPipeline"]
import sys
sys.modules[__name__] = _LazyModule(
__name__,
globals()["__file__"],
_import_structure,
module_spec=__spec__,
)
for name, value in _dummy_objects.items():
setattr(sys.modules[__name__], name, value)
...@@ -27,7 +27,8 @@ from ...loaders import LoraLoaderMixin, TextualInversionLoaderMixin ...@@ -27,7 +27,8 @@ from ...loaders import LoraLoaderMixin, TextualInversionLoaderMixin
from ...models import AutoencoderKL, UNet2DConditionModel from ...models import AutoencoderKL, UNet2DConditionModel
from ...models.lora import adjust_lora_scale_text_encoder from ...models.lora import adjust_lora_scale_text_encoder
from ...schedulers import KarrasDiffusionSchedulers from ...schedulers import KarrasDiffusionSchedulers
from ...utils import deprecate, logging, randn_tensor, replace_example_docstring from ...utils import deprecate, logging, replace_example_docstring
from ...utils.torch_utils import randn_tensor
from ..pipeline_utils import DiffusionPipeline from ..pipeline_utils import DiffusionPipeline
from ..stable_diffusion.safety_checker import StableDiffusionSafetyChecker from ..stable_diffusion.safety_checker import StableDiffusionSafetyChecker
from . import AltDiffusionPipelineOutput, RobertaSeriesModelWithTransformation from . import AltDiffusionPipelineOutput, RobertaSeriesModelWithTransformation
......
...@@ -29,7 +29,8 @@ from ...loaders import FromSingleFileMixin, LoraLoaderMixin, TextualInversionLoa ...@@ -29,7 +29,8 @@ from ...loaders import FromSingleFileMixin, LoraLoaderMixin, TextualInversionLoa
from ...models import AutoencoderKL, UNet2DConditionModel from ...models import AutoencoderKL, UNet2DConditionModel
from ...models.lora import adjust_lora_scale_text_encoder from ...models.lora import adjust_lora_scale_text_encoder
from ...schedulers import KarrasDiffusionSchedulers from ...schedulers import KarrasDiffusionSchedulers
from ...utils import PIL_INTERPOLATION, deprecate, logging, randn_tensor, replace_example_docstring from ...utils import PIL_INTERPOLATION, deprecate, logging, replace_example_docstring
from ...utils.torch_utils import randn_tensor
from ..pipeline_utils import DiffusionPipeline from ..pipeline_utils import DiffusionPipeline
from ..stable_diffusion.safety_checker import StableDiffusionSafetyChecker from ..stable_diffusion.safety_checker import StableDiffusionSafetyChecker
from . import AltDiffusionPipelineOutput, RobertaSeriesModelWithTransformation from . import AltDiffusionPipelineOutput, RobertaSeriesModelWithTransformation
......
from dataclasses import dataclass
from typing import List, Optional, Union
import numpy as np
import PIL
from ...utils import (
BaseOutput,
)
@dataclass
# Copied from diffusers.pipelines.stable_diffusion.pipeline_output.StableDiffusionPipelineOutput with Stable->Alt
class AltDiffusionPipelineOutput(BaseOutput):
"""
Output class for Alt Diffusion pipelines.
Args:
images (`List[PIL.Image.Image]` or `np.ndarray`)
List of denoised PIL images of length `batch_size` or NumPy array of shape `(batch_size, height, width,
num_channels)`.
nsfw_content_detected (`List[bool]`)
List indicating whether the corresponding generated image contains "not-safe-for-work" (nsfw) content or
`None` if safety checking could not be performed.
"""
images: Union[List[PIL.Image.Image], np.ndarray]
nsfw_content_detected: Optional[List[bool]]
from .mel import Mel from ...utils import _LazyModule
from .pipeline_audio_diffusion import AudioDiffusionPipeline
_import_structure = {}
_dummy_objects = {}
_import_structure["mel"] = ["Mel"]
_import_structure["pipeline_audio_diffusion"] = ["AudioDiffusionPipeline"]
import sys
sys.modules[__name__] = _LazyModule(
__name__,
globals()["__file__"],
_import_structure,
module_spec=__spec__,
)
...@@ -22,7 +22,7 @@ from PIL import Image ...@@ -22,7 +22,7 @@ from PIL import Image
from ...models import AutoencoderKL, UNet2DConditionModel from ...models import AutoencoderKL, UNet2DConditionModel
from ...schedulers import DDIMScheduler, DDPMScheduler from ...schedulers import DDIMScheduler, DDPMScheduler
from ...utils import randn_tensor from ...utils.torch_utils import randn_tensor
from ..pipeline_utils import AudioPipelineOutput, BaseOutput, DiffusionPipeline, ImagePipelineOutput from ..pipeline_utils import AudioPipelineOutput, BaseOutput, DiffusionPipeline, ImagePipelineOutput
from .mel import Mel from .mel import Mel
......
from ...utils import ( from ...utils import (
OptionalDependencyNotAvailable, OptionalDependencyNotAvailable,
_LazyModule,
is_torch_available, is_torch_available,
is_transformers_available, is_transformers_available,
is_transformers_version, is_transformers_version,
) )
_import_structure = {}
_dummy_objects = {}
try: try:
if not (is_transformers_available() and is_torch_available() and is_transformers_version(">=", "4.27.0")): if not (is_transformers_available() and is_torch_available() and is_transformers_version(">=", "4.27.0")):
raise OptionalDependencyNotAvailable() raise OptionalDependencyNotAvailable()
...@@ -13,5 +18,21 @@ except OptionalDependencyNotAvailable: ...@@ -13,5 +18,21 @@ except OptionalDependencyNotAvailable:
from ...utils.dummy_torch_and_transformers_objects import ( from ...utils.dummy_torch_and_transformers_objects import (
AudioLDMPipeline, AudioLDMPipeline,
) )
_dummy_objects.update({"AudioLDMPipeline": AudioLDMPipeline})
else: else:
from .pipeline_audioldm import AudioLDMPipeline _import_structure["pipeline_audioldm"] = ["AudioLDMPipeline"]
import sys
sys.modules[__name__] = _LazyModule(
__name__,
globals()["__file__"],
_import_structure,
module_spec=__spec__,
)
for name, value in _dummy_objects.items():
setattr(sys.modules[__name__], name, value)
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