diffusers 0.33.1__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 +13 -10
- diffusers/pipelines/wan/pipeline_wan_i2v.py +38 -18
- diffusers/pipelines/wan/pipeline_wan_vace.py +976 -0
- diffusers/pipelines/wan/pipeline_wan_video2video.py +14 -16
- 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.1.dist-info → diffusers-0.34.0.dist-info}/METADATA +70 -55
- diffusers-0.34.0.dist-info/RECORD +639 -0
- {diffusers-0.33.1.dist-info → diffusers-0.34.0.dist-info}/WHEEL +1 -1
- diffusers-0.33.1.dist-info/RECORD +0 -608
- {diffusers-0.33.1.dist-info → diffusers-0.34.0.dist-info}/LICENSE +0 -0
- {diffusers-0.33.1.dist-info → diffusers-0.34.0.dist-info}/entry_points.txt +0 -0
- {diffusers-0.33.1.dist-info → diffusers-0.34.0.dist-info}/top_level.txt +0 -0
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright
|
1
|
+
# Copyright 2025 Katherine Crowson and 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.
|
@@ -272,7 +272,7 @@ class LMSDiscreteScheduler(SchedulerMixin, ConfigMixin):
|
|
272
272
|
"""
|
273
273
|
self.num_inference_steps = num_inference_steps
|
274
274
|
|
275
|
-
# "linspace", "leading", "trailing" corresponds to annotation of Table 2. of https://
|
275
|
+
# "linspace", "leading", "trailing" corresponds to annotation of Table 2. of https://huggingface.co/papers/2305.08891
|
276
276
|
if self.config.timestep_spacing == "linspace":
|
277
277
|
timesteps = np.linspace(0, self.config.num_train_timesteps - 1, num_inference_steps, dtype=np.float32)[
|
278
278
|
::-1
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright
|
1
|
+
# Copyright 2025 Katherine Crowson and 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.
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright
|
1
|
+
# Copyright 2025 Zhejiang University Team and 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.
|
@@ -146,7 +146,7 @@ class PNDMScheduler(SchedulerMixin, ConfigMixin):
|
|
146
146
|
self.init_noise_sigma = 1.0
|
147
147
|
|
148
148
|
# For now we only support F-PNDM, i.e. the runge-kutta method
|
149
|
-
# For more information on the algorithm please take a look at the paper: https://
|
149
|
+
# For more information on the algorithm please take a look at the paper: https://huggingface.co/papers/2202.09778
|
150
150
|
# mainly at formula (9), (12), (13) and the Algorithm 2.
|
151
151
|
self.pndm_order = 4
|
152
152
|
|
@@ -175,7 +175,7 @@ class PNDMScheduler(SchedulerMixin, ConfigMixin):
|
|
175
175
|
"""
|
176
176
|
|
177
177
|
self.num_inference_steps = num_inference_steps
|
178
|
-
# "linspace", "leading", "trailing" corresponds to annotation of Table 2. of https://
|
178
|
+
# "linspace", "leading", "trailing" corresponds to annotation of Table 2. of https://huggingface.co/papers/2305.08891
|
179
179
|
if self.config.timestep_spacing == "linspace":
|
180
180
|
self._timesteps = (
|
181
181
|
np.linspace(0, self.config.num_train_timesteps - 1, num_inference_steps).round().astype(np.int64)
|
@@ -403,7 +403,7 @@ class PNDMScheduler(SchedulerMixin, ConfigMixin):
|
|
403
403
|
return sample
|
404
404
|
|
405
405
|
def _get_prev_sample(self, sample, timestep, prev_timestep, model_output):
|
406
|
-
# See formula (9) of PNDM paper https://
|
406
|
+
# See formula (9) of PNDM paper https://huggingface.co/papers/2202.09778
|
407
407
|
# this function computes x_(t−δ) using the formula of (9)
|
408
408
|
# Note that x_t needs to be added to both sides of the equation
|
409
409
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright
|
1
|
+
# Copyright 2025 Zhejiang University Team and 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.
|
@@ -80,7 +80,7 @@ class FlaxPNDMScheduler(FlaxSchedulerMixin, ConfigMixin):
|
|
80
80
|
[`SchedulerMixin`] provides general loading and saving functionality via the [`SchedulerMixin.save_pretrained`] and
|
81
81
|
[`~SchedulerMixin.from_pretrained`] functions.
|
82
82
|
|
83
|
-
For more details, see the original paper: https://
|
83
|
+
For more details, see the original paper: https://huggingface.co/papers/2202.09778
|
84
84
|
|
85
85
|
Args:
|
86
86
|
num_train_timesteps (`int`): number of diffusion steps used to train the model.
|
@@ -134,7 +134,7 @@ class FlaxPNDMScheduler(FlaxSchedulerMixin, ConfigMixin):
|
|
134
134
|
self.dtype = dtype
|
135
135
|
|
136
136
|
# For now we only support F-PNDM, i.e. the runge-kutta method
|
137
|
-
# For more information on the algorithm please take a look at the paper: https://
|
137
|
+
# For more information on the algorithm please take a look at the paper: https://huggingface.co/papers/2202.09778
|
138
138
|
# mainly at formula (9), (12), (13) and the Algorithm 2.
|
139
139
|
self.pndm_order = 4
|
140
140
|
|
@@ -452,7 +452,7 @@ class FlaxPNDMScheduler(FlaxSchedulerMixin, ConfigMixin):
|
|
452
452
|
return (prev_sample, state)
|
453
453
|
|
454
454
|
def _get_prev_sample(self, state: PNDMSchedulerState, sample, timestep, prev_timestep, model_output):
|
455
|
-
# See formula (9) of PNDM paper https://
|
455
|
+
# See formula (9) of PNDM paper https://huggingface.co/papers/2202.09778
|
456
456
|
# this function computes x_(t−δ) using the formula of (9)
|
457
457
|
# Note that x_t needs to be added to both sides of the equation
|
458
458
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright
|
1
|
+
# Copyright 2025 ETH Zurich Computer Vision Lab and 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.
|
@@ -233,10 +233,10 @@ class RePaintScheduler(SchedulerMixin, ConfigMixin):
|
|
233
233
|
beta_prod_t_prev = 1 - alpha_prod_t_prev
|
234
234
|
|
235
235
|
# For t > 0, compute predicted variance βt (see formula (6) and (7) from
|
236
|
-
# https://
|
236
|
+
# https://huggingface.co/papers/2006.11239) and sample from it to get
|
237
237
|
# previous sample x_{t-1} ~ N(pred_prev_sample, variance) == add
|
238
238
|
# variance to pred_sample
|
239
|
-
# Is equivalent to formula (16) in https://
|
239
|
+
# Is equivalent to formula (16) in https://huggingface.co/papers/2010.02502
|
240
240
|
# without eta.
|
241
241
|
# variance = (1 - alpha_prod_t_prev) / (1 - alpha_prod_t) * self.betas[t]
|
242
242
|
variance = (beta_prod_t_prev / beta_prod_t) * (1 - alpha_prod_t / alpha_prod_t_prev)
|
@@ -288,7 +288,7 @@ class RePaintScheduler(SchedulerMixin, ConfigMixin):
|
|
288
288
|
beta_prod_t = 1 - alpha_prod_t
|
289
289
|
|
290
290
|
# 2. compute predicted original sample from predicted noise also called
|
291
|
-
# "predicted x_0" of formula (15) from https://
|
291
|
+
# "predicted x_0" of formula (15) from https://huggingface.co/papers/2006.11239
|
292
292
|
pred_original_sample = (sample - beta_prod_t**0.5 * model_output) / alpha_prod_t**0.5
|
293
293
|
|
294
294
|
# 3. Clip "predicted x_0"
|
@@ -312,20 +312,20 @@ class RePaintScheduler(SchedulerMixin, ConfigMixin):
|
|
312
312
|
variance = std_dev_t * noise
|
313
313
|
|
314
314
|
# 6. compute "direction pointing to x_t" of formula (12)
|
315
|
-
# from https://
|
315
|
+
# from https://huggingface.co/papers/2010.02502
|
316
316
|
pred_sample_direction = (1 - alpha_prod_t_prev - std_dev_t**2) ** 0.5 * model_output
|
317
317
|
|
318
|
-
# 7. compute x_{t-1} of formula (12) from https://
|
318
|
+
# 7. compute x_{t-1} of formula (12) from https://huggingface.co/papers/2010.02502
|
319
319
|
prev_unknown_part = alpha_prod_t_prev**0.5 * pred_original_sample + pred_sample_direction + variance
|
320
320
|
|
321
|
-
# 8. Algorithm 1 Line 5 https://
|
321
|
+
# 8. Algorithm 1 Line 5 https://huggingface.co/papers/2201.09865
|
322
322
|
# The computation reported in Algorithm 1 Line 5 is incorrect. Line 5 refers to formula (8a) of the same paper,
|
323
323
|
# which tells to sample from a Gaussian distribution with mean "(alpha_prod_t_prev**0.5) * original_image"
|
324
324
|
# and variance "(1 - alpha_prod_t_prev)". This means that the standard Gaussian distribution "noise" should be
|
325
325
|
# scaled by the square root of the variance (as it is done here), however Algorithm 1 Line 5 tells to scale by the variance.
|
326
326
|
prev_known_part = (alpha_prod_t_prev**0.5) * original_image + ((1 - alpha_prod_t_prev) ** 0.5) * noise
|
327
327
|
|
328
|
-
# 9. Algorithm 1 Line 8 https://
|
328
|
+
# 9. Algorithm 1 Line 8 https://huggingface.co/papers/2201.09865
|
329
329
|
pred_prev_sample = mask * prev_known_part + (1.0 - mask) * prev_unknown_part
|
330
330
|
|
331
331
|
if not return_dict:
|
@@ -348,7 +348,7 @@ class RePaintScheduler(SchedulerMixin, ConfigMixin):
|
|
348
348
|
else:
|
349
349
|
noise = randn_tensor(sample.shape, generator=generator, device=sample.device, dtype=sample.dtype)
|
350
350
|
|
351
|
-
# 10. Algorithm 1 Line 10 https://
|
351
|
+
# 10. Algorithm 1 Line 10 https://huggingface.co/papers/2201.09865
|
352
352
|
sample = (1 - beta) ** 0.5 * sample + beta**0.5 * noise
|
353
353
|
|
354
354
|
return sample
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright
|
1
|
+
# Copyright 2025 Shuchen Xue, etc. in University of Chinese Academy of Sciences Team and 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.
|
@@ -12,7 +12,7 @@
|
|
12
12
|
# See the License for the specific language governing permissions and
|
13
13
|
# limitations under the License.
|
14
14
|
|
15
|
-
# DISCLAIMER: check https://
|
15
|
+
# DISCLAIMER: check https://huggingface.co/papers/2309.05019
|
16
16
|
# The codebase is modified based on https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_dpmsolver_multistep.py
|
17
17
|
|
18
18
|
import math
|
@@ -109,7 +109,7 @@ class SASolverScheduler(SchedulerMixin, ConfigMixin):
|
|
109
109
|
Stochasticity during the sampling. Default in init is `lambda t: 1 if t >= 200 and t <= 800 else 0`.
|
110
110
|
SA-Solver will sample from vanilla diffusion ODE if tau_func is set to `lambda t: 0`. SA-Solver will sample
|
111
111
|
from vanilla diffusion SDE if tau_func is set to `lambda t: 1`. For more details, please check
|
112
|
-
https://
|
112
|
+
https://huggingface.co/papers/2309.05019
|
113
113
|
thresholding (`bool`, defaults to `False`):
|
114
114
|
Whether to use the "dynamic thresholding" method. This is unsuitable for latent-space diffusion models such
|
115
115
|
as Stable Diffusion.
|
@@ -273,7 +273,7 @@ class SASolverScheduler(SchedulerMixin, ConfigMixin):
|
|
273
273
|
clipped_idx = torch.searchsorted(torch.flip(self.lambda_t, [0]), self.config.lambda_min_clipped)
|
274
274
|
last_timestep = ((self.config.num_train_timesteps - clipped_idx).numpy()).item()
|
275
275
|
|
276
|
-
# "linspace", "leading", "trailing" corresponds to annotation of Table 2. of https://
|
276
|
+
# "linspace", "leading", "trailing" corresponds to annotation of Table 2. of https://huggingface.co/papers/2305.08891
|
277
277
|
if self.config.timestep_spacing == "linspace":
|
278
278
|
timesteps = (
|
279
279
|
np.linspace(0, last_timestep - 1, num_inference_steps + 1).round()[::-1][:-1].copy().astype(np.int64)
|
@@ -348,7 +348,7 @@ class SASolverScheduler(SchedulerMixin, ConfigMixin):
|
|
348
348
|
pixels from saturation at each step. We find that dynamic thresholding results in significantly better
|
349
349
|
photorealism as well as better image-text alignment, especially when using very large guidance weights."
|
350
350
|
|
351
|
-
https://
|
351
|
+
https://huggingface.co/papers/2205.11487
|
352
352
|
"""
|
353
353
|
dtype = sample.dtype
|
354
354
|
batch_size, channels, *remaining_dims = sample.shape
|
@@ -522,7 +522,7 @@ class SASolverScheduler(SchedulerMixin, ConfigMixin):
|
|
522
522
|
if len(args) > 1:
|
523
523
|
sample = args[1]
|
524
524
|
else:
|
525
|
-
raise ValueError("missing `sample` as a required
|
525
|
+
raise ValueError("missing `sample` as a required keyword argument")
|
526
526
|
if timestep is not None:
|
527
527
|
deprecate(
|
528
528
|
"timesteps",
|
@@ -812,22 +812,22 @@ class SASolverScheduler(SchedulerMixin, ConfigMixin):
|
|
812
812
|
if len(args) > 1:
|
813
813
|
sample = args[1]
|
814
814
|
else:
|
815
|
-
raise ValueError("
|
815
|
+
raise ValueError("missing `sample` as a required keyword argument")
|
816
816
|
if noise is None:
|
817
817
|
if len(args) > 2:
|
818
818
|
noise = args[2]
|
819
819
|
else:
|
820
|
-
raise ValueError("
|
820
|
+
raise ValueError("missing `noise` as a required keyword argument")
|
821
821
|
if order is None:
|
822
822
|
if len(args) > 3:
|
823
823
|
order = args[3]
|
824
824
|
else:
|
825
|
-
raise ValueError("
|
825
|
+
raise ValueError("missing `order` as a required keyword argument")
|
826
826
|
if tau is None:
|
827
827
|
if len(args) > 4:
|
828
828
|
tau = args[4]
|
829
829
|
else:
|
830
|
-
raise ValueError("
|
830
|
+
raise ValueError("missing `tau` as a required keyword argument")
|
831
831
|
if prev_timestep is not None:
|
832
832
|
deprecate(
|
833
833
|
"prev_timestep",
|
@@ -943,27 +943,27 @@ class SASolverScheduler(SchedulerMixin, ConfigMixin):
|
|
943
943
|
if len(args) > 1:
|
944
944
|
last_sample = args[1]
|
945
945
|
else:
|
946
|
-
raise ValueError("
|
946
|
+
raise ValueError("missing `last_sample` as a required keyword argument")
|
947
947
|
if last_noise is None:
|
948
948
|
if len(args) > 2:
|
949
949
|
last_noise = args[2]
|
950
950
|
else:
|
951
|
-
raise ValueError("
|
951
|
+
raise ValueError("missing `last_noise` as a required keyword argument")
|
952
952
|
if this_sample is None:
|
953
953
|
if len(args) > 3:
|
954
954
|
this_sample = args[3]
|
955
955
|
else:
|
956
|
-
raise ValueError("
|
956
|
+
raise ValueError("missing `this_sample` as a required keyword argument")
|
957
957
|
if order is None:
|
958
958
|
if len(args) > 4:
|
959
959
|
order = args[4]
|
960
960
|
else:
|
961
|
-
raise ValueError("
|
961
|
+
raise ValueError("missing `order` as a required keyword argument")
|
962
962
|
if tau is None:
|
963
963
|
if len(args) > 5:
|
964
964
|
tau = args[5]
|
965
965
|
else:
|
966
|
-
raise ValueError("
|
966
|
+
raise ValueError("missing `tau` as a required keyword argument")
|
967
967
|
if this_timestep is not None:
|
968
968
|
deprecate(
|
969
969
|
"this_timestep",
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# # Copyright
|
1
|
+
# # Copyright 2025 Sana-Sprint Authors and 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.
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright
|
1
|
+
# Copyright 2025 Google Brain and 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.
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright
|
1
|
+
# Copyright 2025 Google Brain and 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.
|
@@ -61,7 +61,7 @@ class FlaxScoreSdeVeScheduler(FlaxSchedulerMixin, ConfigMixin):
|
|
61
61
|
"""
|
62
62
|
The variance exploding stochastic differential equation (SDE) scheduler.
|
63
63
|
|
64
|
-
For more information, see the original paper: https://
|
64
|
+
For more information, see the original paper: https://huggingface.co/papers/2011.13456
|
65
65
|
|
66
66
|
[`~ConfigMixin`] takes care of storing all config attributes that are passed in the scheduler's `__init__`
|
67
67
|
function, such as `num_train_timesteps`. They can be accessed via `scheduler.config.num_train_timesteps`.
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright
|
1
|
+
# Copyright 2025 Stanford University Team and 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.
|
@@ -96,7 +96,7 @@ def betas_for_alpha_bar(
|
|
96
96
|
# Copied from diffusers.schedulers.scheduling_ddim.rescale_zero_terminal_snr
|
97
97
|
def rescale_zero_terminal_snr(betas: torch.Tensor) -> torch.Tensor:
|
98
98
|
"""
|
99
|
-
Rescales betas to have zero terminal SNR Based on https://
|
99
|
+
Rescales betas to have zero terminal SNR Based on https://huggingface.co/papers/2305.08891 (Algorithm 1)
|
100
100
|
|
101
101
|
|
102
102
|
Args:
|
@@ -334,7 +334,7 @@ class TCDScheduler(SchedulerMixin, ConfigMixin):
|
|
334
334
|
pixels from saturation at each step. We find that dynamic thresholding results in significantly better
|
335
335
|
photorealism as well as better image-text alignment, especially when using very large guidance weights."
|
336
336
|
|
337
|
-
https://
|
337
|
+
https://huggingface.co/papers/2205.11487
|
338
338
|
"""
|
339
339
|
dtype = sample.dtype
|
340
340
|
batch_size, channels, *remaining_dims = sample.shape
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright
|
1
|
+
# Copyright 2025 Kakao Brain and 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.
|
@@ -191,7 +191,7 @@ class UnCLIPScheduler(SchedulerMixin, ConfigMixin):
|
|
191
191
|
else:
|
192
192
|
beta = 1 - alpha_prod_t / alpha_prod_t_prev
|
193
193
|
|
194
|
-
# For t > 0, compute predicted variance βt (see formula (6) and (7) from https://
|
194
|
+
# For t > 0, compute predicted variance βt (see formula (6) and (7) from https://huggingface.co/papers/2006.11239)
|
195
195
|
# and sample from it to get previous sample
|
196
196
|
# x_{t-1} ~ N(pred_prev_sample, variance) == add variance to pred_sample
|
197
197
|
variance = beta_prod_t_prev / beta_prod_t * beta
|
@@ -266,7 +266,7 @@ class UnCLIPScheduler(SchedulerMixin, ConfigMixin):
|
|
266
266
|
alpha = 1 - beta
|
267
267
|
|
268
268
|
# 2. compute predicted original sample from predicted noise also called
|
269
|
-
# "predicted x_0" of formula (15) from https://
|
269
|
+
# "predicted x_0" of formula (15) from https://huggingface.co/papers/2006.11239
|
270
270
|
if self.config.prediction_type == "epsilon":
|
271
271
|
pred_original_sample = (sample - beta_prod_t ** (0.5) * model_output) / alpha_prod_t ** (0.5)
|
272
272
|
elif self.config.prediction_type == "sample":
|
@@ -284,12 +284,12 @@ class UnCLIPScheduler(SchedulerMixin, ConfigMixin):
|
|
284
284
|
)
|
285
285
|
|
286
286
|
# 4. Compute coefficients for pred_original_sample x_0 and current sample x_t
|
287
|
-
# See formula (7) from https://
|
287
|
+
# See formula (7) from https://huggingface.co/papers/2006.11239
|
288
288
|
pred_original_sample_coeff = (alpha_prod_t_prev ** (0.5) * beta) / beta_prod_t
|
289
289
|
current_sample_coeff = alpha ** (0.5) * beta_prod_t_prev / beta_prod_t
|
290
290
|
|
291
291
|
# 5. Compute predicted previous sample µ_t
|
292
|
-
# See formula (7) from https://
|
292
|
+
# See formula (7) from https://huggingface.co/papers/2006.11239
|
293
293
|
pred_prev_sample = pred_original_sample_coeff * pred_original_sample + current_sample_coeff * sample
|
294
294
|
|
295
295
|
# 6. Add noise
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright
|
1
|
+
# Copyright 2025 TSAIL Team and 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.
|
@@ -12,7 +12,7 @@
|
|
12
12
|
# See the License for the specific language governing permissions and
|
13
13
|
# limitations under the License.
|
14
14
|
|
15
|
-
# DISCLAIMER: check https://
|
15
|
+
# DISCLAIMER: check https://huggingface.co/papers/2302.04867 and https://github.com/wl-zhao/UniPC for more info
|
16
16
|
# The codebase is modified based on https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_dpmsolver_multistep.py
|
17
17
|
|
18
18
|
import math
|
@@ -78,7 +78,7 @@ def betas_for_alpha_bar(
|
|
78
78
|
# Copied from diffusers.schedulers.scheduling_ddim.rescale_zero_terminal_snr
|
79
79
|
def rescale_zero_terminal_snr(betas):
|
80
80
|
"""
|
81
|
-
Rescales betas to have zero terminal SNR Based on https://
|
81
|
+
Rescales betas to have zero terminal SNR Based on https://huggingface.co/papers/2305.08891 (Algorithm 1)
|
82
82
|
|
83
83
|
|
84
84
|
Args:
|
@@ -308,7 +308,7 @@ class UniPCMultistepScheduler(SchedulerMixin, ConfigMixin):
|
|
308
308
|
device (`str` or `torch.device`, *optional*):
|
309
309
|
The device to which the timesteps should be moved to. If `None`, the timesteps are not moved.
|
310
310
|
"""
|
311
|
-
# "linspace", "leading", "trailing" corresponds to annotation of Table 2. of https://
|
311
|
+
# "linspace", "leading", "trailing" corresponds to annotation of Table 2. of https://huggingface.co/papers/2305.08891
|
312
312
|
if self.config.timestep_spacing == "linspace":
|
313
313
|
timesteps = (
|
314
314
|
np.linspace(0, self.config.num_train_timesteps - 1, num_inference_steps + 1)
|
@@ -429,7 +429,7 @@ class UniPCMultistepScheduler(SchedulerMixin, ConfigMixin):
|
|
429
429
|
pixels from saturation at each step. We find that dynamic thresholding results in significantly better
|
430
430
|
photorealism as well as better image-text alignment, especially when using very large guidance weights."
|
431
431
|
|
432
|
-
https://
|
432
|
+
https://huggingface.co/papers/2205.11487
|
433
433
|
"""
|
434
434
|
dtype = sample.dtype
|
435
435
|
batch_size, channels, *remaining_dims = sample.shape
|
@@ -596,7 +596,7 @@ class UniPCMultistepScheduler(SchedulerMixin, ConfigMixin):
|
|
596
596
|
if len(args) > 1:
|
597
597
|
sample = args[1]
|
598
598
|
else:
|
599
|
-
raise ValueError("missing `sample` as a required
|
599
|
+
raise ValueError("missing `sample` as a required keyword argument")
|
600
600
|
if timestep is not None:
|
601
601
|
deprecate(
|
602
602
|
"timesteps",
|
@@ -672,12 +672,12 @@ class UniPCMultistepScheduler(SchedulerMixin, ConfigMixin):
|
|
672
672
|
if len(args) > 1:
|
673
673
|
sample = args[1]
|
674
674
|
else:
|
675
|
-
raise ValueError("
|
675
|
+
raise ValueError("missing `sample` as a required keyword argument")
|
676
676
|
if order is None:
|
677
677
|
if len(args) > 2:
|
678
678
|
order = args[2]
|
679
679
|
else:
|
680
|
-
raise ValueError("
|
680
|
+
raise ValueError("missing `order` as a required keyword argument")
|
681
681
|
if prev_timestep is not None:
|
682
682
|
deprecate(
|
683
683
|
"prev_timestep",
|
@@ -804,17 +804,17 @@ class UniPCMultistepScheduler(SchedulerMixin, ConfigMixin):
|
|
804
804
|
if len(args) > 1:
|
805
805
|
last_sample = args[1]
|
806
806
|
else:
|
807
|
-
raise ValueError("
|
807
|
+
raise ValueError("missing `last_sample` as a required keyword argument")
|
808
808
|
if this_sample is None:
|
809
809
|
if len(args) > 2:
|
810
810
|
this_sample = args[2]
|
811
811
|
else:
|
812
|
-
raise ValueError("
|
812
|
+
raise ValueError("missing `this_sample` as a required keyword argument")
|
813
813
|
if order is None:
|
814
814
|
if len(args) > 3:
|
815
815
|
order = args[3]
|
816
816
|
else:
|
817
|
-
raise ValueError("
|
817
|
+
raise ValueError("missing `order` as a required keyword argument")
|
818
818
|
if this_timestep is not None:
|
819
819
|
deprecate(
|
820
820
|
"this_timestep",
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright
|
1
|
+
# Copyright 2025 Microsoft and 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.
|
diffusers/training_utils.py
CHANGED
@@ -149,9 +149,9 @@ def compute_dream_and_update_latents(
|
|
149
149
|
dream_detail_preservation: float = 1.0,
|
150
150
|
) -> Tuple[Optional[torch.Tensor], Optional[torch.Tensor]]:
|
151
151
|
"""
|
152
|
-
Implements "DREAM (Diffusion Rectification and Estimation-Adaptive Models)" from
|
153
|
-
DREAM helps align training with sampling to help training be more
|
154
|
-
forward step without gradients.
|
152
|
+
Implements "DREAM (Diffusion Rectification and Estimation-Adaptive Models)" from
|
153
|
+
https://huggingface.co/papers/2312.00210. DREAM helps align training with sampling to help training be more
|
154
|
+
efficient and accurate at the cost of an extra forward step without gradients.
|
155
155
|
|
156
156
|
Args:
|
157
157
|
`unet`: The state unet to use to make a prediction.
|
@@ -247,6 +247,14 @@ def _set_state_dict_into_text_encoder(
|
|
247
247
|
set_peft_model_state_dict(text_encoder, text_encoder_state_dict, adapter_name="default")
|
248
248
|
|
249
249
|
|
250
|
+
def _collate_lora_metadata(modules_to_save: Dict[str, torch.nn.Module]) -> Dict[str, Any]:
|
251
|
+
metadatas = {}
|
252
|
+
for module_name, module in modules_to_save.items():
|
253
|
+
if module is not None:
|
254
|
+
metadatas[f"{module_name}_lora_adapter_metadata"] = module.peft_config["default"].to_dict()
|
255
|
+
return metadatas
|
256
|
+
|
257
|
+
|
250
258
|
def compute_density_for_timestep_sampling(
|
251
259
|
weighting_scheme: str,
|
252
260
|
batch_size: int,
|
@@ -261,7 +269,7 @@ def compute_density_for_timestep_sampling(
|
|
261
269
|
|
262
270
|
Courtesy: This was contributed by Rafie Walker in https://github.com/huggingface/diffusers/pull/8528.
|
263
271
|
|
264
|
-
SD3 paper reference: https://
|
272
|
+
SD3 paper reference: https://huggingface.co/papers/2403.03206v1.
|
265
273
|
"""
|
266
274
|
if weighting_scheme == "logit_normal":
|
267
275
|
u = torch.normal(mean=logit_mean, std=logit_std, size=(batch_size,), device=device, generator=generator)
|
@@ -280,7 +288,7 @@ def compute_loss_weighting_for_sd3(weighting_scheme: str, sigmas=None):
|
|
280
288
|
|
281
289
|
Courtesy: This was contributed by Rafie Walker in https://github.com/huggingface/diffusers/pull/8528.
|
282
290
|
|
283
|
-
SD3 paper reference: https://
|
291
|
+
SD3 paper reference: https://huggingface.co/papers/2403.03206v1.
|
284
292
|
"""
|
285
293
|
if weighting_scheme == "sigma_sqrt":
|
286
294
|
weighting = (sigmas**-2.0).float()
|
diffusers/utils/__init__.py
CHANGED
@@ -62,21 +62,25 @@ from .import_utils import (
|
|
62
62
|
get_objects_from_module,
|
63
63
|
is_accelerate_available,
|
64
64
|
is_accelerate_version,
|
65
|
+
is_better_profanity_available,
|
65
66
|
is_bitsandbytes_available,
|
66
67
|
is_bitsandbytes_version,
|
67
68
|
is_bs4_available,
|
69
|
+
is_cosmos_guardrail_available,
|
68
70
|
is_flax_available,
|
69
71
|
is_ftfy_available,
|
70
72
|
is_gguf_available,
|
71
73
|
is_gguf_version,
|
72
74
|
is_google_colab,
|
73
75
|
is_hf_hub_version,
|
76
|
+
is_hpu_available,
|
74
77
|
is_inflect_available,
|
75
78
|
is_invisible_watermark_available,
|
76
79
|
is_k_diffusion_available,
|
77
80
|
is_k_diffusion_version,
|
78
81
|
is_librosa_available,
|
79
82
|
is_matplotlib_available,
|
83
|
+
is_nltk_available,
|
80
84
|
is_note_seq_available,
|
81
85
|
is_onnx_available,
|
82
86
|
is_opencv_available,
|
@@ -84,6 +88,7 @@ from .import_utils import (
|
|
84
88
|
is_optimum_quanto_version,
|
85
89
|
is_peft_available,
|
86
90
|
is_peft_version,
|
91
|
+
is_pytorch_retinaface_available,
|
87
92
|
is_safetensors_available,
|
88
93
|
is_scipy_available,
|
89
94
|
is_sentencepiece_available,
|
diffusers/utils/doc_utils.py
CHANGED