diffusers 0.32.1__py3-none-any.whl → 0.33.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- diffusers/__init__.py +186 -3
- diffusers/configuration_utils.py +40 -12
- diffusers/dependency_versions_table.py +9 -2
- diffusers/hooks/__init__.py +9 -0
- diffusers/hooks/faster_cache.py +653 -0
- diffusers/hooks/group_offloading.py +793 -0
- diffusers/hooks/hooks.py +236 -0
- diffusers/hooks/layerwise_casting.py +245 -0
- diffusers/hooks/pyramid_attention_broadcast.py +311 -0
- diffusers/loaders/__init__.py +6 -0
- diffusers/loaders/ip_adapter.py +38 -30
- diffusers/loaders/lora_base.py +198 -28
- diffusers/loaders/lora_conversion_utils.py +679 -44
- diffusers/loaders/lora_pipeline.py +1963 -801
- diffusers/loaders/peft.py +169 -84
- diffusers/loaders/single_file.py +17 -2
- diffusers/loaders/single_file_model.py +53 -5
- diffusers/loaders/single_file_utils.py +653 -75
- diffusers/loaders/textual_inversion.py +9 -9
- diffusers/loaders/transformer_flux.py +8 -9
- diffusers/loaders/transformer_sd3.py +120 -39
- diffusers/loaders/unet.py +22 -32
- diffusers/models/__init__.py +22 -0
- diffusers/models/activations.py +9 -9
- diffusers/models/attention.py +0 -1
- diffusers/models/attention_processor.py +163 -25
- diffusers/models/auto_model.py +169 -0
- diffusers/models/autoencoders/__init__.py +2 -0
- diffusers/models/autoencoders/autoencoder_asym_kl.py +2 -0
- diffusers/models/autoencoders/autoencoder_dc.py +106 -4
- diffusers/models/autoencoders/autoencoder_kl.py +0 -4
- diffusers/models/autoencoders/autoencoder_kl_allegro.py +5 -23
- diffusers/models/autoencoders/autoencoder_kl_cogvideox.py +17 -55
- diffusers/models/autoencoders/autoencoder_kl_hunyuan_video.py +17 -97
- diffusers/models/autoencoders/autoencoder_kl_ltx.py +326 -107
- diffusers/models/autoencoders/autoencoder_kl_magvit.py +1094 -0
- diffusers/models/autoencoders/autoencoder_kl_mochi.py +21 -56
- diffusers/models/autoencoders/autoencoder_kl_temporal_decoder.py +11 -42
- diffusers/models/autoencoders/autoencoder_kl_wan.py +855 -0
- diffusers/models/autoencoders/autoencoder_oobleck.py +1 -0
- diffusers/models/autoencoders/autoencoder_tiny.py +0 -4
- diffusers/models/autoencoders/consistency_decoder_vae.py +3 -1
- diffusers/models/autoencoders/vae.py +31 -141
- diffusers/models/autoencoders/vq_model.py +3 -0
- diffusers/models/cache_utils.py +108 -0
- diffusers/models/controlnets/__init__.py +1 -0
- diffusers/models/controlnets/controlnet.py +3 -8
- diffusers/models/controlnets/controlnet_flux.py +14 -42
- diffusers/models/controlnets/controlnet_sd3.py +58 -34
- diffusers/models/controlnets/controlnet_sparsectrl.py +4 -7
- diffusers/models/controlnets/controlnet_union.py +27 -18
- diffusers/models/controlnets/controlnet_xs.py +7 -46
- diffusers/models/controlnets/multicontrolnet_union.py +196 -0
- diffusers/models/embeddings.py +18 -7
- diffusers/models/model_loading_utils.py +122 -80
- diffusers/models/modeling_flax_pytorch_utils.py +1 -1
- diffusers/models/modeling_flax_utils.py +1 -1
- diffusers/models/modeling_pytorch_flax_utils.py +1 -1
- diffusers/models/modeling_utils.py +617 -272
- diffusers/models/normalization.py +67 -14
- diffusers/models/resnet.py +1 -1
- diffusers/models/transformers/__init__.py +6 -0
- diffusers/models/transformers/auraflow_transformer_2d.py +9 -35
- diffusers/models/transformers/cogvideox_transformer_3d.py +13 -24
- diffusers/models/transformers/consisid_transformer_3d.py +789 -0
- diffusers/models/transformers/dit_transformer_2d.py +5 -19
- diffusers/models/transformers/hunyuan_transformer_2d.py +4 -3
- diffusers/models/transformers/latte_transformer_3d.py +20 -15
- diffusers/models/transformers/lumina_nextdit2d.py +3 -1
- diffusers/models/transformers/pixart_transformer_2d.py +4 -19
- diffusers/models/transformers/prior_transformer.py +5 -1
- diffusers/models/transformers/sana_transformer.py +144 -40
- diffusers/models/transformers/stable_audio_transformer.py +5 -20
- diffusers/models/transformers/transformer_2d.py +7 -22
- diffusers/models/transformers/transformer_allegro.py +9 -17
- diffusers/models/transformers/transformer_cogview3plus.py +6 -17
- diffusers/models/transformers/transformer_cogview4.py +462 -0
- diffusers/models/transformers/transformer_easyanimate.py +527 -0
- diffusers/models/transformers/transformer_flux.py +68 -110
- diffusers/models/transformers/transformer_hunyuan_video.py +409 -49
- diffusers/models/transformers/transformer_ltx.py +53 -35
- diffusers/models/transformers/transformer_lumina2.py +548 -0
- diffusers/models/transformers/transformer_mochi.py +6 -17
- diffusers/models/transformers/transformer_omnigen.py +469 -0
- diffusers/models/transformers/transformer_sd3.py +56 -86
- diffusers/models/transformers/transformer_temporal.py +5 -11
- diffusers/models/transformers/transformer_wan.py +469 -0
- diffusers/models/unets/unet_1d.py +3 -1
- diffusers/models/unets/unet_2d.py +21 -20
- diffusers/models/unets/unet_2d_blocks.py +19 -243
- diffusers/models/unets/unet_2d_condition.py +4 -6
- diffusers/models/unets/unet_3d_blocks.py +14 -127
- diffusers/models/unets/unet_3d_condition.py +8 -12
- diffusers/models/unets/unet_i2vgen_xl.py +5 -13
- diffusers/models/unets/unet_kandinsky3.py +0 -4
- diffusers/models/unets/unet_motion_model.py +20 -114
- diffusers/models/unets/unet_spatio_temporal_condition.py +7 -8
- diffusers/models/unets/unet_stable_cascade.py +8 -35
- diffusers/models/unets/uvit_2d.py +1 -4
- diffusers/optimization.py +2 -2
- diffusers/pipelines/__init__.py +57 -8
- diffusers/pipelines/allegro/pipeline_allegro.py +22 -2
- diffusers/pipelines/amused/pipeline_amused.py +15 -2
- diffusers/pipelines/amused/pipeline_amused_img2img.py +15 -2
- diffusers/pipelines/amused/pipeline_amused_inpaint.py +15 -2
- diffusers/pipelines/animatediff/pipeline_animatediff.py +15 -2
- diffusers/pipelines/animatediff/pipeline_animatediff_controlnet.py +15 -3
- diffusers/pipelines/animatediff/pipeline_animatediff_sdxl.py +24 -4
- diffusers/pipelines/animatediff/pipeline_animatediff_sparsectrl.py +15 -2
- diffusers/pipelines/animatediff/pipeline_animatediff_video2video.py +16 -4
- diffusers/pipelines/animatediff/pipeline_animatediff_video2video_controlnet.py +16 -4
- diffusers/pipelines/audioldm/pipeline_audioldm.py +13 -2
- diffusers/pipelines/audioldm2/modeling_audioldm2.py +13 -68
- diffusers/pipelines/audioldm2/pipeline_audioldm2.py +39 -9
- diffusers/pipelines/aura_flow/pipeline_aura_flow.py +63 -7
- diffusers/pipelines/auto_pipeline.py +35 -14
- diffusers/pipelines/blip_diffusion/blip_image_processing.py +1 -1
- diffusers/pipelines/blip_diffusion/modeling_blip2.py +5 -8
- diffusers/pipelines/blip_diffusion/pipeline_blip_diffusion.py +12 -0
- diffusers/pipelines/cogvideo/pipeline_cogvideox.py +22 -6
- diffusers/pipelines/cogvideo/pipeline_cogvideox_fun_control.py +22 -6
- diffusers/pipelines/cogvideo/pipeline_cogvideox_image2video.py +22 -5
- diffusers/pipelines/cogvideo/pipeline_cogvideox_video2video.py +22 -6
- diffusers/pipelines/cogview3/pipeline_cogview3plus.py +12 -4
- diffusers/pipelines/cogview4/__init__.py +49 -0
- diffusers/pipelines/cogview4/pipeline_cogview4.py +684 -0
- diffusers/pipelines/cogview4/pipeline_cogview4_control.py +732 -0
- diffusers/pipelines/cogview4/pipeline_output.py +21 -0
- diffusers/pipelines/consisid/__init__.py +49 -0
- diffusers/pipelines/consisid/consisid_utils.py +357 -0
- diffusers/pipelines/consisid/pipeline_consisid.py +974 -0
- diffusers/pipelines/consisid/pipeline_output.py +20 -0
- diffusers/pipelines/consistency_models/pipeline_consistency_models.py +11 -0
- diffusers/pipelines/controlnet/pipeline_controlnet.py +6 -5
- diffusers/pipelines/controlnet/pipeline_controlnet_blip_diffusion.py +13 -0
- diffusers/pipelines/controlnet/pipeline_controlnet_img2img.py +17 -5
- diffusers/pipelines/controlnet/pipeline_controlnet_inpaint.py +31 -12
- diffusers/pipelines/controlnet/pipeline_controlnet_inpaint_sd_xl.py +26 -7
- diffusers/pipelines/controlnet/pipeline_controlnet_sd_xl.py +20 -3
- diffusers/pipelines/controlnet/pipeline_controlnet_sd_xl_img2img.py +22 -3
- diffusers/pipelines/controlnet/pipeline_controlnet_union_inpaint_sd_xl.py +26 -25
- diffusers/pipelines/controlnet/pipeline_controlnet_union_sd_xl.py +224 -109
- diffusers/pipelines/controlnet/pipeline_controlnet_union_sd_xl_img2img.py +25 -29
- diffusers/pipelines/controlnet/pipeline_flax_controlnet.py +7 -4
- diffusers/pipelines/controlnet_hunyuandit/pipeline_hunyuandit_controlnet.py +3 -5
- diffusers/pipelines/controlnet_sd3/pipeline_stable_diffusion_3_controlnet.py +121 -10
- diffusers/pipelines/controlnet_sd3/pipeline_stable_diffusion_3_controlnet_inpainting.py +122 -11
- diffusers/pipelines/controlnet_xs/pipeline_controlnet_xs.py +12 -1
- diffusers/pipelines/controlnet_xs/pipeline_controlnet_xs_sd_xl.py +20 -3
- diffusers/pipelines/dance_diffusion/pipeline_dance_diffusion.py +14 -2
- diffusers/pipelines/ddim/pipeline_ddim.py +14 -1
- diffusers/pipelines/ddpm/pipeline_ddpm.py +15 -1
- diffusers/pipelines/deepfloyd_if/pipeline_if.py +12 -0
- diffusers/pipelines/deepfloyd_if/pipeline_if_img2img.py +12 -0
- diffusers/pipelines/deepfloyd_if/pipeline_if_img2img_superresolution.py +14 -1
- diffusers/pipelines/deepfloyd_if/pipeline_if_inpainting.py +12 -0
- diffusers/pipelines/deepfloyd_if/pipeline_if_inpainting_superresolution.py +14 -1
- diffusers/pipelines/deepfloyd_if/pipeline_if_superresolution.py +14 -1
- diffusers/pipelines/deprecated/alt_diffusion/pipeline_alt_diffusion.py +11 -7
- diffusers/pipelines/deprecated/alt_diffusion/pipeline_alt_diffusion_img2img.py +11 -7
- diffusers/pipelines/deprecated/repaint/pipeline_repaint.py +1 -1
- diffusers/pipelines/deprecated/stable_diffusion_variants/pipeline_cycle_diffusion.py +10 -6
- diffusers/pipelines/deprecated/stable_diffusion_variants/pipeline_onnx_stable_diffusion_inpaint_legacy.py +2 -2
- diffusers/pipelines/deprecated/stable_diffusion_variants/pipeline_stable_diffusion_inpaint_legacy.py +11 -7
- diffusers/pipelines/deprecated/stable_diffusion_variants/pipeline_stable_diffusion_model_editing.py +1 -1
- diffusers/pipelines/deprecated/stable_diffusion_variants/pipeline_stable_diffusion_paradigms.py +1 -1
- diffusers/pipelines/deprecated/stable_diffusion_variants/pipeline_stable_diffusion_pix2pix_zero.py +1 -1
- diffusers/pipelines/deprecated/versatile_diffusion/modeling_text_unet.py +10 -105
- diffusers/pipelines/deprecated/versatile_diffusion/pipeline_versatile_diffusion.py +1 -1
- diffusers/pipelines/deprecated/versatile_diffusion/pipeline_versatile_diffusion_dual_guided.py +1 -1
- diffusers/pipelines/deprecated/versatile_diffusion/pipeline_versatile_diffusion_image_variation.py +1 -1
- diffusers/pipelines/deprecated/versatile_diffusion/pipeline_versatile_diffusion_text_to_image.py +1 -1
- diffusers/pipelines/dit/pipeline_dit.py +15 -2
- diffusers/pipelines/easyanimate/__init__.py +52 -0
- diffusers/pipelines/easyanimate/pipeline_easyanimate.py +770 -0
- diffusers/pipelines/easyanimate/pipeline_easyanimate_control.py +994 -0
- diffusers/pipelines/easyanimate/pipeline_easyanimate_inpaint.py +1234 -0
- diffusers/pipelines/easyanimate/pipeline_output.py +20 -0
- diffusers/pipelines/flux/pipeline_flux.py +53 -21
- diffusers/pipelines/flux/pipeline_flux_control.py +9 -12
- diffusers/pipelines/flux/pipeline_flux_control_img2img.py +6 -10
- diffusers/pipelines/flux/pipeline_flux_control_inpaint.py +8 -10
- diffusers/pipelines/flux/pipeline_flux_controlnet.py +185 -13
- diffusers/pipelines/flux/pipeline_flux_controlnet_image_to_image.py +8 -10
- diffusers/pipelines/flux/pipeline_flux_controlnet_inpainting.py +16 -16
- diffusers/pipelines/flux/pipeline_flux_fill.py +107 -39
- diffusers/pipelines/flux/pipeline_flux_img2img.py +193 -15
- diffusers/pipelines/flux/pipeline_flux_inpaint.py +199 -19
- diffusers/pipelines/free_noise_utils.py +3 -3
- diffusers/pipelines/hunyuan_video/__init__.py +4 -0
- diffusers/pipelines/hunyuan_video/pipeline_hunyuan_skyreels_image2video.py +804 -0
- diffusers/pipelines/hunyuan_video/pipeline_hunyuan_video.py +90 -23
- diffusers/pipelines/hunyuan_video/pipeline_hunyuan_video_image2video.py +924 -0
- diffusers/pipelines/hunyuandit/pipeline_hunyuandit.py +3 -5
- diffusers/pipelines/i2vgen_xl/pipeline_i2vgen_xl.py +13 -1
- diffusers/pipelines/kandinsky/pipeline_kandinsky.py +12 -0
- diffusers/pipelines/kandinsky/pipeline_kandinsky_combined.py +1 -1
- diffusers/pipelines/kandinsky/pipeline_kandinsky_img2img.py +12 -0
- diffusers/pipelines/kandinsky/pipeline_kandinsky_inpaint.py +13 -1
- diffusers/pipelines/kandinsky/pipeline_kandinsky_prior.py +12 -0
- diffusers/pipelines/kandinsky2_2/pipeline_kandinsky2_2.py +12 -1
- diffusers/pipelines/kandinsky2_2/pipeline_kandinsky2_2_controlnet.py +13 -0
- diffusers/pipelines/kandinsky2_2/pipeline_kandinsky2_2_controlnet_img2img.py +12 -0
- diffusers/pipelines/kandinsky2_2/pipeline_kandinsky2_2_img2img.py +12 -1
- diffusers/pipelines/kandinsky2_2/pipeline_kandinsky2_2_inpainting.py +12 -1
- diffusers/pipelines/kandinsky2_2/pipeline_kandinsky2_2_prior.py +12 -0
- diffusers/pipelines/kandinsky2_2/pipeline_kandinsky2_2_prior_emb2emb.py +12 -0
- diffusers/pipelines/kandinsky3/pipeline_kandinsky3.py +12 -0
- diffusers/pipelines/kandinsky3/pipeline_kandinsky3_img2img.py +12 -0
- diffusers/pipelines/kolors/pipeline_kolors.py +10 -8
- diffusers/pipelines/kolors/pipeline_kolors_img2img.py +6 -4
- diffusers/pipelines/kolors/text_encoder.py +7 -34
- diffusers/pipelines/latent_consistency_models/pipeline_latent_consistency_img2img.py +12 -1
- diffusers/pipelines/latent_consistency_models/pipeline_latent_consistency_text2img.py +13 -1
- diffusers/pipelines/latent_diffusion/pipeline_latent_diffusion.py +14 -13
- diffusers/pipelines/latent_diffusion/pipeline_latent_diffusion_superresolution.py +12 -1
- diffusers/pipelines/latte/pipeline_latte.py +36 -7
- diffusers/pipelines/ledits_pp/pipeline_leditspp_stable_diffusion.py +67 -13
- diffusers/pipelines/ledits_pp/pipeline_leditspp_stable_diffusion_xl.py +60 -15
- diffusers/pipelines/ltx/__init__.py +2 -0
- diffusers/pipelines/ltx/pipeline_ltx.py +25 -13
- diffusers/pipelines/ltx/pipeline_ltx_condition.py +1194 -0
- diffusers/pipelines/ltx/pipeline_ltx_image2video.py +31 -17
- diffusers/pipelines/lumina/__init__.py +2 -2
- diffusers/pipelines/lumina/pipeline_lumina.py +83 -20
- diffusers/pipelines/lumina2/__init__.py +48 -0
- diffusers/pipelines/lumina2/pipeline_lumina2.py +790 -0
- diffusers/pipelines/marigold/__init__.py +2 -0
- diffusers/pipelines/marigold/marigold_image_processing.py +127 -14
- diffusers/pipelines/marigold/pipeline_marigold_depth.py +31 -16
- diffusers/pipelines/marigold/pipeline_marigold_intrinsics.py +721 -0
- diffusers/pipelines/marigold/pipeline_marigold_normals.py +31 -16
- diffusers/pipelines/mochi/pipeline_mochi.py +14 -18
- diffusers/pipelines/musicldm/pipeline_musicldm.py +16 -1
- diffusers/pipelines/omnigen/__init__.py +50 -0
- diffusers/pipelines/omnigen/pipeline_omnigen.py +512 -0
- diffusers/pipelines/omnigen/processor_omnigen.py +327 -0
- diffusers/pipelines/onnx_utils.py +5 -3
- diffusers/pipelines/pag/pag_utils.py +1 -1
- diffusers/pipelines/pag/pipeline_pag_controlnet_sd.py +12 -1
- diffusers/pipelines/pag/pipeline_pag_controlnet_sd_inpaint.py +15 -4
- diffusers/pipelines/pag/pipeline_pag_controlnet_sd_xl.py +20 -3
- diffusers/pipelines/pag/pipeline_pag_controlnet_sd_xl_img2img.py +20 -3
- diffusers/pipelines/pag/pipeline_pag_hunyuandit.py +1 -3
- diffusers/pipelines/pag/pipeline_pag_kolors.py +6 -4
- diffusers/pipelines/pag/pipeline_pag_pixart_sigma.py +16 -3
- diffusers/pipelines/pag/pipeline_pag_sana.py +65 -8
- diffusers/pipelines/pag/pipeline_pag_sd.py +23 -7
- diffusers/pipelines/pag/pipeline_pag_sd_3.py +3 -5
- diffusers/pipelines/pag/pipeline_pag_sd_3_img2img.py +3 -5
- diffusers/pipelines/pag/pipeline_pag_sd_animatediff.py +13 -1
- diffusers/pipelines/pag/pipeline_pag_sd_img2img.py +23 -7
- diffusers/pipelines/pag/pipeline_pag_sd_inpaint.py +26 -10
- diffusers/pipelines/pag/pipeline_pag_sd_xl.py +12 -4
- diffusers/pipelines/pag/pipeline_pag_sd_xl_img2img.py +7 -3
- diffusers/pipelines/pag/pipeline_pag_sd_xl_inpaint.py +10 -6
- diffusers/pipelines/paint_by_example/pipeline_paint_by_example.py +13 -3
- diffusers/pipelines/pia/pipeline_pia.py +13 -1
- diffusers/pipelines/pipeline_flax_utils.py +7 -7
- diffusers/pipelines/pipeline_loading_utils.py +193 -83
- diffusers/pipelines/pipeline_utils.py +221 -106
- diffusers/pipelines/pixart_alpha/pipeline_pixart_alpha.py +17 -5
- diffusers/pipelines/pixart_alpha/pipeline_pixart_sigma.py +17 -4
- diffusers/pipelines/sana/__init__.py +2 -0
- diffusers/pipelines/sana/pipeline_sana.py +183 -58
- diffusers/pipelines/sana/pipeline_sana_sprint.py +889 -0
- diffusers/pipelines/semantic_stable_diffusion/pipeline_semantic_stable_diffusion.py +12 -2
- diffusers/pipelines/shap_e/pipeline_shap_e.py +12 -0
- diffusers/pipelines/shap_e/pipeline_shap_e_img2img.py +12 -0
- diffusers/pipelines/shap_e/renderer.py +6 -6
- diffusers/pipelines/stable_audio/pipeline_stable_audio.py +1 -1
- diffusers/pipelines/stable_cascade/pipeline_stable_cascade.py +15 -4
- diffusers/pipelines/stable_cascade/pipeline_stable_cascade_combined.py +12 -8
- diffusers/pipelines/stable_cascade/pipeline_stable_cascade_prior.py +12 -1
- diffusers/pipelines/stable_diffusion/convert_from_ckpt.py +3 -2
- diffusers/pipelines/stable_diffusion/pipeline_flax_stable_diffusion.py +14 -10
- diffusers/pipelines/stable_diffusion/pipeline_flax_stable_diffusion_img2img.py +3 -3
- diffusers/pipelines/stable_diffusion/pipeline_flax_stable_diffusion_inpaint.py +14 -10
- diffusers/pipelines/stable_diffusion/pipeline_onnx_stable_diffusion.py +2 -2
- diffusers/pipelines/stable_diffusion/pipeline_onnx_stable_diffusion_img2img.py +4 -3
- diffusers/pipelines/stable_diffusion/pipeline_onnx_stable_diffusion_inpaint.py +5 -4
- diffusers/pipelines/stable_diffusion/pipeline_onnx_stable_diffusion_upscale.py +2 -2
- diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion.py +18 -13
- diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion_depth2img.py +30 -8
- diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion_image_variation.py +24 -10
- diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion_img2img.py +28 -12
- diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion_inpaint.py +39 -18
- diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion_instruct_pix2pix.py +17 -6
- diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion_latent_upscale.py +13 -3
- diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion_upscale.py +20 -3
- diffusers/pipelines/stable_diffusion/pipeline_stable_unclip.py +14 -2
- diffusers/pipelines/stable_diffusion/pipeline_stable_unclip_img2img.py +13 -1
- diffusers/pipelines/stable_diffusion_3/pipeline_stable_diffusion_3.py +16 -17
- diffusers/pipelines/stable_diffusion_3/pipeline_stable_diffusion_3_img2img.py +136 -18
- diffusers/pipelines/stable_diffusion_3/pipeline_stable_diffusion_3_inpaint.py +150 -21
- diffusers/pipelines/stable_diffusion_attend_and_excite/pipeline_stable_diffusion_attend_and_excite.py +15 -3
- diffusers/pipelines/stable_diffusion_diffedit/pipeline_stable_diffusion_diffedit.py +26 -11
- diffusers/pipelines/stable_diffusion_gligen/pipeline_stable_diffusion_gligen.py +15 -3
- diffusers/pipelines/stable_diffusion_gligen/pipeline_stable_diffusion_gligen_text_image.py +22 -4
- diffusers/pipelines/stable_diffusion_k_diffusion/pipeline_stable_diffusion_k_diffusion.py +30 -13
- diffusers/pipelines/stable_diffusion_k_diffusion/pipeline_stable_diffusion_xl_k_diffusion.py +12 -4
- diffusers/pipelines/stable_diffusion_ldm3d/pipeline_stable_diffusion_ldm3d.py +15 -3
- diffusers/pipelines/stable_diffusion_panorama/pipeline_stable_diffusion_panorama.py +15 -3
- diffusers/pipelines/stable_diffusion_safe/pipeline_stable_diffusion_safe.py +26 -12
- diffusers/pipelines/stable_diffusion_sag/pipeline_stable_diffusion_sag.py +16 -4
- diffusers/pipelines/stable_diffusion_xl/pipeline_flax_stable_diffusion_xl.py +1 -1
- diffusers/pipelines/stable_diffusion_xl/pipeline_stable_diffusion_xl.py +12 -4
- diffusers/pipelines/stable_diffusion_xl/pipeline_stable_diffusion_xl_img2img.py +7 -3
- diffusers/pipelines/stable_diffusion_xl/pipeline_stable_diffusion_xl_inpaint.py +10 -6
- diffusers/pipelines/stable_diffusion_xl/pipeline_stable_diffusion_xl_instruct_pix2pix.py +11 -4
- diffusers/pipelines/stable_video_diffusion/pipeline_stable_video_diffusion.py +13 -2
- diffusers/pipelines/t2i_adapter/pipeline_stable_diffusion_adapter.py +18 -4
- diffusers/pipelines/t2i_adapter/pipeline_stable_diffusion_xl_adapter.py +26 -5
- diffusers/pipelines/text_to_video_synthesis/pipeline_text_to_video_synth.py +13 -1
- diffusers/pipelines/text_to_video_synthesis/pipeline_text_to_video_synth_img2img.py +13 -1
- diffusers/pipelines/text_to_video_synthesis/pipeline_text_to_video_zero.py +28 -6
- diffusers/pipelines/text_to_video_synthesis/pipeline_text_to_video_zero_sdxl.py +26 -4
- diffusers/pipelines/transformers_loading_utils.py +121 -0
- diffusers/pipelines/unclip/pipeline_unclip.py +11 -1
- diffusers/pipelines/unclip/pipeline_unclip_image_variation.py +11 -1
- diffusers/pipelines/unidiffuser/pipeline_unidiffuser.py +19 -2
- diffusers/pipelines/wan/__init__.py +51 -0
- diffusers/pipelines/wan/pipeline_output.py +20 -0
- diffusers/pipelines/wan/pipeline_wan.py +593 -0
- diffusers/pipelines/wan/pipeline_wan_i2v.py +722 -0
- diffusers/pipelines/wan/pipeline_wan_video2video.py +725 -0
- diffusers/pipelines/wuerstchen/modeling_wuerstchen_prior.py +7 -31
- diffusers/pipelines/wuerstchen/pipeline_wuerstchen.py +12 -1
- diffusers/pipelines/wuerstchen/pipeline_wuerstchen_prior.py +12 -1
- diffusers/quantizers/auto.py +5 -1
- diffusers/quantizers/base.py +5 -9
- diffusers/quantizers/bitsandbytes/bnb_quantizer.py +41 -29
- diffusers/quantizers/bitsandbytes/utils.py +30 -20
- diffusers/quantizers/gguf/gguf_quantizer.py +1 -0
- diffusers/quantizers/gguf/utils.py +4 -2
- diffusers/quantizers/quantization_config.py +59 -4
- diffusers/quantizers/quanto/__init__.py +1 -0
- diffusers/quantizers/quanto/quanto_quantizer.py +177 -0
- diffusers/quantizers/quanto/utils.py +60 -0
- diffusers/quantizers/torchao/__init__.py +1 -1
- diffusers/quantizers/torchao/torchao_quantizer.py +47 -2
- diffusers/schedulers/__init__.py +2 -1
- diffusers/schedulers/scheduling_consistency_models.py +1 -2
- diffusers/schedulers/scheduling_ddim_inverse.py +1 -1
- diffusers/schedulers/scheduling_ddpm.py +2 -3
- diffusers/schedulers/scheduling_ddpm_parallel.py +1 -2
- diffusers/schedulers/scheduling_dpmsolver_multistep.py +12 -4
- diffusers/schedulers/scheduling_edm_euler.py +45 -10
- diffusers/schedulers/scheduling_flow_match_euler_discrete.py +116 -28
- diffusers/schedulers/scheduling_flow_match_heun_discrete.py +7 -6
- diffusers/schedulers/scheduling_heun_discrete.py +1 -1
- diffusers/schedulers/scheduling_lcm.py +1 -2
- diffusers/schedulers/scheduling_lms_discrete.py +1 -1
- diffusers/schedulers/scheduling_repaint.py +5 -1
- diffusers/schedulers/scheduling_scm.py +265 -0
- diffusers/schedulers/scheduling_tcd.py +1 -2
- diffusers/schedulers/scheduling_utils.py +2 -1
- diffusers/training_utils.py +14 -7
- diffusers/utils/__init__.py +10 -2
- diffusers/utils/constants.py +13 -1
- diffusers/utils/deprecation_utils.py +1 -1
- diffusers/utils/dummy_bitsandbytes_objects.py +17 -0
- diffusers/utils/dummy_gguf_objects.py +17 -0
- diffusers/utils/dummy_optimum_quanto_objects.py +17 -0
- diffusers/utils/dummy_pt_objects.py +233 -0
- diffusers/utils/dummy_torch_and_transformers_and_opencv_objects.py +17 -0
- diffusers/utils/dummy_torch_and_transformers_objects.py +270 -0
- diffusers/utils/dummy_torchao_objects.py +17 -0
- diffusers/utils/dynamic_modules_utils.py +1 -1
- diffusers/utils/export_utils.py +28 -3
- diffusers/utils/hub_utils.py +52 -102
- diffusers/utils/import_utils.py +121 -221
- diffusers/utils/loading_utils.py +14 -1
- diffusers/utils/logging.py +1 -2
- diffusers/utils/peft_utils.py +6 -14
- diffusers/utils/remote_utils.py +425 -0
- diffusers/utils/source_code_parsing_utils.py +52 -0
- diffusers/utils/state_dict_utils.py +15 -1
- diffusers/utils/testing_utils.py +243 -13
- diffusers/utils/torch_utils.py +10 -0
- diffusers/utils/typing_utils.py +91 -0
- diffusers/video_processor.py +1 -1
- {diffusers-0.32.1.dist-info → diffusers-0.33.0.dist-info}/METADATA +76 -44
- diffusers-0.33.0.dist-info/RECORD +608 -0
- {diffusers-0.32.1.dist-info → diffusers-0.33.0.dist-info}/WHEEL +1 -1
- diffusers-0.32.1.dist-info/RECORD +0 -550
- {diffusers-0.32.1.dist-info → diffusers-0.33.0.dist-info}/LICENSE +0 -0
- {diffusers-0.32.1.dist-info → diffusers-0.33.0.dist-info}/entry_points.txt +0 -0
- {diffusers-0.32.1.dist-info → diffusers-0.33.0.dist-info}/top_level.txt +0 -0
@@ -34,7 +34,7 @@ from ....models.resnet import ResnetBlockCondNorm2D
|
|
34
34
|
from ....models.transformers.dual_transformer_2d import DualTransformer2DModel
|
35
35
|
from ....models.transformers.transformer_2d import Transformer2DModel
|
36
36
|
from ....models.unets.unet_2d_condition import UNet2DConditionOutput
|
37
|
-
from ....utils import USE_PEFT_BACKEND,
|
37
|
+
from ....utils import USE_PEFT_BACKEND, logging, scale_lora_layers, unscale_lora_layers
|
38
38
|
from ....utils.torch_utils import apply_freeu
|
39
39
|
|
40
40
|
|
@@ -963,10 +963,6 @@ class UNetFlatConditionModel(ModelMixin, ConfigMixin):
|
|
963
963
|
for module in self.children():
|
964
964
|
fn_recursive_set_attention_slice(module, reversed_slice_size)
|
965
965
|
|
966
|
-
def _set_gradient_checkpointing(self, module, value=False):
|
967
|
-
if hasattr(module, "gradient_checkpointing"):
|
968
|
-
module.gradient_checkpointing = value
|
969
|
-
|
970
966
|
def enable_freeu(self, s1, s2, b1, b2):
|
971
967
|
r"""Enables the FreeU mechanism from https://arxiv.org/abs/2309.11497.
|
972
968
|
|
@@ -1163,10 +1159,11 @@ class UNetFlatConditionModel(ModelMixin, ConfigMixin):
|
|
1163
1159
|
# TODO: this requires sync between CPU and GPU. So try to pass timesteps as tensors if you can
|
1164
1160
|
# This would be a good case for the `match` statement (Python 3.10+)
|
1165
1161
|
is_mps = sample.device.type == "mps"
|
1162
|
+
is_npu = sample.device.type == "npu"
|
1166
1163
|
if isinstance(timestep, float):
|
1167
|
-
dtype = torch.float32 if is_mps else torch.float64
|
1164
|
+
dtype = torch.float32 if (is_mps or is_npu) else torch.float64
|
1168
1165
|
else:
|
1169
|
-
dtype = torch.int32 if is_mps else torch.int64
|
1166
|
+
dtype = torch.int32 if (is_mps or is_npu) else torch.int64
|
1170
1167
|
timesteps = torch.tensor([timesteps], dtype=dtype, device=sample.device)
|
1171
1168
|
elif len(timesteps.shape) == 0:
|
1172
1169
|
timesteps = timesteps[None].to(sample.device)
|
@@ -1596,21 +1593,7 @@ class DownBlockFlat(nn.Module):
|
|
1596
1593
|
|
1597
1594
|
for resnet in self.resnets:
|
1598
1595
|
if torch.is_grad_enabled() and self.gradient_checkpointing:
|
1599
|
-
|
1600
|
-
def create_custom_forward(module):
|
1601
|
-
def custom_forward(*inputs):
|
1602
|
-
return module(*inputs)
|
1603
|
-
|
1604
|
-
return custom_forward
|
1605
|
-
|
1606
|
-
if is_torch_version(">=", "1.11.0"):
|
1607
|
-
hidden_states = torch.utils.checkpoint.checkpoint(
|
1608
|
-
create_custom_forward(resnet), hidden_states, temb, use_reentrant=False
|
1609
|
-
)
|
1610
|
-
else:
|
1611
|
-
hidden_states = torch.utils.checkpoint.checkpoint(
|
1612
|
-
create_custom_forward(resnet), hidden_states, temb
|
1613
|
-
)
|
1596
|
+
hidden_states = self._gradient_checkpointing_func(resnet, hidden_states, temb)
|
1614
1597
|
else:
|
1615
1598
|
hidden_states = resnet(hidden_states, temb)
|
1616
1599
|
|
@@ -1733,23 +1716,7 @@ class CrossAttnDownBlockFlat(nn.Module):
|
|
1733
1716
|
|
1734
1717
|
for i, (resnet, attn) in enumerate(blocks):
|
1735
1718
|
if torch.is_grad_enabled() and self.gradient_checkpointing:
|
1736
|
-
|
1737
|
-
def create_custom_forward(module, return_dict=None):
|
1738
|
-
def custom_forward(*inputs):
|
1739
|
-
if return_dict is not None:
|
1740
|
-
return module(*inputs, return_dict=return_dict)
|
1741
|
-
else:
|
1742
|
-
return module(*inputs)
|
1743
|
-
|
1744
|
-
return custom_forward
|
1745
|
-
|
1746
|
-
ckpt_kwargs: Dict[str, Any] = {"use_reentrant": False} if is_torch_version(">=", "1.11.0") else {}
|
1747
|
-
hidden_states = torch.utils.checkpoint.checkpoint(
|
1748
|
-
create_custom_forward(resnet),
|
1749
|
-
hidden_states,
|
1750
|
-
temb,
|
1751
|
-
**ckpt_kwargs,
|
1752
|
-
)
|
1719
|
+
hidden_states = self._gradient_checkpointing_func(resnet, hidden_states, temb)
|
1753
1720
|
hidden_states = attn(
|
1754
1721
|
hidden_states,
|
1755
1722
|
encoder_hidden_states=encoder_hidden_states,
|
@@ -1875,21 +1842,7 @@ class UpBlockFlat(nn.Module):
|
|
1875
1842
|
hidden_states = torch.cat([hidden_states, res_hidden_states], dim=1)
|
1876
1843
|
|
1877
1844
|
if torch.is_grad_enabled() and self.gradient_checkpointing:
|
1878
|
-
|
1879
|
-
def create_custom_forward(module):
|
1880
|
-
def custom_forward(*inputs):
|
1881
|
-
return module(*inputs)
|
1882
|
-
|
1883
|
-
return custom_forward
|
1884
|
-
|
1885
|
-
if is_torch_version(">=", "1.11.0"):
|
1886
|
-
hidden_states = torch.utils.checkpoint.checkpoint(
|
1887
|
-
create_custom_forward(resnet), hidden_states, temb, use_reentrant=False
|
1888
|
-
)
|
1889
|
-
else:
|
1890
|
-
hidden_states = torch.utils.checkpoint.checkpoint(
|
1891
|
-
create_custom_forward(resnet), hidden_states, temb
|
1892
|
-
)
|
1845
|
+
hidden_states = self._gradient_checkpointing_func(resnet, hidden_states, temb)
|
1893
1846
|
else:
|
1894
1847
|
hidden_states = resnet(hidden_states, temb)
|
1895
1848
|
|
@@ -2034,23 +1987,7 @@ class CrossAttnUpBlockFlat(nn.Module):
|
|
2034
1987
|
hidden_states = torch.cat([hidden_states, res_hidden_states], dim=1)
|
2035
1988
|
|
2036
1989
|
if torch.is_grad_enabled() and self.gradient_checkpointing:
|
2037
|
-
|
2038
|
-
def create_custom_forward(module, return_dict=None):
|
2039
|
-
def custom_forward(*inputs):
|
2040
|
-
if return_dict is not None:
|
2041
|
-
return module(*inputs, return_dict=return_dict)
|
2042
|
-
else:
|
2043
|
-
return module(*inputs)
|
2044
|
-
|
2045
|
-
return custom_forward
|
2046
|
-
|
2047
|
-
ckpt_kwargs: Dict[str, Any] = {"use_reentrant": False} if is_torch_version(">=", "1.11.0") else {}
|
2048
|
-
hidden_states = torch.utils.checkpoint.checkpoint(
|
2049
|
-
create_custom_forward(resnet),
|
2050
|
-
hidden_states,
|
2051
|
-
temb,
|
2052
|
-
**ckpt_kwargs,
|
2053
|
-
)
|
1990
|
+
hidden_states = self._gradient_checkpointing_func(resnet, hidden_states, temb)
|
2054
1991
|
hidden_states = attn(
|
2055
1992
|
hidden_states,
|
2056
1993
|
encoder_hidden_states=encoder_hidden_states,
|
@@ -2229,25 +2166,9 @@ class UNetMidBlockFlat(nn.Module):
|
|
2229
2166
|
hidden_states = self.resnets[0](hidden_states, temb)
|
2230
2167
|
for attn, resnet in zip(self.attentions, self.resnets[1:]):
|
2231
2168
|
if torch.is_grad_enabled() and self.gradient_checkpointing:
|
2232
|
-
|
2233
|
-
def create_custom_forward(module, return_dict=None):
|
2234
|
-
def custom_forward(*inputs):
|
2235
|
-
if return_dict is not None:
|
2236
|
-
return module(*inputs, return_dict=return_dict)
|
2237
|
-
else:
|
2238
|
-
return module(*inputs)
|
2239
|
-
|
2240
|
-
return custom_forward
|
2241
|
-
|
2242
|
-
ckpt_kwargs: Dict[str, Any] = {"use_reentrant": False} if is_torch_version(">=", "1.11.0") else {}
|
2243
2169
|
if attn is not None:
|
2244
2170
|
hidden_states = attn(hidden_states, temb=temb)
|
2245
|
-
hidden_states =
|
2246
|
-
create_custom_forward(resnet),
|
2247
|
-
hidden_states,
|
2248
|
-
temb,
|
2249
|
-
**ckpt_kwargs,
|
2250
|
-
)
|
2171
|
+
hidden_states = self._gradient_checkpointing_func(resnet, hidden_states, temb)
|
2251
2172
|
else:
|
2252
2173
|
if attn is not None:
|
2253
2174
|
hidden_states = attn(hidden_states, temb=temb)
|
@@ -2376,17 +2297,6 @@ class UNetMidBlockFlatCrossAttn(nn.Module):
|
|
2376
2297
|
hidden_states = self.resnets[0](hidden_states, temb)
|
2377
2298
|
for attn, resnet in zip(self.attentions, self.resnets[1:]):
|
2378
2299
|
if torch.is_grad_enabled() and self.gradient_checkpointing:
|
2379
|
-
|
2380
|
-
def create_custom_forward(module, return_dict=None):
|
2381
|
-
def custom_forward(*inputs):
|
2382
|
-
if return_dict is not None:
|
2383
|
-
return module(*inputs, return_dict=return_dict)
|
2384
|
-
else:
|
2385
|
-
return module(*inputs)
|
2386
|
-
|
2387
|
-
return custom_forward
|
2388
|
-
|
2389
|
-
ckpt_kwargs: Dict[str, Any] = {"use_reentrant": False} if is_torch_version(">=", "1.11.0") else {}
|
2390
2300
|
hidden_states = attn(
|
2391
2301
|
hidden_states,
|
2392
2302
|
encoder_hidden_states=encoder_hidden_states,
|
@@ -2395,12 +2305,7 @@ class UNetMidBlockFlatCrossAttn(nn.Module):
|
|
2395
2305
|
encoder_attention_mask=encoder_attention_mask,
|
2396
2306
|
return_dict=False,
|
2397
2307
|
)[0]
|
2398
|
-
hidden_states =
|
2399
|
-
create_custom_forward(resnet),
|
2400
|
-
hidden_states,
|
2401
|
-
temb,
|
2402
|
-
**ckpt_kwargs,
|
2403
|
-
)
|
2308
|
+
hidden_states = self._gradient_checkpointing_func(resnet, hidden_states, temb)
|
2404
2309
|
else:
|
2405
2310
|
hidden_states = attn(
|
2406
2311
|
hidden_states,
|
@@ -76,7 +76,7 @@ class VersatileDiffusionPipeline(DiffusionPipeline):
|
|
76
76
|
vae=vae,
|
77
77
|
scheduler=scheduler,
|
78
78
|
)
|
79
|
-
self.vae_scale_factor = 2 ** (len(self.vae.config.block_out_channels) - 1)
|
79
|
+
self.vae_scale_factor = 2 ** (len(self.vae.config.block_out_channels) - 1) if getattr(self, "vae", None) else 8
|
80
80
|
|
81
81
|
@torch.no_grad()
|
82
82
|
def image_variation(
|
diffusers/pipelines/deprecated/versatile_diffusion/pipeline_versatile_diffusion_dual_guided.py
CHANGED
@@ -94,7 +94,7 @@ class VersatileDiffusionDualGuidedPipeline(DiffusionPipeline):
|
|
94
94
|
vae=vae,
|
95
95
|
scheduler=scheduler,
|
96
96
|
)
|
97
|
-
self.vae_scale_factor = 2 ** (len(self.vae.config.block_out_channels) - 1)
|
97
|
+
self.vae_scale_factor = 2 ** (len(self.vae.config.block_out_channels) - 1) if getattr(self, "vae", None) else 8
|
98
98
|
self.image_processor = VaeImageProcessor(vae_scale_factor=self.vae_scale_factor)
|
99
99
|
|
100
100
|
if self.text_unet is not None and (
|
diffusers/pipelines/deprecated/versatile_diffusion/pipeline_versatile_diffusion_image_variation.py
CHANGED
@@ -77,7 +77,7 @@ class VersatileDiffusionImageVariationPipeline(DiffusionPipeline):
|
|
77
77
|
vae=vae,
|
78
78
|
scheduler=scheduler,
|
79
79
|
)
|
80
|
-
self.vae_scale_factor = 2 ** (len(self.vae.config.block_out_channels) - 1)
|
80
|
+
self.vae_scale_factor = 2 ** (len(self.vae.config.block_out_channels) - 1) if getattr(self, "vae", None) else 8
|
81
81
|
self.image_processor = VaeImageProcessor(vae_scale_factor=self.vae_scale_factor)
|
82
82
|
|
83
83
|
def _encode_prompt(self, prompt, device, num_images_per_prompt, do_classifier_free_guidance, negative_prompt):
|
diffusers/pipelines/deprecated/versatile_diffusion/pipeline_versatile_diffusion_text_to_image.py
CHANGED
@@ -82,7 +82,7 @@ class VersatileDiffusionTextToImagePipeline(DiffusionPipeline):
|
|
82
82
|
vae=vae,
|
83
83
|
scheduler=scheduler,
|
84
84
|
)
|
85
|
-
self.vae_scale_factor = 2 ** (len(self.vae.config.block_out_channels) - 1)
|
85
|
+
self.vae_scale_factor = 2 ** (len(self.vae.config.block_out_channels) - 1) if getattr(self, "vae", None) else 8
|
86
86
|
self.image_processor = VaeImageProcessor(vae_scale_factor=self.vae_scale_factor)
|
87
87
|
|
88
88
|
if self.text_unet is not None:
|
@@ -24,10 +24,19 @@ import torch
|
|
24
24
|
|
25
25
|
from ...models import AutoencoderKL, DiTTransformer2DModel
|
26
26
|
from ...schedulers import KarrasDiffusionSchedulers
|
27
|
+
from ...utils import is_torch_xla_available
|
27
28
|
from ...utils.torch_utils import randn_tensor
|
28
29
|
from ..pipeline_utils import DiffusionPipeline, ImagePipelineOutput
|
29
30
|
|
30
31
|
|
32
|
+
if is_torch_xla_available():
|
33
|
+
import torch_xla.core.xla_model as xm
|
34
|
+
|
35
|
+
XLA_AVAILABLE = True
|
36
|
+
else:
|
37
|
+
XLA_AVAILABLE = False
|
38
|
+
|
39
|
+
|
31
40
|
class DiTPipeline(DiffusionPipeline):
|
32
41
|
r"""
|
33
42
|
Pipeline for image generation based on a Transformer backbone instead of a UNet.
|
@@ -178,10 +187,11 @@ class DiTPipeline(DiffusionPipeline):
|
|
178
187
|
# TODO: this requires sync between CPU and GPU. So try to pass timesteps as tensors if you can
|
179
188
|
# This would be a good case for the `match` statement (Python 3.10+)
|
180
189
|
is_mps = latent_model_input.device.type == "mps"
|
190
|
+
is_npu = latent_model_input.device.type == "npu"
|
181
191
|
if isinstance(timesteps, float):
|
182
|
-
dtype = torch.float32 if is_mps else torch.float64
|
192
|
+
dtype = torch.float32 if (is_mps or is_npu) else torch.float64
|
183
193
|
else:
|
184
|
-
dtype = torch.int32 if is_mps else torch.int64
|
194
|
+
dtype = torch.int32 if (is_mps or is_npu) else torch.int64
|
185
195
|
timesteps = torch.tensor([timesteps], dtype=dtype, device=latent_model_input.device)
|
186
196
|
elif len(timesteps.shape) == 0:
|
187
197
|
timesteps = timesteps[None].to(latent_model_input.device)
|
@@ -211,6 +221,9 @@ class DiTPipeline(DiffusionPipeline):
|
|
211
221
|
# compute previous image: x_t -> x_t-1
|
212
222
|
latent_model_input = self.scheduler.step(model_output, t, latent_model_input).prev_sample
|
213
223
|
|
224
|
+
if XLA_AVAILABLE:
|
225
|
+
xm.mark_step()
|
226
|
+
|
214
227
|
if guidance_scale > 1:
|
215
228
|
latents, _ = latent_model_input.chunk(2, dim=0)
|
216
229
|
else:
|
@@ -0,0 +1,52 @@
|
|
1
|
+
from typing import TYPE_CHECKING
|
2
|
+
|
3
|
+
from ...utils import (
|
4
|
+
DIFFUSERS_SLOW_IMPORT,
|
5
|
+
OptionalDependencyNotAvailable,
|
6
|
+
_LazyModule,
|
7
|
+
get_objects_from_module,
|
8
|
+
is_torch_available,
|
9
|
+
is_transformers_available,
|
10
|
+
)
|
11
|
+
|
12
|
+
|
13
|
+
_dummy_objects = {}
|
14
|
+
_import_structure = {}
|
15
|
+
|
16
|
+
|
17
|
+
try:
|
18
|
+
if not (is_transformers_available() and is_torch_available()):
|
19
|
+
raise OptionalDependencyNotAvailable()
|
20
|
+
except OptionalDependencyNotAvailable:
|
21
|
+
from ...utils import dummy_torch_and_transformers_objects # noqa F403
|
22
|
+
|
23
|
+
_dummy_objects.update(get_objects_from_module(dummy_torch_and_transformers_objects))
|
24
|
+
else:
|
25
|
+
_import_structure["pipeline_easyanimate"] = ["EasyAnimatePipeline"]
|
26
|
+
_import_structure["pipeline_easyanimate_control"] = ["EasyAnimateControlPipeline"]
|
27
|
+
_import_structure["pipeline_easyanimate_inpaint"] = ["EasyAnimateInpaintPipeline"]
|
28
|
+
|
29
|
+
if TYPE_CHECKING or DIFFUSERS_SLOW_IMPORT:
|
30
|
+
try:
|
31
|
+
if not (is_transformers_available() and is_torch_available()):
|
32
|
+
raise OptionalDependencyNotAvailable()
|
33
|
+
|
34
|
+
except OptionalDependencyNotAvailable:
|
35
|
+
from ...utils.dummy_torch_and_transformers_objects import *
|
36
|
+
else:
|
37
|
+
from .pipeline_easyanimate import EasyAnimatePipeline
|
38
|
+
from .pipeline_easyanimate_control import EasyAnimateControlPipeline
|
39
|
+
from .pipeline_easyanimate_inpaint import EasyAnimateInpaintPipeline
|
40
|
+
|
41
|
+
else:
|
42
|
+
import sys
|
43
|
+
|
44
|
+
sys.modules[__name__] = _LazyModule(
|
45
|
+
__name__,
|
46
|
+
globals()["__file__"],
|
47
|
+
_import_structure,
|
48
|
+
module_spec=__spec__,
|
49
|
+
)
|
50
|
+
|
51
|
+
for name, value in _dummy_objects.items():
|
52
|
+
setattr(sys.modules[__name__], name, value)
|