diffusers 0.33.0__py3-none-any.whl → 0.34.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 +48 -1
- diffusers/commands/__init__.py +1 -1
- diffusers/commands/diffusers_cli.py +1 -1
- diffusers/commands/env.py +1 -1
- diffusers/commands/fp16_safetensors.py +1 -1
- diffusers/dependency_versions_check.py +1 -1
- diffusers/dependency_versions_table.py +1 -1
- diffusers/experimental/rl/value_guided_sampling.py +1 -1
- diffusers/hooks/faster_cache.py +2 -2
- diffusers/hooks/group_offloading.py +128 -29
- diffusers/hooks/hooks.py +2 -2
- diffusers/hooks/layerwise_casting.py +3 -3
- diffusers/hooks/pyramid_attention_broadcast.py +1 -1
- diffusers/image_processor.py +7 -2
- diffusers/loaders/__init__.py +4 -0
- diffusers/loaders/ip_adapter.py +5 -14
- diffusers/loaders/lora_base.py +212 -111
- diffusers/loaders/lora_conversion_utils.py +275 -34
- diffusers/loaders/lora_pipeline.py +1554 -819
- diffusers/loaders/peft.py +52 -109
- diffusers/loaders/single_file.py +2 -2
- diffusers/loaders/single_file_model.py +20 -4
- diffusers/loaders/single_file_utils.py +225 -5
- diffusers/loaders/textual_inversion.py +3 -2
- diffusers/loaders/transformer_flux.py +1 -1
- diffusers/loaders/transformer_sd3.py +2 -2
- diffusers/loaders/unet.py +2 -16
- diffusers/loaders/unet_loader_utils.py +1 -1
- diffusers/loaders/utils.py +1 -1
- diffusers/models/__init__.py +15 -1
- diffusers/models/activations.py +5 -5
- diffusers/models/adapter.py +2 -3
- diffusers/models/attention.py +4 -4
- diffusers/models/attention_flax.py +10 -10
- diffusers/models/attention_processor.py +14 -10
- diffusers/models/auto_model.py +47 -10
- diffusers/models/autoencoders/__init__.py +1 -0
- diffusers/models/autoencoders/autoencoder_asym_kl.py +4 -4
- diffusers/models/autoencoders/autoencoder_dc.py +3 -3
- diffusers/models/autoencoders/autoencoder_kl.py +4 -4
- diffusers/models/autoencoders/autoencoder_kl_allegro.py +4 -4
- diffusers/models/autoencoders/autoencoder_kl_cogvideox.py +6 -6
- diffusers/models/autoencoders/autoencoder_kl_cosmos.py +1108 -0
- diffusers/models/autoencoders/autoencoder_kl_hunyuan_video.py +2 -2
- diffusers/models/autoencoders/autoencoder_kl_ltx.py +3 -3
- diffusers/models/autoencoders/autoencoder_kl_magvit.py +4 -4
- diffusers/models/autoencoders/autoencoder_kl_mochi.py +3 -3
- diffusers/models/autoencoders/autoencoder_kl_temporal_decoder.py +4 -4
- diffusers/models/autoencoders/autoencoder_kl_wan.py +256 -22
- diffusers/models/autoencoders/autoencoder_oobleck.py +1 -1
- diffusers/models/autoencoders/autoencoder_tiny.py +3 -3
- diffusers/models/autoencoders/consistency_decoder_vae.py +1 -1
- diffusers/models/autoencoders/vae.py +13 -2
- diffusers/models/autoencoders/vq_model.py +2 -2
- diffusers/models/cache_utils.py +1 -1
- diffusers/models/controlnet.py +1 -1
- diffusers/models/controlnet_flux.py +1 -1
- diffusers/models/controlnet_sd3.py +1 -1
- diffusers/models/controlnet_sparsectrl.py +1 -1
- diffusers/models/controlnets/__init__.py +1 -0
- diffusers/models/controlnets/controlnet.py +3 -3
- diffusers/models/controlnets/controlnet_flax.py +1 -1
- diffusers/models/controlnets/controlnet_flux.py +16 -15
- diffusers/models/controlnets/controlnet_hunyuan.py +2 -2
- diffusers/models/controlnets/controlnet_sana.py +290 -0
- diffusers/models/controlnets/controlnet_sd3.py +1 -1
- diffusers/models/controlnets/controlnet_sparsectrl.py +2 -2
- diffusers/models/controlnets/controlnet_union.py +1 -1
- diffusers/models/controlnets/controlnet_xs.py +7 -7
- diffusers/models/controlnets/multicontrolnet.py +4 -5
- diffusers/models/controlnets/multicontrolnet_union.py +5 -6
- diffusers/models/downsampling.py +2 -2
- diffusers/models/embeddings.py +10 -12
- diffusers/models/embeddings_flax.py +2 -2
- diffusers/models/lora.py +3 -3
- diffusers/models/modeling_utils.py +44 -14
- diffusers/models/normalization.py +4 -4
- diffusers/models/resnet.py +2 -2
- diffusers/models/resnet_flax.py +1 -1
- diffusers/models/transformers/__init__.py +5 -0
- diffusers/models/transformers/auraflow_transformer_2d.py +70 -24
- diffusers/models/transformers/cogvideox_transformer_3d.py +1 -1
- diffusers/models/transformers/consisid_transformer_3d.py +1 -1
- diffusers/models/transformers/dit_transformer_2d.py +2 -2
- diffusers/models/transformers/dual_transformer_2d.py +1 -1
- diffusers/models/transformers/hunyuan_transformer_2d.py +2 -2
- diffusers/models/transformers/latte_transformer_3d.py +4 -5
- diffusers/models/transformers/lumina_nextdit2d.py +2 -2
- diffusers/models/transformers/pixart_transformer_2d.py +3 -3
- diffusers/models/transformers/prior_transformer.py +1 -1
- diffusers/models/transformers/sana_transformer.py +8 -3
- diffusers/models/transformers/stable_audio_transformer.py +5 -9
- diffusers/models/transformers/t5_film_transformer.py +3 -3
- diffusers/models/transformers/transformer_2d.py +1 -1
- diffusers/models/transformers/transformer_allegro.py +1 -1
- diffusers/models/transformers/transformer_chroma.py +742 -0
- diffusers/models/transformers/transformer_cogview3plus.py +5 -10
- diffusers/models/transformers/transformer_cogview4.py +317 -25
- diffusers/models/transformers/transformer_cosmos.py +579 -0
- diffusers/models/transformers/transformer_flux.py +9 -11
- diffusers/models/transformers/transformer_hidream_image.py +942 -0
- diffusers/models/transformers/transformer_hunyuan_video.py +6 -8
- diffusers/models/transformers/transformer_hunyuan_video_framepack.py +416 -0
- diffusers/models/transformers/transformer_ltx.py +2 -2
- diffusers/models/transformers/transformer_lumina2.py +1 -1
- diffusers/models/transformers/transformer_mochi.py +1 -1
- diffusers/models/transformers/transformer_omnigen.py +2 -2
- diffusers/models/transformers/transformer_sd3.py +7 -7
- diffusers/models/transformers/transformer_temporal.py +1 -1
- diffusers/models/transformers/transformer_wan.py +24 -8
- diffusers/models/transformers/transformer_wan_vace.py +393 -0
- diffusers/models/unets/unet_1d.py +1 -1
- diffusers/models/unets/unet_1d_blocks.py +1 -1
- diffusers/models/unets/unet_2d.py +1 -1
- diffusers/models/unets/unet_2d_blocks.py +1 -1
- diffusers/models/unets/unet_2d_blocks_flax.py +8 -7
- diffusers/models/unets/unet_2d_condition.py +2 -2
- diffusers/models/unets/unet_2d_condition_flax.py +2 -2
- diffusers/models/unets/unet_3d_blocks.py +1 -1
- diffusers/models/unets/unet_3d_condition.py +3 -3
- diffusers/models/unets/unet_i2vgen_xl.py +3 -3
- diffusers/models/unets/unet_kandinsky3.py +1 -1
- diffusers/models/unets/unet_motion_model.py +2 -2
- diffusers/models/unets/unet_stable_cascade.py +1 -1
- diffusers/models/upsampling.py +2 -2
- diffusers/models/vae_flax.py +2 -2
- diffusers/models/vq_model.py +1 -1
- diffusers/pipelines/__init__.py +37 -6
- diffusers/pipelines/allegro/pipeline_allegro.py +11 -11
- diffusers/pipelines/amused/pipeline_amused.py +7 -6
- diffusers/pipelines/amused/pipeline_amused_img2img.py +6 -5
- diffusers/pipelines/amused/pipeline_amused_inpaint.py +6 -5
- diffusers/pipelines/animatediff/pipeline_animatediff.py +6 -6
- diffusers/pipelines/animatediff/pipeline_animatediff_controlnet.py +6 -6
- diffusers/pipelines/animatediff/pipeline_animatediff_sdxl.py +16 -15
- diffusers/pipelines/animatediff/pipeline_animatediff_sparsectrl.py +6 -6
- diffusers/pipelines/animatediff/pipeline_animatediff_video2video.py +5 -5
- diffusers/pipelines/animatediff/pipeline_animatediff_video2video_controlnet.py +5 -5
- diffusers/pipelines/audioldm/pipeline_audioldm.py +8 -7
- diffusers/pipelines/audioldm2/modeling_audioldm2.py +1 -1
- diffusers/pipelines/audioldm2/pipeline_audioldm2.py +23 -13
- diffusers/pipelines/aura_flow/pipeline_aura_flow.py +48 -11
- diffusers/pipelines/auto_pipeline.py +6 -7
- diffusers/pipelines/blip_diffusion/modeling_blip2.py +1 -1
- diffusers/pipelines/blip_diffusion/modeling_ctx_clip.py +2 -2
- diffusers/pipelines/blip_diffusion/pipeline_blip_diffusion.py +11 -10
- diffusers/pipelines/chroma/__init__.py +49 -0
- diffusers/pipelines/chroma/pipeline_chroma.py +949 -0
- diffusers/pipelines/chroma/pipeline_chroma_img2img.py +1034 -0
- diffusers/pipelines/chroma/pipeline_output.py +21 -0
- diffusers/pipelines/cogvideo/pipeline_cogvideox.py +8 -8
- diffusers/pipelines/cogvideo/pipeline_cogvideox_fun_control.py +8 -8
- diffusers/pipelines/cogvideo/pipeline_cogvideox_image2video.py +8 -8
- diffusers/pipelines/cogvideo/pipeline_cogvideox_video2video.py +8 -8
- diffusers/pipelines/cogview3/pipeline_cogview3plus.py +9 -9
- diffusers/pipelines/cogview4/pipeline_cogview4.py +7 -7
- diffusers/pipelines/cogview4/pipeline_cogview4_control.py +7 -7
- diffusers/pipelines/consisid/consisid_utils.py +2 -2
- diffusers/pipelines/consisid/pipeline_consisid.py +8 -8
- diffusers/pipelines/consistency_models/pipeline_consistency_models.py +1 -1
- diffusers/pipelines/controlnet/pipeline_controlnet.py +7 -7
- diffusers/pipelines/controlnet/pipeline_controlnet_blip_diffusion.py +8 -8
- diffusers/pipelines/controlnet/pipeline_controlnet_img2img.py +7 -7
- diffusers/pipelines/controlnet/pipeline_controlnet_inpaint.py +7 -7
- diffusers/pipelines/controlnet/pipeline_controlnet_inpaint_sd_xl.py +14 -14
- diffusers/pipelines/controlnet/pipeline_controlnet_sd_xl.py +10 -6
- diffusers/pipelines/controlnet/pipeline_controlnet_sd_xl_img2img.py +13 -13
- diffusers/pipelines/controlnet/pipeline_controlnet_union_inpaint_sd_xl.py +14 -14
- diffusers/pipelines/controlnet/pipeline_controlnet_union_sd_xl.py +5 -5
- diffusers/pipelines/controlnet/pipeline_controlnet_union_sd_xl_img2img.py +13 -13
- diffusers/pipelines/controlnet/pipeline_flax_controlnet.py +1 -1
- diffusers/pipelines/controlnet_hunyuandit/pipeline_hunyuandit_controlnet.py +8 -8
- diffusers/pipelines/controlnet_sd3/pipeline_stable_diffusion_3_controlnet.py +7 -7
- diffusers/pipelines/controlnet_sd3/pipeline_stable_diffusion_3_controlnet_inpainting.py +7 -7
- diffusers/pipelines/controlnet_xs/pipeline_controlnet_xs.py +12 -10
- diffusers/pipelines/controlnet_xs/pipeline_controlnet_xs_sd_xl.py +9 -7
- diffusers/pipelines/cosmos/__init__.py +54 -0
- diffusers/pipelines/cosmos/pipeline_cosmos2_text2image.py +673 -0
- diffusers/pipelines/cosmos/pipeline_cosmos2_video2world.py +792 -0
- diffusers/pipelines/cosmos/pipeline_cosmos_text2world.py +664 -0
- diffusers/pipelines/cosmos/pipeline_cosmos_video2world.py +826 -0
- diffusers/pipelines/cosmos/pipeline_output.py +40 -0
- diffusers/pipelines/dance_diffusion/pipeline_dance_diffusion.py +5 -4
- diffusers/pipelines/ddim/pipeline_ddim.py +4 -4
- diffusers/pipelines/ddpm/pipeline_ddpm.py +1 -1
- diffusers/pipelines/deepfloyd_if/pipeline_if.py +10 -10
- diffusers/pipelines/deepfloyd_if/pipeline_if_img2img.py +10 -10
- diffusers/pipelines/deepfloyd_if/pipeline_if_img2img_superresolution.py +10 -10
- diffusers/pipelines/deepfloyd_if/pipeline_if_inpainting.py +10 -10
- diffusers/pipelines/deepfloyd_if/pipeline_if_inpainting_superresolution.py +10 -10
- diffusers/pipelines/deepfloyd_if/pipeline_if_superresolution.py +10 -10
- diffusers/pipelines/deprecated/alt_diffusion/pipeline_alt_diffusion.py +8 -8
- diffusers/pipelines/deprecated/alt_diffusion/pipeline_alt_diffusion_img2img.py +5 -5
- diffusers/pipelines/deprecated/audio_diffusion/mel.py +1 -1
- diffusers/pipelines/deprecated/audio_diffusion/pipeline_audio_diffusion.py +3 -3
- diffusers/pipelines/deprecated/latent_diffusion_uncond/pipeline_latent_diffusion_uncond.py +1 -1
- diffusers/pipelines/deprecated/pndm/pipeline_pndm.py +2 -2
- diffusers/pipelines/deprecated/repaint/pipeline_repaint.py +4 -3
- diffusers/pipelines/deprecated/score_sde_ve/pipeline_score_sde_ve.py +1 -1
- diffusers/pipelines/deprecated/spectrogram_diffusion/continuous_encoder.py +1 -1
- diffusers/pipelines/deprecated/spectrogram_diffusion/midi_utils.py +1 -1
- diffusers/pipelines/deprecated/spectrogram_diffusion/notes_encoder.py +1 -1
- diffusers/pipelines/deprecated/spectrogram_diffusion/pipeline_spectrogram_diffusion.py +1 -1
- diffusers/pipelines/deprecated/stable_diffusion_variants/pipeline_cycle_diffusion.py +7 -7
- diffusers/pipelines/deprecated/stable_diffusion_variants/pipeline_onnx_stable_diffusion_inpaint_legacy.py +9 -9
- diffusers/pipelines/deprecated/stable_diffusion_variants/pipeline_stable_diffusion_inpaint_legacy.py +10 -10
- diffusers/pipelines/deprecated/stable_diffusion_variants/pipeline_stable_diffusion_model_editing.py +10 -8
- diffusers/pipelines/deprecated/stable_diffusion_variants/pipeline_stable_diffusion_paradigms.py +5 -5
- diffusers/pipelines/deprecated/stable_diffusion_variants/pipeline_stable_diffusion_pix2pix_zero.py +18 -18
- diffusers/pipelines/deprecated/stochastic_karras_ve/pipeline_stochastic_karras_ve.py +1 -1
- diffusers/pipelines/deprecated/versatile_diffusion/modeling_text_unet.py +2 -2
- diffusers/pipelines/deprecated/versatile_diffusion/pipeline_versatile_diffusion.py +6 -6
- diffusers/pipelines/deprecated/versatile_diffusion/pipeline_versatile_diffusion_dual_guided.py +5 -5
- diffusers/pipelines/deprecated/versatile_diffusion/pipeline_versatile_diffusion_image_variation.py +5 -5
- diffusers/pipelines/deprecated/versatile_diffusion/pipeline_versatile_diffusion_text_to_image.py +5 -5
- diffusers/pipelines/deprecated/vq_diffusion/pipeline_vq_diffusion.py +1 -1
- diffusers/pipelines/dit/pipeline_dit.py +1 -1
- diffusers/pipelines/easyanimate/pipeline_easyanimate.py +4 -4
- diffusers/pipelines/easyanimate/pipeline_easyanimate_control.py +4 -4
- diffusers/pipelines/easyanimate/pipeline_easyanimate_inpaint.py +7 -6
- diffusers/pipelines/flux/modeling_flux.py +1 -1
- diffusers/pipelines/flux/pipeline_flux.py +10 -17
- diffusers/pipelines/flux/pipeline_flux_control.py +6 -6
- diffusers/pipelines/flux/pipeline_flux_control_img2img.py +6 -6
- diffusers/pipelines/flux/pipeline_flux_control_inpaint.py +6 -6
- diffusers/pipelines/flux/pipeline_flux_controlnet.py +6 -6
- diffusers/pipelines/flux/pipeline_flux_controlnet_image_to_image.py +30 -22
- diffusers/pipelines/flux/pipeline_flux_controlnet_inpainting.py +2 -1
- diffusers/pipelines/flux/pipeline_flux_fill.py +6 -6
- diffusers/pipelines/flux/pipeline_flux_img2img.py +39 -6
- diffusers/pipelines/flux/pipeline_flux_inpaint.py +11 -6
- diffusers/pipelines/flux/pipeline_flux_prior_redux.py +1 -1
- diffusers/pipelines/free_init_utils.py +2 -2
- diffusers/pipelines/free_noise_utils.py +3 -3
- diffusers/pipelines/hidream_image/__init__.py +47 -0
- diffusers/pipelines/hidream_image/pipeline_hidream_image.py +1026 -0
- diffusers/pipelines/hidream_image/pipeline_output.py +35 -0
- diffusers/pipelines/hunyuan_video/__init__.py +2 -0
- diffusers/pipelines/hunyuan_video/pipeline_hunyuan_skyreels_image2video.py +8 -8
- diffusers/pipelines/hunyuan_video/pipeline_hunyuan_video.py +8 -8
- diffusers/pipelines/hunyuan_video/pipeline_hunyuan_video_framepack.py +1114 -0
- diffusers/pipelines/hunyuan_video/pipeline_hunyuan_video_image2video.py +71 -15
- diffusers/pipelines/hunyuan_video/pipeline_output.py +19 -0
- diffusers/pipelines/hunyuandit/pipeline_hunyuandit.py +8 -8
- diffusers/pipelines/i2vgen_xl/pipeline_i2vgen_xl.py +10 -8
- diffusers/pipelines/kandinsky/pipeline_kandinsky.py +6 -6
- diffusers/pipelines/kandinsky/pipeline_kandinsky_combined.py +34 -34
- diffusers/pipelines/kandinsky/pipeline_kandinsky_img2img.py +19 -26
- diffusers/pipelines/kandinsky/pipeline_kandinsky_inpaint.py +7 -7
- diffusers/pipelines/kandinsky/pipeline_kandinsky_prior.py +11 -11
- diffusers/pipelines/kandinsky2_2/pipeline_kandinsky2_2.py +6 -6
- diffusers/pipelines/kandinsky2_2/pipeline_kandinsky2_2_combined.py +35 -35
- diffusers/pipelines/kandinsky2_2/pipeline_kandinsky2_2_controlnet.py +6 -6
- diffusers/pipelines/kandinsky2_2/pipeline_kandinsky2_2_controlnet_img2img.py +17 -39
- diffusers/pipelines/kandinsky2_2/pipeline_kandinsky2_2_img2img.py +17 -45
- diffusers/pipelines/kandinsky2_2/pipeline_kandinsky2_2_inpainting.py +7 -7
- diffusers/pipelines/kandinsky2_2/pipeline_kandinsky2_2_prior.py +10 -10
- diffusers/pipelines/kandinsky2_2/pipeline_kandinsky2_2_prior_emb2emb.py +10 -10
- diffusers/pipelines/kandinsky3/pipeline_kandinsky3.py +7 -7
- diffusers/pipelines/kandinsky3/pipeline_kandinsky3_img2img.py +17 -38
- diffusers/pipelines/kolors/pipeline_kolors.py +10 -10
- diffusers/pipelines/kolors/pipeline_kolors_img2img.py +12 -12
- diffusers/pipelines/kolors/text_encoder.py +3 -3
- diffusers/pipelines/kolors/tokenizer.py +1 -1
- diffusers/pipelines/latent_consistency_models/pipeline_latent_consistency_img2img.py +2 -2
- diffusers/pipelines/latent_consistency_models/pipeline_latent_consistency_text2img.py +2 -2
- diffusers/pipelines/latent_diffusion/pipeline_latent_diffusion.py +1 -1
- diffusers/pipelines/latent_diffusion/pipeline_latent_diffusion_superresolution.py +3 -3
- diffusers/pipelines/latte/pipeline_latte.py +12 -12
- diffusers/pipelines/ledits_pp/pipeline_leditspp_stable_diffusion.py +13 -13
- diffusers/pipelines/ledits_pp/pipeline_leditspp_stable_diffusion_xl.py +17 -16
- diffusers/pipelines/ltx/__init__.py +4 -0
- diffusers/pipelines/ltx/modeling_latent_upsampler.py +188 -0
- diffusers/pipelines/ltx/pipeline_ltx.py +51 -6
- diffusers/pipelines/ltx/pipeline_ltx_condition.py +107 -29
- diffusers/pipelines/ltx/pipeline_ltx_image2video.py +50 -6
- diffusers/pipelines/ltx/pipeline_ltx_latent_upsample.py +277 -0
- diffusers/pipelines/lumina/pipeline_lumina.py +13 -13
- diffusers/pipelines/lumina2/pipeline_lumina2.py +10 -10
- diffusers/pipelines/marigold/marigold_image_processing.py +2 -2
- diffusers/pipelines/mochi/pipeline_mochi.py +6 -6
- diffusers/pipelines/musicldm/pipeline_musicldm.py +16 -13
- diffusers/pipelines/omnigen/pipeline_omnigen.py +13 -11
- diffusers/pipelines/omnigen/processor_omnigen.py +8 -3
- diffusers/pipelines/onnx_utils.py +15 -2
- diffusers/pipelines/pag/pag_utils.py +2 -2
- diffusers/pipelines/pag/pipeline_pag_controlnet_sd.py +12 -8
- diffusers/pipelines/pag/pipeline_pag_controlnet_sd_inpaint.py +7 -7
- diffusers/pipelines/pag/pipeline_pag_controlnet_sd_xl.py +10 -6
- diffusers/pipelines/pag/pipeline_pag_controlnet_sd_xl_img2img.py +14 -14
- diffusers/pipelines/pag/pipeline_pag_hunyuandit.py +8 -8
- diffusers/pipelines/pag/pipeline_pag_kolors.py +10 -10
- diffusers/pipelines/pag/pipeline_pag_pixart_sigma.py +11 -11
- diffusers/pipelines/pag/pipeline_pag_sana.py +18 -12
- diffusers/pipelines/pag/pipeline_pag_sd.py +8 -8
- diffusers/pipelines/pag/pipeline_pag_sd_3.py +7 -7
- diffusers/pipelines/pag/pipeline_pag_sd_3_img2img.py +7 -7
- diffusers/pipelines/pag/pipeline_pag_sd_animatediff.py +6 -6
- diffusers/pipelines/pag/pipeline_pag_sd_img2img.py +5 -5
- diffusers/pipelines/pag/pipeline_pag_sd_inpaint.py +8 -8
- diffusers/pipelines/pag/pipeline_pag_sd_xl.py +16 -15
- diffusers/pipelines/pag/pipeline_pag_sd_xl_img2img.py +18 -17
- diffusers/pipelines/pag/pipeline_pag_sd_xl_inpaint.py +12 -12
- diffusers/pipelines/paint_by_example/image_encoder.py +1 -1
- diffusers/pipelines/paint_by_example/pipeline_paint_by_example.py +8 -7
- diffusers/pipelines/pia/pipeline_pia.py +8 -6
- diffusers/pipelines/pipeline_flax_utils.py +3 -4
- diffusers/pipelines/pipeline_loading_utils.py +89 -13
- diffusers/pipelines/pipeline_utils.py +105 -33
- diffusers/pipelines/pixart_alpha/pipeline_pixart_alpha.py +11 -11
- diffusers/pipelines/pixart_alpha/pipeline_pixart_sigma.py +11 -11
- diffusers/pipelines/sana/__init__.py +4 -0
- diffusers/pipelines/sana/pipeline_sana.py +23 -21
- diffusers/pipelines/sana/pipeline_sana_controlnet.py +1106 -0
- diffusers/pipelines/sana/pipeline_sana_sprint.py +23 -19
- diffusers/pipelines/sana/pipeline_sana_sprint_img2img.py +981 -0
- diffusers/pipelines/semantic_stable_diffusion/pipeline_semantic_stable_diffusion.py +7 -6
- diffusers/pipelines/shap_e/camera.py +1 -1
- diffusers/pipelines/shap_e/pipeline_shap_e.py +1 -1
- diffusers/pipelines/shap_e/pipeline_shap_e_img2img.py +1 -1
- diffusers/pipelines/shap_e/renderer.py +3 -3
- diffusers/pipelines/stable_audio/modeling_stable_audio.py +1 -1
- diffusers/pipelines/stable_audio/pipeline_stable_audio.py +5 -5
- diffusers/pipelines/stable_cascade/pipeline_stable_cascade.py +8 -8
- diffusers/pipelines/stable_cascade/pipeline_stable_cascade_combined.py +13 -13
- diffusers/pipelines/stable_cascade/pipeline_stable_cascade_prior.py +9 -9
- diffusers/pipelines/stable_diffusion/__init__.py +0 -7
- diffusers/pipelines/stable_diffusion/clip_image_project_model.py +1 -1
- diffusers/pipelines/stable_diffusion/convert_from_ckpt.py +11 -4
- diffusers/pipelines/stable_diffusion/pipeline_flax_stable_diffusion.py +1 -1
- diffusers/pipelines/stable_diffusion/pipeline_flax_stable_diffusion_img2img.py +1 -1
- diffusers/pipelines/stable_diffusion/pipeline_flax_stable_diffusion_inpaint.py +1 -1
- diffusers/pipelines/stable_diffusion/pipeline_onnx_stable_diffusion.py +10 -10
- diffusers/pipelines/stable_diffusion/pipeline_onnx_stable_diffusion_img2img.py +10 -10
- diffusers/pipelines/stable_diffusion/pipeline_onnx_stable_diffusion_inpaint.py +10 -10
- diffusers/pipelines/stable_diffusion/pipeline_onnx_stable_diffusion_upscale.py +9 -9
- diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion.py +8 -8
- diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion_depth2img.py +5 -5
- diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion_image_variation.py +5 -5
- diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion_img2img.py +5 -5
- diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion_inpaint.py +5 -5
- diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion_instruct_pix2pix.py +5 -5
- diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion_latent_upscale.py +4 -4
- diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion_upscale.py +5 -5
- diffusers/pipelines/stable_diffusion/pipeline_stable_unclip.py +7 -7
- diffusers/pipelines/stable_diffusion/pipeline_stable_unclip_img2img.py +5 -5
- diffusers/pipelines/stable_diffusion/safety_checker.py +1 -1
- diffusers/pipelines/stable_diffusion/safety_checker_flax.py +1 -1
- diffusers/pipelines/stable_diffusion/stable_unclip_image_normalizer.py +1 -1
- diffusers/pipelines/stable_diffusion_3/pipeline_stable_diffusion_3.py +7 -7
- diffusers/pipelines/stable_diffusion_3/pipeline_stable_diffusion_3_img2img.py +7 -7
- diffusers/pipelines/stable_diffusion_3/pipeline_stable_diffusion_3_inpaint.py +7 -7
- diffusers/pipelines/stable_diffusion_attend_and_excite/pipeline_stable_diffusion_attend_and_excite.py +12 -8
- diffusers/pipelines/stable_diffusion_diffedit/pipeline_stable_diffusion_diffedit.py +15 -9
- diffusers/pipelines/stable_diffusion_gligen/pipeline_stable_diffusion_gligen.py +11 -9
- diffusers/pipelines/stable_diffusion_gligen/pipeline_stable_diffusion_gligen_text_image.py +11 -9
- diffusers/pipelines/stable_diffusion_k_diffusion/pipeline_stable_diffusion_k_diffusion.py +18 -12
- diffusers/pipelines/stable_diffusion_k_diffusion/pipeline_stable_diffusion_xl_k_diffusion.py +11 -8
- diffusers/pipelines/stable_diffusion_ldm3d/pipeline_stable_diffusion_ldm3d.py +11 -8
- diffusers/pipelines/stable_diffusion_panorama/pipeline_stable_diffusion_panorama.py +15 -12
- diffusers/pipelines/stable_diffusion_safe/pipeline_stable_diffusion_safe.py +8 -6
- diffusers/pipelines/stable_diffusion_safe/safety_checker.py +1 -1
- diffusers/pipelines/stable_diffusion_sag/pipeline_stable_diffusion_sag.py +15 -11
- diffusers/pipelines/stable_diffusion_xl/pipeline_flax_stable_diffusion_xl.py +1 -1
- diffusers/pipelines/stable_diffusion_xl/pipeline_stable_diffusion_xl.py +16 -15
- diffusers/pipelines/stable_diffusion_xl/pipeline_stable_diffusion_xl_img2img.py +18 -17
- diffusers/pipelines/stable_diffusion_xl/pipeline_stable_diffusion_xl_inpaint.py +12 -12
- diffusers/pipelines/stable_diffusion_xl/pipeline_stable_diffusion_xl_instruct_pix2pix.py +16 -15
- diffusers/pipelines/stable_video_diffusion/pipeline_stable_video_diffusion.py +3 -3
- diffusers/pipelines/t2i_adapter/pipeline_stable_diffusion_adapter.py +12 -12
- diffusers/pipelines/t2i_adapter/pipeline_stable_diffusion_xl_adapter.py +18 -17
- diffusers/pipelines/text_to_video_synthesis/pipeline_text_to_video_synth.py +12 -7
- diffusers/pipelines/text_to_video_synthesis/pipeline_text_to_video_synth_img2img.py +12 -7
- diffusers/pipelines/text_to_video_synthesis/pipeline_text_to_video_zero.py +15 -13
- diffusers/pipelines/text_to_video_synthesis/pipeline_text_to_video_zero_sdxl.py +24 -21
- diffusers/pipelines/unclip/pipeline_unclip.py +4 -3
- diffusers/pipelines/unclip/pipeline_unclip_image_variation.py +4 -3
- diffusers/pipelines/unclip/text_proj.py +2 -2
- diffusers/pipelines/unidiffuser/modeling_text_decoder.py +2 -2
- diffusers/pipelines/unidiffuser/modeling_uvit.py +1 -1
- diffusers/pipelines/unidiffuser/pipeline_unidiffuser.py +8 -7
- diffusers/pipelines/visualcloze/__init__.py +52 -0
- diffusers/pipelines/visualcloze/pipeline_visualcloze_combined.py +444 -0
- diffusers/pipelines/visualcloze/pipeline_visualcloze_generation.py +952 -0
- diffusers/pipelines/visualcloze/visualcloze_utils.py +251 -0
- diffusers/pipelines/wan/__init__.py +2 -0
- diffusers/pipelines/wan/pipeline_wan.py +17 -12
- diffusers/pipelines/wan/pipeline_wan_i2v.py +42 -20
- diffusers/pipelines/wan/pipeline_wan_vace.py +976 -0
- diffusers/pipelines/wan/pipeline_wan_video2video.py +18 -18
- diffusers/pipelines/wuerstchen/modeling_paella_vq_model.py +1 -1
- diffusers/pipelines/wuerstchen/modeling_wuerstchen_diffnext.py +1 -1
- diffusers/pipelines/wuerstchen/modeling_wuerstchen_prior.py +1 -1
- diffusers/pipelines/wuerstchen/pipeline_wuerstchen.py +8 -8
- diffusers/pipelines/wuerstchen/pipeline_wuerstchen_combined.py +16 -15
- diffusers/pipelines/wuerstchen/pipeline_wuerstchen_prior.py +6 -6
- diffusers/quantizers/__init__.py +179 -1
- diffusers/quantizers/base.py +6 -1
- diffusers/quantizers/bitsandbytes/bnb_quantizer.py +4 -0
- diffusers/quantizers/bitsandbytes/utils.py +10 -7
- diffusers/quantizers/gguf/gguf_quantizer.py +13 -4
- diffusers/quantizers/gguf/utils.py +16 -13
- diffusers/quantizers/quantization_config.py +18 -16
- diffusers/quantizers/quanto/quanto_quantizer.py +4 -0
- diffusers/quantizers/torchao/torchao_quantizer.py +5 -1
- diffusers/schedulers/__init__.py +3 -1
- diffusers/schedulers/deprecated/scheduling_karras_ve.py +4 -3
- diffusers/schedulers/deprecated/scheduling_sde_vp.py +1 -1
- diffusers/schedulers/scheduling_consistency_models.py +1 -1
- diffusers/schedulers/scheduling_cosine_dpmsolver_multistep.py +10 -5
- diffusers/schedulers/scheduling_ddim.py +8 -8
- diffusers/schedulers/scheduling_ddim_cogvideox.py +5 -5
- diffusers/schedulers/scheduling_ddim_flax.py +6 -6
- diffusers/schedulers/scheduling_ddim_inverse.py +6 -6
- diffusers/schedulers/scheduling_ddim_parallel.py +22 -22
- diffusers/schedulers/scheduling_ddpm.py +9 -9
- diffusers/schedulers/scheduling_ddpm_flax.py +7 -7
- diffusers/schedulers/scheduling_ddpm_parallel.py +18 -18
- diffusers/schedulers/scheduling_ddpm_wuerstchen.py +2 -2
- diffusers/schedulers/scheduling_deis_multistep.py +8 -8
- diffusers/schedulers/scheduling_dpm_cogvideox.py +5 -5
- diffusers/schedulers/scheduling_dpmsolver_multistep.py +12 -12
- diffusers/schedulers/scheduling_dpmsolver_multistep_flax.py +22 -20
- diffusers/schedulers/scheduling_dpmsolver_multistep_inverse.py +11 -11
- diffusers/schedulers/scheduling_dpmsolver_sde.py +2 -2
- diffusers/schedulers/scheduling_dpmsolver_singlestep.py +13 -13
- diffusers/schedulers/scheduling_edm_dpmsolver_multistep.py +13 -8
- diffusers/schedulers/scheduling_edm_euler.py +20 -11
- diffusers/schedulers/scheduling_euler_ancestral_discrete.py +3 -3
- diffusers/schedulers/scheduling_euler_discrete.py +3 -3
- diffusers/schedulers/scheduling_euler_discrete_flax.py +3 -3
- diffusers/schedulers/scheduling_flow_match_euler_discrete.py +20 -5
- diffusers/schedulers/scheduling_flow_match_heun_discrete.py +1 -1
- diffusers/schedulers/scheduling_flow_match_lcm.py +561 -0
- diffusers/schedulers/scheduling_heun_discrete.py +2 -2
- diffusers/schedulers/scheduling_ipndm.py +2 -2
- diffusers/schedulers/scheduling_k_dpm_2_ancestral_discrete.py +2 -2
- diffusers/schedulers/scheduling_k_dpm_2_discrete.py +2 -2
- diffusers/schedulers/scheduling_karras_ve_flax.py +5 -5
- diffusers/schedulers/scheduling_lcm.py +3 -3
- diffusers/schedulers/scheduling_lms_discrete.py +2 -2
- diffusers/schedulers/scheduling_lms_discrete_flax.py +1 -1
- diffusers/schedulers/scheduling_pndm.py +4 -4
- diffusers/schedulers/scheduling_pndm_flax.py +4 -4
- diffusers/schedulers/scheduling_repaint.py +9 -9
- diffusers/schedulers/scheduling_sasolver.py +15 -15
- diffusers/schedulers/scheduling_scm.py +1 -1
- diffusers/schedulers/scheduling_sde_ve.py +1 -1
- diffusers/schedulers/scheduling_sde_ve_flax.py +2 -2
- diffusers/schedulers/scheduling_tcd.py +3 -3
- diffusers/schedulers/scheduling_unclip.py +5 -5
- diffusers/schedulers/scheduling_unipc_multistep.py +11 -11
- diffusers/schedulers/scheduling_utils.py +1 -1
- diffusers/schedulers/scheduling_utils_flax.py +1 -1
- diffusers/schedulers/scheduling_vq_diffusion.py +1 -1
- diffusers/training_utils.py +13 -5
- diffusers/utils/__init__.py +5 -0
- diffusers/utils/accelerate_utils.py +1 -1
- diffusers/utils/doc_utils.py +1 -1
- diffusers/utils/dummy_pt_objects.py +120 -0
- diffusers/utils/dummy_torch_and_transformers_objects.py +225 -0
- diffusers/utils/dynamic_modules_utils.py +21 -3
- diffusers/utils/export_utils.py +1 -1
- diffusers/utils/import_utils.py +81 -18
- diffusers/utils/logging.py +1 -1
- diffusers/utils/outputs.py +2 -1
- diffusers/utils/peft_utils.py +91 -8
- diffusers/utils/state_dict_utils.py +20 -3
- diffusers/utils/testing_utils.py +59 -7
- diffusers/utils/torch_utils.py +25 -5
- diffusers/video_processor.py +2 -2
- {diffusers-0.33.0.dist-info → diffusers-0.34.0.dist-info}/METADATA +3 -3
- diffusers-0.34.0.dist-info/RECORD +639 -0
- diffusers-0.33.0.dist-info/RECORD +0 -608
- {diffusers-0.33.0.dist-info → diffusers-0.34.0.dist-info}/LICENSE +0 -0
- {diffusers-0.33.0.dist-info → diffusers-0.34.0.dist-info}/WHEEL +0 -0
- {diffusers-0.33.0.dist-info → diffusers-0.34.0.dist-info}/entry_points.txt +0 -0
- {diffusers-0.33.0.dist-info → diffusers-0.34.0.dist-info}/top_level.txt +0 -0
@@ -160,6 +160,21 @@ class AutoencoderKLCogVideoX(metaclass=DummyObject):
|
|
160
160
|
requires_backends(cls, ["torch"])
|
161
161
|
|
162
162
|
|
163
|
+
class AutoencoderKLCosmos(metaclass=DummyObject):
|
164
|
+
_backends = ["torch"]
|
165
|
+
|
166
|
+
def __init__(self, *args, **kwargs):
|
167
|
+
requires_backends(self, ["torch"])
|
168
|
+
|
169
|
+
@classmethod
|
170
|
+
def from_config(cls, *args, **kwargs):
|
171
|
+
requires_backends(cls, ["torch"])
|
172
|
+
|
173
|
+
@classmethod
|
174
|
+
def from_pretrained(cls, *args, **kwargs):
|
175
|
+
requires_backends(cls, ["torch"])
|
176
|
+
|
177
|
+
|
163
178
|
class AutoencoderKLHunyuanVideo(metaclass=DummyObject):
|
164
179
|
_backends = ["torch"]
|
165
180
|
|
@@ -310,6 +325,21 @@ class CacheMixin(metaclass=DummyObject):
|
|
310
325
|
requires_backends(cls, ["torch"])
|
311
326
|
|
312
327
|
|
328
|
+
class ChromaTransformer2DModel(metaclass=DummyObject):
|
329
|
+
_backends = ["torch"]
|
330
|
+
|
331
|
+
def __init__(self, *args, **kwargs):
|
332
|
+
requires_backends(self, ["torch"])
|
333
|
+
|
334
|
+
@classmethod
|
335
|
+
def from_config(cls, *args, **kwargs):
|
336
|
+
requires_backends(cls, ["torch"])
|
337
|
+
|
338
|
+
@classmethod
|
339
|
+
def from_pretrained(cls, *args, **kwargs):
|
340
|
+
requires_backends(cls, ["torch"])
|
341
|
+
|
342
|
+
|
313
343
|
class CogVideoXTransformer3DModel(metaclass=DummyObject):
|
314
344
|
_backends = ["torch"]
|
315
345
|
|
@@ -430,6 +460,21 @@ class ControlNetXSAdapter(metaclass=DummyObject):
|
|
430
460
|
requires_backends(cls, ["torch"])
|
431
461
|
|
432
462
|
|
463
|
+
class CosmosTransformer3DModel(metaclass=DummyObject):
|
464
|
+
_backends = ["torch"]
|
465
|
+
|
466
|
+
def __init__(self, *args, **kwargs):
|
467
|
+
requires_backends(self, ["torch"])
|
468
|
+
|
469
|
+
@classmethod
|
470
|
+
def from_config(cls, *args, **kwargs):
|
471
|
+
requires_backends(cls, ["torch"])
|
472
|
+
|
473
|
+
@classmethod
|
474
|
+
def from_pretrained(cls, *args, **kwargs):
|
475
|
+
requires_backends(cls, ["torch"])
|
476
|
+
|
477
|
+
|
433
478
|
class DiTTransformer2DModel(metaclass=DummyObject):
|
434
479
|
_backends = ["torch"]
|
435
480
|
|
@@ -505,6 +550,21 @@ class FluxTransformer2DModel(metaclass=DummyObject):
|
|
505
550
|
requires_backends(cls, ["torch"])
|
506
551
|
|
507
552
|
|
553
|
+
class HiDreamImageTransformer2DModel(metaclass=DummyObject):
|
554
|
+
_backends = ["torch"]
|
555
|
+
|
556
|
+
def __init__(self, *args, **kwargs):
|
557
|
+
requires_backends(self, ["torch"])
|
558
|
+
|
559
|
+
@classmethod
|
560
|
+
def from_config(cls, *args, **kwargs):
|
561
|
+
requires_backends(cls, ["torch"])
|
562
|
+
|
563
|
+
@classmethod
|
564
|
+
def from_pretrained(cls, *args, **kwargs):
|
565
|
+
requires_backends(cls, ["torch"])
|
566
|
+
|
567
|
+
|
508
568
|
class HunyuanDiT2DControlNetModel(metaclass=DummyObject):
|
509
569
|
_backends = ["torch"]
|
510
570
|
|
@@ -550,6 +610,21 @@ class HunyuanDiT2DMultiControlNetModel(metaclass=DummyObject):
|
|
550
610
|
requires_backends(cls, ["torch"])
|
551
611
|
|
552
612
|
|
613
|
+
class HunyuanVideoFramepackTransformer3DModel(metaclass=DummyObject):
|
614
|
+
_backends = ["torch"]
|
615
|
+
|
616
|
+
def __init__(self, *args, **kwargs):
|
617
|
+
requires_backends(self, ["torch"])
|
618
|
+
|
619
|
+
@classmethod
|
620
|
+
def from_config(cls, *args, **kwargs):
|
621
|
+
requires_backends(cls, ["torch"])
|
622
|
+
|
623
|
+
@classmethod
|
624
|
+
def from_pretrained(cls, *args, **kwargs):
|
625
|
+
requires_backends(cls, ["torch"])
|
626
|
+
|
627
|
+
|
553
628
|
class HunyuanVideoTransformer3DModel(metaclass=DummyObject):
|
554
629
|
_backends = ["torch"]
|
555
630
|
|
@@ -775,6 +850,21 @@ class PriorTransformer(metaclass=DummyObject):
|
|
775
850
|
requires_backends(cls, ["torch"])
|
776
851
|
|
777
852
|
|
853
|
+
class SanaControlNetModel(metaclass=DummyObject):
|
854
|
+
_backends = ["torch"]
|
855
|
+
|
856
|
+
def __init__(self, *args, **kwargs):
|
857
|
+
requires_backends(self, ["torch"])
|
858
|
+
|
859
|
+
@classmethod
|
860
|
+
def from_config(cls, *args, **kwargs):
|
861
|
+
requires_backends(cls, ["torch"])
|
862
|
+
|
863
|
+
@classmethod
|
864
|
+
def from_pretrained(cls, *args, **kwargs):
|
865
|
+
requires_backends(cls, ["torch"])
|
866
|
+
|
867
|
+
|
778
868
|
class SanaTransformer2DModel(metaclass=DummyObject):
|
779
869
|
_backends = ["torch"]
|
780
870
|
|
@@ -1075,6 +1165,21 @@ class WanTransformer3DModel(metaclass=DummyObject):
|
|
1075
1165
|
requires_backends(cls, ["torch"])
|
1076
1166
|
|
1077
1167
|
|
1168
|
+
class WanVACETransformer3DModel(metaclass=DummyObject):
|
1169
|
+
_backends = ["torch"]
|
1170
|
+
|
1171
|
+
def __init__(self, *args, **kwargs):
|
1172
|
+
requires_backends(self, ["torch"])
|
1173
|
+
|
1174
|
+
@classmethod
|
1175
|
+
def from_config(cls, *args, **kwargs):
|
1176
|
+
requires_backends(cls, ["torch"])
|
1177
|
+
|
1178
|
+
@classmethod
|
1179
|
+
def from_pretrained(cls, *args, **kwargs):
|
1180
|
+
requires_backends(cls, ["torch"])
|
1181
|
+
|
1182
|
+
|
1078
1183
|
def get_constant_schedule(*args, **kwargs):
|
1079
1184
|
requires_backends(get_constant_schedule, ["torch"])
|
1080
1185
|
|
@@ -1733,6 +1838,21 @@ class FlowMatchHeunDiscreteScheduler(metaclass=DummyObject):
|
|
1733
1838
|
requires_backends(cls, ["torch"])
|
1734
1839
|
|
1735
1840
|
|
1841
|
+
class FlowMatchLCMScheduler(metaclass=DummyObject):
|
1842
|
+
_backends = ["torch"]
|
1843
|
+
|
1844
|
+
def __init__(self, *args, **kwargs):
|
1845
|
+
requires_backends(self, ["torch"])
|
1846
|
+
|
1847
|
+
@classmethod
|
1848
|
+
def from_config(cls, *args, **kwargs):
|
1849
|
+
requires_backends(cls, ["torch"])
|
1850
|
+
|
1851
|
+
@classmethod
|
1852
|
+
def from_pretrained(cls, *args, **kwargs):
|
1853
|
+
requires_backends(cls, ["torch"])
|
1854
|
+
|
1855
|
+
|
1736
1856
|
class HeunDiscreteScheduler(metaclass=DummyObject):
|
1737
1857
|
_backends = ["torch"]
|
1738
1858
|
|
@@ -272,6 +272,36 @@ class AuraFlowPipeline(metaclass=DummyObject):
|
|
272
272
|
requires_backends(cls, ["torch", "transformers"])
|
273
273
|
|
274
274
|
|
275
|
+
class ChromaImg2ImgPipeline(metaclass=DummyObject):
|
276
|
+
_backends = ["torch", "transformers"]
|
277
|
+
|
278
|
+
def __init__(self, *args, **kwargs):
|
279
|
+
requires_backends(self, ["torch", "transformers"])
|
280
|
+
|
281
|
+
@classmethod
|
282
|
+
def from_config(cls, *args, **kwargs):
|
283
|
+
requires_backends(cls, ["torch", "transformers"])
|
284
|
+
|
285
|
+
@classmethod
|
286
|
+
def from_pretrained(cls, *args, **kwargs):
|
287
|
+
requires_backends(cls, ["torch", "transformers"])
|
288
|
+
|
289
|
+
|
290
|
+
class ChromaPipeline(metaclass=DummyObject):
|
291
|
+
_backends = ["torch", "transformers"]
|
292
|
+
|
293
|
+
def __init__(self, *args, **kwargs):
|
294
|
+
requires_backends(self, ["torch", "transformers"])
|
295
|
+
|
296
|
+
@classmethod
|
297
|
+
def from_config(cls, *args, **kwargs):
|
298
|
+
requires_backends(cls, ["torch", "transformers"])
|
299
|
+
|
300
|
+
@classmethod
|
301
|
+
def from_pretrained(cls, *args, **kwargs):
|
302
|
+
requires_backends(cls, ["torch", "transformers"])
|
303
|
+
|
304
|
+
|
275
305
|
class CLIPImageProjection(metaclass=DummyObject):
|
276
306
|
_backends = ["torch", "transformers"]
|
277
307
|
|
@@ -392,6 +422,81 @@ class CogView4Pipeline(metaclass=DummyObject):
|
|
392
422
|
requires_backends(cls, ["torch", "transformers"])
|
393
423
|
|
394
424
|
|
425
|
+
class ConsisIDPipeline(metaclass=DummyObject):
|
426
|
+
_backends = ["torch", "transformers"]
|
427
|
+
|
428
|
+
def __init__(self, *args, **kwargs):
|
429
|
+
requires_backends(self, ["torch", "transformers"])
|
430
|
+
|
431
|
+
@classmethod
|
432
|
+
def from_config(cls, *args, **kwargs):
|
433
|
+
requires_backends(cls, ["torch", "transformers"])
|
434
|
+
|
435
|
+
@classmethod
|
436
|
+
def from_pretrained(cls, *args, **kwargs):
|
437
|
+
requires_backends(cls, ["torch", "transformers"])
|
438
|
+
|
439
|
+
|
440
|
+
class Cosmos2TextToImagePipeline(metaclass=DummyObject):
|
441
|
+
_backends = ["torch", "transformers"]
|
442
|
+
|
443
|
+
def __init__(self, *args, **kwargs):
|
444
|
+
requires_backends(self, ["torch", "transformers"])
|
445
|
+
|
446
|
+
@classmethod
|
447
|
+
def from_config(cls, *args, **kwargs):
|
448
|
+
requires_backends(cls, ["torch", "transformers"])
|
449
|
+
|
450
|
+
@classmethod
|
451
|
+
def from_pretrained(cls, *args, **kwargs):
|
452
|
+
requires_backends(cls, ["torch", "transformers"])
|
453
|
+
|
454
|
+
|
455
|
+
class Cosmos2VideoToWorldPipeline(metaclass=DummyObject):
|
456
|
+
_backends = ["torch", "transformers"]
|
457
|
+
|
458
|
+
def __init__(self, *args, **kwargs):
|
459
|
+
requires_backends(self, ["torch", "transformers"])
|
460
|
+
|
461
|
+
@classmethod
|
462
|
+
def from_config(cls, *args, **kwargs):
|
463
|
+
requires_backends(cls, ["torch", "transformers"])
|
464
|
+
|
465
|
+
@classmethod
|
466
|
+
def from_pretrained(cls, *args, **kwargs):
|
467
|
+
requires_backends(cls, ["torch", "transformers"])
|
468
|
+
|
469
|
+
|
470
|
+
class CosmosTextToWorldPipeline(metaclass=DummyObject):
|
471
|
+
_backends = ["torch", "transformers"]
|
472
|
+
|
473
|
+
def __init__(self, *args, **kwargs):
|
474
|
+
requires_backends(self, ["torch", "transformers"])
|
475
|
+
|
476
|
+
@classmethod
|
477
|
+
def from_config(cls, *args, **kwargs):
|
478
|
+
requires_backends(cls, ["torch", "transformers"])
|
479
|
+
|
480
|
+
@classmethod
|
481
|
+
def from_pretrained(cls, *args, **kwargs):
|
482
|
+
requires_backends(cls, ["torch", "transformers"])
|
483
|
+
|
484
|
+
|
485
|
+
class CosmosVideoToWorldPipeline(metaclass=DummyObject):
|
486
|
+
_backends = ["torch", "transformers"]
|
487
|
+
|
488
|
+
def __init__(self, *args, **kwargs):
|
489
|
+
requires_backends(self, ["torch", "transformers"])
|
490
|
+
|
491
|
+
@classmethod
|
492
|
+
def from_config(cls, *args, **kwargs):
|
493
|
+
requires_backends(cls, ["torch", "transformers"])
|
494
|
+
|
495
|
+
@classmethod
|
496
|
+
def from_pretrained(cls, *args, **kwargs):
|
497
|
+
requires_backends(cls, ["torch", "transformers"])
|
498
|
+
|
499
|
+
|
395
500
|
class CycleDiffusionPipeline(metaclass=DummyObject):
|
396
501
|
_backends = ["torch", "transformers"]
|
397
502
|
|
@@ -617,6 +722,21 @@ class FluxPriorReduxPipeline(metaclass=DummyObject):
|
|
617
722
|
requires_backends(cls, ["torch", "transformers"])
|
618
723
|
|
619
724
|
|
725
|
+
class HiDreamImagePipeline(metaclass=DummyObject):
|
726
|
+
_backends = ["torch", "transformers"]
|
727
|
+
|
728
|
+
def __init__(self, *args, **kwargs):
|
729
|
+
requires_backends(self, ["torch", "transformers"])
|
730
|
+
|
731
|
+
@classmethod
|
732
|
+
def from_config(cls, *args, **kwargs):
|
733
|
+
requires_backends(cls, ["torch", "transformers"])
|
734
|
+
|
735
|
+
@classmethod
|
736
|
+
def from_pretrained(cls, *args, **kwargs):
|
737
|
+
requires_backends(cls, ["torch", "transformers"])
|
738
|
+
|
739
|
+
|
620
740
|
class HunyuanDiTControlNetPipeline(metaclass=DummyObject):
|
621
741
|
_backends = ["torch", "transformers"]
|
622
742
|
|
@@ -677,6 +797,21 @@ class HunyuanSkyreelsImageToVideoPipeline(metaclass=DummyObject):
|
|
677
797
|
requires_backends(cls, ["torch", "transformers"])
|
678
798
|
|
679
799
|
|
800
|
+
class HunyuanVideoFramepackPipeline(metaclass=DummyObject):
|
801
|
+
_backends = ["torch", "transformers"]
|
802
|
+
|
803
|
+
def __init__(self, *args, **kwargs):
|
804
|
+
requires_backends(self, ["torch", "transformers"])
|
805
|
+
|
806
|
+
@classmethod
|
807
|
+
def from_config(cls, *args, **kwargs):
|
808
|
+
requires_backends(cls, ["torch", "transformers"])
|
809
|
+
|
810
|
+
@classmethod
|
811
|
+
def from_pretrained(cls, *args, **kwargs):
|
812
|
+
requires_backends(cls, ["torch", "transformers"])
|
813
|
+
|
814
|
+
|
680
815
|
class HunyuanVideoImageToVideoPipeline(metaclass=DummyObject):
|
681
816
|
_backends = ["torch", "transformers"]
|
682
817
|
|
@@ -1232,6 +1367,21 @@ class LTXImageToVideoPipeline(metaclass=DummyObject):
|
|
1232
1367
|
requires_backends(cls, ["torch", "transformers"])
|
1233
1368
|
|
1234
1369
|
|
1370
|
+
class LTXLatentUpsamplePipeline(metaclass=DummyObject):
|
1371
|
+
_backends = ["torch", "transformers"]
|
1372
|
+
|
1373
|
+
def __init__(self, *args, **kwargs):
|
1374
|
+
requires_backends(self, ["torch", "transformers"])
|
1375
|
+
|
1376
|
+
@classmethod
|
1377
|
+
def from_config(cls, *args, **kwargs):
|
1378
|
+
requires_backends(cls, ["torch", "transformers"])
|
1379
|
+
|
1380
|
+
@classmethod
|
1381
|
+
def from_pretrained(cls, *args, **kwargs):
|
1382
|
+
requires_backends(cls, ["torch", "transformers"])
|
1383
|
+
|
1384
|
+
|
1235
1385
|
class LTXPipeline(metaclass=DummyObject):
|
1236
1386
|
_backends = ["torch", "transformers"]
|
1237
1387
|
|
@@ -1487,6 +1637,21 @@ class ReduxImageEncoder(metaclass=DummyObject):
|
|
1487
1637
|
requires_backends(cls, ["torch", "transformers"])
|
1488
1638
|
|
1489
1639
|
|
1640
|
+
class SanaControlNetPipeline(metaclass=DummyObject):
|
1641
|
+
_backends = ["torch", "transformers"]
|
1642
|
+
|
1643
|
+
def __init__(self, *args, **kwargs):
|
1644
|
+
requires_backends(self, ["torch", "transformers"])
|
1645
|
+
|
1646
|
+
@classmethod
|
1647
|
+
def from_config(cls, *args, **kwargs):
|
1648
|
+
requires_backends(cls, ["torch", "transformers"])
|
1649
|
+
|
1650
|
+
@classmethod
|
1651
|
+
def from_pretrained(cls, *args, **kwargs):
|
1652
|
+
requires_backends(cls, ["torch", "transformers"])
|
1653
|
+
|
1654
|
+
|
1490
1655
|
class SanaPAGPipeline(metaclass=DummyObject):
|
1491
1656
|
_backends = ["torch", "transformers"]
|
1492
1657
|
|
@@ -1517,6 +1682,21 @@ class SanaPipeline(metaclass=DummyObject):
|
|
1517
1682
|
requires_backends(cls, ["torch", "transformers"])
|
1518
1683
|
|
1519
1684
|
|
1685
|
+
class SanaSprintImg2ImgPipeline(metaclass=DummyObject):
|
1686
|
+
_backends = ["torch", "transformers"]
|
1687
|
+
|
1688
|
+
def __init__(self, *args, **kwargs):
|
1689
|
+
requires_backends(self, ["torch", "transformers"])
|
1690
|
+
|
1691
|
+
@classmethod
|
1692
|
+
def from_config(cls, *args, **kwargs):
|
1693
|
+
requires_backends(cls, ["torch", "transformers"])
|
1694
|
+
|
1695
|
+
@classmethod
|
1696
|
+
def from_pretrained(cls, *args, **kwargs):
|
1697
|
+
requires_backends(cls, ["torch", "transformers"])
|
1698
|
+
|
1699
|
+
|
1520
1700
|
class SanaSprintPipeline(metaclass=DummyObject):
|
1521
1701
|
_backends = ["torch", "transformers"]
|
1522
1702
|
|
@@ -2702,6 +2882,36 @@ class VideoToVideoSDPipeline(metaclass=DummyObject):
|
|
2702
2882
|
requires_backends(cls, ["torch", "transformers"])
|
2703
2883
|
|
2704
2884
|
|
2885
|
+
class VisualClozeGenerationPipeline(metaclass=DummyObject):
|
2886
|
+
_backends = ["torch", "transformers"]
|
2887
|
+
|
2888
|
+
def __init__(self, *args, **kwargs):
|
2889
|
+
requires_backends(self, ["torch", "transformers"])
|
2890
|
+
|
2891
|
+
@classmethod
|
2892
|
+
def from_config(cls, *args, **kwargs):
|
2893
|
+
requires_backends(cls, ["torch", "transformers"])
|
2894
|
+
|
2895
|
+
@classmethod
|
2896
|
+
def from_pretrained(cls, *args, **kwargs):
|
2897
|
+
requires_backends(cls, ["torch", "transformers"])
|
2898
|
+
|
2899
|
+
|
2900
|
+
class VisualClozePipeline(metaclass=DummyObject):
|
2901
|
+
_backends = ["torch", "transformers"]
|
2902
|
+
|
2903
|
+
def __init__(self, *args, **kwargs):
|
2904
|
+
requires_backends(self, ["torch", "transformers"])
|
2905
|
+
|
2906
|
+
@classmethod
|
2907
|
+
def from_config(cls, *args, **kwargs):
|
2908
|
+
requires_backends(cls, ["torch", "transformers"])
|
2909
|
+
|
2910
|
+
@classmethod
|
2911
|
+
def from_pretrained(cls, *args, **kwargs):
|
2912
|
+
requires_backends(cls, ["torch", "transformers"])
|
2913
|
+
|
2914
|
+
|
2705
2915
|
class VQDiffusionPipeline(metaclass=DummyObject):
|
2706
2916
|
_backends = ["torch", "transformers"]
|
2707
2917
|
|
@@ -2747,6 +2957,21 @@ class WanPipeline(metaclass=DummyObject):
|
|
2747
2957
|
requires_backends(cls, ["torch", "transformers"])
|
2748
2958
|
|
2749
2959
|
|
2960
|
+
class WanVACEPipeline(metaclass=DummyObject):
|
2961
|
+
_backends = ["torch", "transformers"]
|
2962
|
+
|
2963
|
+
def __init__(self, *args, **kwargs):
|
2964
|
+
requires_backends(self, ["torch", "transformers"])
|
2965
|
+
|
2966
|
+
@classmethod
|
2967
|
+
def from_config(cls, *args, **kwargs):
|
2968
|
+
requires_backends(cls, ["torch", "transformers"])
|
2969
|
+
|
2970
|
+
@classmethod
|
2971
|
+
def from_pretrained(cls, *args, **kwargs):
|
2972
|
+
requires_backends(cls, ["torch", "transformers"])
|
2973
|
+
|
2974
|
+
|
2750
2975
|
class WanVideoToVideoPipeline(metaclass=DummyObject):
|
2751
2976
|
_backends = ["torch", "transformers"]
|
2752
2977
|
|
@@ -154,12 +154,30 @@ def check_imports(filename):
|
|
154
154
|
return get_relative_imports(filename)
|
155
155
|
|
156
156
|
|
157
|
-
def get_class_in_module(class_name, module_path):
|
157
|
+
def get_class_in_module(class_name, module_path, pretrained_model_name_or_path=None):
|
158
158
|
"""
|
159
159
|
Import a module on the cache directory for modules and extract a class from it.
|
160
160
|
"""
|
161
161
|
module_path = module_path.replace(os.path.sep, ".")
|
162
|
-
|
162
|
+
try:
|
163
|
+
module = importlib.import_module(module_path)
|
164
|
+
except ModuleNotFoundError as e:
|
165
|
+
# This can happen when the repo id contains ".", which Python's import machinery interprets as a directory
|
166
|
+
# separator. We do a bit of monkey patching to detect and fix this case.
|
167
|
+
if not (
|
168
|
+
pretrained_model_name_or_path is not None
|
169
|
+
and "." in pretrained_model_name_or_path
|
170
|
+
and module_path.startswith("diffusers_modules")
|
171
|
+
and pretrained_model_name_or_path.replace("/", "--") in module_path
|
172
|
+
):
|
173
|
+
raise e # We can't figure this one out, just reraise the original error
|
174
|
+
|
175
|
+
corrected_path = os.path.join(HF_MODULES_CACHE, module_path.replace(".", "/")) + ".py"
|
176
|
+
corrected_path = corrected_path.replace(
|
177
|
+
pretrained_model_name_or_path.replace("/", "--").replace(".", "/"),
|
178
|
+
pretrained_model_name_or_path.replace("/", "--"),
|
179
|
+
)
|
180
|
+
module = importlib.machinery.SourceFileLoader(module_path, corrected_path).load_module()
|
163
181
|
|
164
182
|
if class_name is None:
|
165
183
|
return find_pipeline_class(module)
|
@@ -454,4 +472,4 @@ def get_class_from_dynamic_module(
|
|
454
472
|
revision=revision,
|
455
473
|
local_files_only=local_files_only,
|
456
474
|
)
|
457
|
-
return get_class_in_module(class_name, final_module.replace(".py", ""))
|
475
|
+
return get_class_in_module(class_name, final_module.replace(".py", ""), pretrained_model_name_or_path)
|
diffusers/utils/export_utils.py
CHANGED
@@ -155,7 +155,7 @@ def export_to_video(
|
|
155
155
|
bitrate:
|
156
156
|
Set a constant bitrate for the video encoding. Default is None causing `quality` parameter to be used instead.
|
157
157
|
Better quality videos with smaller file sizes will result from using the `quality` variable bitrate parameter
|
158
|
-
rather than
|
158
|
+
rather than specifying a fixed bitrate with this parameter.
|
159
159
|
|
160
160
|
macro_block_size:
|
161
161
|
Size constraint for video. Width and height, must be divisible by this number. If not divisible by this number
|
diffusers/utils/import_utils.py
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright
|
1
|
+
# Copyright 2025 The HuggingFace Team. All rights reserved.
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -16,13 +16,14 @@ Import utilities: Utilities related to imports and our lazy inits.
|
|
16
16
|
"""
|
17
17
|
|
18
18
|
import importlib.util
|
19
|
+
import inspect
|
19
20
|
import operator as op
|
20
21
|
import os
|
21
22
|
import sys
|
22
|
-
from collections import OrderedDict
|
23
|
+
from collections import OrderedDict, defaultdict
|
23
24
|
from itertools import chain
|
24
25
|
from types import ModuleType
|
25
|
-
from typing import Any, Union
|
26
|
+
from typing import Any, Tuple, Union
|
26
27
|
|
27
28
|
from huggingface_hub.utils import is_jinja_available # noqa: F401
|
28
29
|
from packaging.version import Version, parse
|
@@ -35,7 +36,10 @@ if sys.version_info < (3, 8):
|
|
35
36
|
import importlib_metadata
|
36
37
|
else:
|
37
38
|
import importlib.metadata as importlib_metadata
|
38
|
-
|
39
|
+
try:
|
40
|
+
_package_map = importlib_metadata.packages_distributions() # load-once to avoid expensive calls
|
41
|
+
except Exception:
|
42
|
+
_package_map = None
|
39
43
|
|
40
44
|
logger = logging.get_logger(__name__) # pylint: disable=invalid-name
|
41
45
|
|
@@ -54,12 +58,33 @@ STR_OPERATION_TO_FUNC = {">": op.gt, ">=": op.ge, "==": op.eq, "!=": op.ne, "<="
|
|
54
58
|
_is_google_colab = "google.colab" in sys.modules or any(k.startswith("COLAB_") for k in os.environ)
|
55
59
|
|
56
60
|
|
57
|
-
def _is_package_available(pkg_name: str):
|
61
|
+
def _is_package_available(pkg_name: str, get_dist_name: bool = False) -> Tuple[bool, str]:
|
62
|
+
global _package_map
|
58
63
|
pkg_exists = importlib.util.find_spec(pkg_name) is not None
|
59
64
|
pkg_version = "N/A"
|
60
65
|
|
61
66
|
if pkg_exists:
|
67
|
+
if _package_map is None:
|
68
|
+
_package_map = defaultdict(list)
|
69
|
+
try:
|
70
|
+
# Fallback for Python < 3.10
|
71
|
+
for dist in importlib_metadata.distributions():
|
72
|
+
_top_level_declared = (dist.read_text("top_level.txt") or "").split()
|
73
|
+
_infered_opt_names = {
|
74
|
+
f.parts[0] if len(f.parts) > 1 else inspect.getmodulename(f) for f in (dist.files or [])
|
75
|
+
} - {None}
|
76
|
+
_top_level_inferred = filter(lambda name: "." not in name, _infered_opt_names)
|
77
|
+
for pkg in _top_level_declared or _top_level_inferred:
|
78
|
+
_package_map[pkg].append(dist.metadata["Name"])
|
79
|
+
except Exception as _:
|
80
|
+
pass
|
62
81
|
try:
|
82
|
+
if get_dist_name and pkg_name in _package_map and _package_map[pkg_name]:
|
83
|
+
if len(_package_map[pkg_name]) > 1:
|
84
|
+
logger.warning(
|
85
|
+
f"Multiple distributions found for package {pkg_name}. Picked distribution: {_package_map[pkg_name][0]}"
|
86
|
+
)
|
87
|
+
pkg_name = _package_map[pkg_name][0]
|
63
88
|
pkg_version = importlib_metadata.version(pkg_name)
|
64
89
|
logger.debug(f"Successfully imported {pkg_name} version {pkg_version}")
|
65
90
|
except (ImportError, importlib_metadata.PackageNotFoundError):
|
@@ -74,6 +99,7 @@ if USE_TORCH in ENV_VARS_TRUE_AND_AUTO_VALUES and USE_TF not in ENV_VARS_TRUE_VA
|
|
74
99
|
else:
|
75
100
|
logger.info("Disabling PyTorch because USE_TORCH is set")
|
76
101
|
_torch_available = False
|
102
|
+
_torch_version = "N/A"
|
77
103
|
|
78
104
|
_jax_version = "N/A"
|
79
105
|
_flax_version = "N/A"
|
@@ -101,18 +127,20 @@ _onnx_available = importlib.util.find_spec("onnxruntime") is not None
|
|
101
127
|
if _onnx_available:
|
102
128
|
candidates = (
|
103
129
|
"onnxruntime",
|
130
|
+
"onnxruntime-cann",
|
131
|
+
"onnxruntime-directml",
|
132
|
+
"ort_nightly_directml",
|
104
133
|
"onnxruntime-gpu",
|
105
134
|
"ort_nightly_gpu",
|
106
|
-
"onnxruntime-
|
135
|
+
"onnxruntime-migraphx",
|
107
136
|
"onnxruntime-openvino",
|
108
|
-
"
|
137
|
+
"onnxruntime-qnn",
|
109
138
|
"onnxruntime-rocm",
|
110
|
-
"onnxruntime-migraphx",
|
111
139
|
"onnxruntime-training",
|
112
140
|
"onnxruntime-vitisai",
|
113
141
|
)
|
114
142
|
_onnxruntime_version = None
|
115
|
-
# For the metadata, we have to look for both onnxruntime and onnxruntime-
|
143
|
+
# For the metadata, we have to look for both onnxruntime and onnxruntime-x
|
116
144
|
for pkg in candidates:
|
117
145
|
try:
|
118
146
|
_onnxruntime_version = importlib_metadata.version(pkg)
|
@@ -187,15 +215,11 @@ _xformers_available, _xformers_version = _is_package_available("xformers")
|
|
187
215
|
_gguf_available, _gguf_version = _is_package_available("gguf")
|
188
216
|
_torchao_available, _torchao_version = _is_package_available("torchao")
|
189
217
|
_bitsandbytes_available, _bitsandbytes_version = _is_package_available("bitsandbytes")
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
_optimum_quanto_version = importlib_metadata.version("optimum_quanto")
|
196
|
-
logger.debug(f"Successfully import optimum-quanto version {_optimum_quanto_version}")
|
197
|
-
except importlib_metadata.PackageNotFoundError:
|
198
|
-
_optimum_quanto_available = False
|
218
|
+
_optimum_quanto_available, _optimum_quanto_version = _is_package_available("optimum", get_dist_name=True)
|
219
|
+
_pytorch_retinaface_available, _pytorch_retinaface_version = _is_package_available("pytorch_retinaface")
|
220
|
+
_better_profanity_available, _better_profanity_version = _is_package_available("better_profanity")
|
221
|
+
_nltk_available, _nltk_version = _is_package_available("nltk")
|
222
|
+
_cosmos_guardrail_available, _cosmos_guardrail_version = _is_package_available("cosmos_guardrail")
|
199
223
|
|
200
224
|
|
201
225
|
def is_torch_available():
|
@@ -334,6 +358,26 @@ def is_timm_available():
|
|
334
358
|
return _timm_available
|
335
359
|
|
336
360
|
|
361
|
+
def is_pytorch_retinaface_available():
|
362
|
+
return _pytorch_retinaface_available
|
363
|
+
|
364
|
+
|
365
|
+
def is_better_profanity_available():
|
366
|
+
return _better_profanity_available
|
367
|
+
|
368
|
+
|
369
|
+
def is_nltk_available():
|
370
|
+
return _nltk_available
|
371
|
+
|
372
|
+
|
373
|
+
def is_cosmos_guardrail_available():
|
374
|
+
return _cosmos_guardrail_available
|
375
|
+
|
376
|
+
|
377
|
+
def is_hpu_available():
|
378
|
+
return all(importlib.util.find_spec(lib) for lib in ("habana_frameworks", "habana_frameworks.torch"))
|
379
|
+
|
380
|
+
|
337
381
|
# docstyle-ignore
|
338
382
|
FLAX_IMPORT_ERROR = """
|
339
383
|
{0} requires the FLAX library but it was not found in your environment. Checkout the instructions on the
|
@@ -482,6 +526,22 @@ QUANTO_IMPORT_ERROR = """
|
|
482
526
|
install optimum-quanto`
|
483
527
|
"""
|
484
528
|
|
529
|
+
# docstyle-ignore
|
530
|
+
PYTORCH_RETINAFACE_IMPORT_ERROR = """
|
531
|
+
{0} requires the pytorch_retinaface library but it was not found in your environment. You can install it with pip: `pip install pytorch_retinaface`
|
532
|
+
"""
|
533
|
+
|
534
|
+
# docstyle-ignore
|
535
|
+
BETTER_PROFANITY_IMPORT_ERROR = """
|
536
|
+
{0} requires the better_profanity library but it was not found in your environment. You can install it with pip: `pip install better_profanity`
|
537
|
+
"""
|
538
|
+
|
539
|
+
# docstyle-ignore
|
540
|
+
NLTK_IMPORT_ERROR = """
|
541
|
+
{0} requires the nltk library but it was not found in your environment. You can install it with pip: `pip install nltk`
|
542
|
+
"""
|
543
|
+
|
544
|
+
|
485
545
|
BACKENDS_MAPPING = OrderedDict(
|
486
546
|
[
|
487
547
|
("bs4", (is_bs4_available, BS4_IMPORT_ERROR)),
|
@@ -510,6 +570,9 @@ BACKENDS_MAPPING = OrderedDict(
|
|
510
570
|
("gguf", (is_gguf_available, GGUF_IMPORT_ERROR)),
|
511
571
|
("torchao", (is_torchao_available, TORCHAO_IMPORT_ERROR)),
|
512
572
|
("quanto", (is_optimum_quanto_available, QUANTO_IMPORT_ERROR)),
|
573
|
+
("pytorch_retinaface", (is_pytorch_retinaface_available, PYTORCH_RETINAFACE_IMPORT_ERROR)),
|
574
|
+
("better_profanity", (is_better_profanity_available, BETTER_PROFANITY_IMPORT_ERROR)),
|
575
|
+
("nltk", (is_nltk_available, NLTK_IMPORT_ERROR)),
|
513
576
|
]
|
514
577
|
)
|
515
578
|
|
diffusers/utils/logging.py
CHANGED