diffusers 0.33.1__py3-none-any.whl → 0.35.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 +145 -1
- diffusers/callbacks.py +35 -0
- diffusers/commands/__init__.py +1 -1
- diffusers/commands/custom_blocks.py +134 -0
- diffusers/commands/diffusers_cli.py +3 -1
- diffusers/commands/env.py +1 -1
- diffusers/commands/fp16_safetensors.py +2 -2
- diffusers/configuration_utils.py +11 -2
- diffusers/dependency_versions_check.py +1 -1
- diffusers/dependency_versions_table.py +3 -3
- diffusers/experimental/rl/value_guided_sampling.py +1 -1
- diffusers/guiders/__init__.py +41 -0
- diffusers/guiders/adaptive_projected_guidance.py +188 -0
- diffusers/guiders/auto_guidance.py +190 -0
- diffusers/guiders/classifier_free_guidance.py +141 -0
- diffusers/guiders/classifier_free_zero_star_guidance.py +152 -0
- diffusers/guiders/frequency_decoupled_guidance.py +327 -0
- diffusers/guiders/guider_utils.py +309 -0
- diffusers/guiders/perturbed_attention_guidance.py +271 -0
- diffusers/guiders/skip_layer_guidance.py +262 -0
- diffusers/guiders/smoothed_energy_guidance.py +251 -0
- diffusers/guiders/tangential_classifier_free_guidance.py +143 -0
- diffusers/hooks/__init__.py +17 -0
- diffusers/hooks/_common.py +56 -0
- diffusers/hooks/_helpers.py +293 -0
- diffusers/hooks/faster_cache.py +9 -8
- diffusers/hooks/first_block_cache.py +259 -0
- diffusers/hooks/group_offloading.py +332 -227
- diffusers/hooks/hooks.py +58 -3
- diffusers/hooks/layer_skip.py +263 -0
- diffusers/hooks/layerwise_casting.py +5 -10
- diffusers/hooks/pyramid_attention_broadcast.py +15 -12
- diffusers/hooks/smoothed_energy_guidance_utils.py +167 -0
- diffusers/hooks/utils.py +43 -0
- diffusers/image_processor.py +7 -2
- diffusers/loaders/__init__.py +10 -0
- diffusers/loaders/ip_adapter.py +260 -18
- diffusers/loaders/lora_base.py +261 -127
- diffusers/loaders/lora_conversion_utils.py +657 -35
- diffusers/loaders/lora_pipeline.py +2778 -1246
- diffusers/loaders/peft.py +78 -112
- diffusers/loaders/single_file.py +2 -2
- diffusers/loaders/single_file_model.py +64 -15
- diffusers/loaders/single_file_utils.py +395 -7
- diffusers/loaders/textual_inversion.py +3 -2
- diffusers/loaders/transformer_flux.py +10 -11
- diffusers/loaders/transformer_sd3.py +8 -3
- diffusers/loaders/unet.py +24 -21
- diffusers/loaders/unet_loader_utils.py +6 -3
- diffusers/loaders/utils.py +1 -1
- diffusers/models/__init__.py +23 -1
- diffusers/models/activations.py +5 -5
- diffusers/models/adapter.py +2 -3
- diffusers/models/attention.py +488 -7
- diffusers/models/attention_dispatch.py +1218 -0
- diffusers/models/attention_flax.py +10 -10
- diffusers/models/attention_processor.py +113 -667
- diffusers/models/auto_model.py +49 -12
- diffusers/models/autoencoders/__init__.py +2 -0
- diffusers/models/autoencoders/autoencoder_asym_kl.py +4 -4
- diffusers/models/autoencoders/autoencoder_dc.py +17 -4
- diffusers/models/autoencoders/autoencoder_kl.py +5 -5
- 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 +1110 -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_qwenimage.py +1070 -0
- diffusers/models/autoencoders/autoencoder_kl_temporal_decoder.py +4 -4
- diffusers/models/autoencoders/autoencoder_kl_wan.py +626 -62
- 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 +32 -10
- 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 +21 -20
- 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 +5 -5
- 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 +36 -46
- diffusers/models/embeddings_flax.py +2 -2
- diffusers/models/lora.py +3 -3
- diffusers/models/model_loading_utils.py +233 -1
- diffusers/models/modeling_flax_utils.py +1 -2
- diffusers/models/modeling_utils.py +203 -108
- diffusers/models/normalization.py +4 -4
- diffusers/models/resnet.py +2 -2
- diffusers/models/resnet_flax.py +1 -1
- diffusers/models/transformers/__init__.py +7 -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 +641 -0
- diffusers/models/transformers/transformer_cogview3plus.py +5 -10
- diffusers/models/transformers/transformer_cogview4.py +353 -27
- diffusers/models/transformers/transformer_cosmos.py +586 -0
- diffusers/models/transformers/transformer_flux.py +376 -138
- diffusers/models/transformers/transformer_hidream_image.py +942 -0
- diffusers/models/transformers/transformer_hunyuan_video.py +12 -8
- diffusers/models/transformers/transformer_hunyuan_video_framepack.py +416 -0
- diffusers/models/transformers/transformer_ltx.py +105 -24
- 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_qwenimage.py +645 -0
- diffusers/models/transformers/transformer_sd3.py +7 -7
- diffusers/models/transformers/transformer_skyreels_v2.py +607 -0
- diffusers/models/transformers/transformer_temporal.py +1 -1
- diffusers/models/transformers/transformer_wan.py +316 -87
- diffusers/models/transformers/transformer_wan_vace.py +387 -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 +4 -3
- 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/modular_pipelines/__init__.py +83 -0
- diffusers/modular_pipelines/components_manager.py +1068 -0
- diffusers/modular_pipelines/flux/__init__.py +66 -0
- diffusers/modular_pipelines/flux/before_denoise.py +689 -0
- diffusers/modular_pipelines/flux/decoders.py +109 -0
- diffusers/modular_pipelines/flux/denoise.py +227 -0
- diffusers/modular_pipelines/flux/encoders.py +412 -0
- diffusers/modular_pipelines/flux/modular_blocks.py +181 -0
- diffusers/modular_pipelines/flux/modular_pipeline.py +59 -0
- diffusers/modular_pipelines/modular_pipeline.py +2446 -0
- diffusers/modular_pipelines/modular_pipeline_utils.py +672 -0
- diffusers/modular_pipelines/node_utils.py +665 -0
- diffusers/modular_pipelines/stable_diffusion_xl/__init__.py +77 -0
- diffusers/modular_pipelines/stable_diffusion_xl/before_denoise.py +1874 -0
- diffusers/modular_pipelines/stable_diffusion_xl/decoders.py +208 -0
- diffusers/modular_pipelines/stable_diffusion_xl/denoise.py +771 -0
- diffusers/modular_pipelines/stable_diffusion_xl/encoders.py +887 -0
- diffusers/modular_pipelines/stable_diffusion_xl/modular_blocks.py +380 -0
- diffusers/modular_pipelines/stable_diffusion_xl/modular_pipeline.py +365 -0
- diffusers/modular_pipelines/wan/__init__.py +66 -0
- diffusers/modular_pipelines/wan/before_denoise.py +365 -0
- diffusers/modular_pipelines/wan/decoders.py +105 -0
- diffusers/modular_pipelines/wan/denoise.py +261 -0
- diffusers/modular_pipelines/wan/encoders.py +242 -0
- diffusers/modular_pipelines/wan/modular_blocks.py +144 -0
- diffusers/modular_pipelines/wan/modular_pipeline.py +90 -0
- diffusers/pipelines/__init__.py +68 -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 +22 -13
- diffusers/pipelines/aura_flow/pipeline_aura_flow.py +48 -11
- diffusers/pipelines/auto_pipeline.py +23 -20
- 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 +17 -16
- diffusers/pipelines/cogvideo/pipeline_cogvideox_fun_control.py +17 -16
- diffusers/pipelines/cogvideo/pipeline_cogvideox_image2video.py +18 -17
- diffusers/pipelines/cogvideo/pipeline_cogvideox_video2video.py +17 -16
- diffusers/pipelines/cogview3/pipeline_cogview3plus.py +9 -9
- diffusers/pipelines/cogview4/pipeline_cogview4.py +23 -22
- 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 +11 -10
- 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 +226 -107
- diffusers/pipelines/controlnet/pipeline_controlnet_union_sd_xl.py +12 -8
- diffusers/pipelines/controlnet/pipeline_controlnet_union_sd_xl_img2img.py +207 -105
- 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 +8 -8
- 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 +4 -2
- 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/__init__.py +4 -0
- diffusers/pipelines/flux/modeling_flux.py +1 -1
- diffusers/pipelines/flux/pipeline_flux.py +37 -36
- diffusers/pipelines/flux/pipeline_flux_control.py +9 -9
- diffusers/pipelines/flux/pipeline_flux_control_img2img.py +7 -7
- diffusers/pipelines/flux/pipeline_flux_control_inpaint.py +7 -7
- diffusers/pipelines/flux/pipeline_flux_controlnet.py +7 -7
- diffusers/pipelines/flux/pipeline_flux_controlnet_image_to_image.py +31 -23
- diffusers/pipelines/flux/pipeline_flux_controlnet_inpainting.py +3 -2
- diffusers/pipelines/flux/pipeline_flux_fill.py +7 -7
- diffusers/pipelines/flux/pipeline_flux_img2img.py +40 -7
- diffusers/pipelines/flux/pipeline_flux_inpaint.py +12 -7
- diffusers/pipelines/flux/pipeline_flux_kontext.py +1134 -0
- diffusers/pipelines/flux/pipeline_flux_kontext_inpaint.py +1460 -0
- diffusers/pipelines/flux/pipeline_flux_prior_redux.py +2 -2
- diffusers/pipelines/flux/pipeline_output.py +6 -4
- 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 +26 -25
- 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 +64 -18
- diffusers/pipelines/ltx/pipeline_ltx_condition.py +117 -38
- diffusers/pipelines/ltx/pipeline_ltx_image2video.py +63 -18
- 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 +15 -14
- 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 +5 -6
- diffusers/pipelines/pipeline_loading_utils.py +113 -15
- diffusers/pipelines/pipeline_utils.py +127 -48
- diffusers/pipelines/pixart_alpha/pipeline_pixart_alpha.py +14 -12
- diffusers/pipelines/pixart_alpha/pipeline_pixart_sigma.py +31 -11
- diffusers/pipelines/qwenimage/__init__.py +55 -0
- diffusers/pipelines/qwenimage/pipeline_output.py +21 -0
- diffusers/pipelines/qwenimage/pipeline_qwenimage.py +726 -0
- diffusers/pipelines/qwenimage/pipeline_qwenimage_edit.py +882 -0
- diffusers/pipelines/qwenimage/pipeline_qwenimage_img2img.py +829 -0
- diffusers/pipelines/qwenimage/pipeline_qwenimage_inpaint.py +1015 -0
- 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/skyreels_v2/__init__.py +59 -0
- diffusers/pipelines/skyreels_v2/pipeline_output.py +20 -0
- diffusers/pipelines/skyreels_v2/pipeline_skyreels_v2.py +610 -0
- diffusers/pipelines/skyreels_v2/pipeline_skyreels_v2_diffusion_forcing.py +978 -0
- diffusers/pipelines/skyreels_v2/pipeline_skyreels_v2_diffusion_forcing_i2v.py +1059 -0
- diffusers/pipelines/skyreels_v2/pipeline_skyreels_v2_diffusion_forcing_v2v.py +1063 -0
- diffusers/pipelines/skyreels_v2/pipeline_skyreels_v2_i2v.py +745 -0
- 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 +12 -11
- diffusers/pipelines/stable_diffusion/pipeline_onnx_stable_diffusion_img2img.py +10 -10
- diffusers/pipelines/stable_diffusion/pipeline_onnx_stable_diffusion_inpaint.py +11 -11
- diffusers/pipelines/stable_diffusion/pipeline_onnx_stable_diffusion_upscale.py +10 -10
- diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion.py +10 -9
- 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 +13 -12
- 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 +91 -30
- diffusers/pipelines/wan/pipeline_wan_i2v.py +145 -45
- diffusers/pipelines/wan/pipeline_wan_vace.py +975 -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 +3 -1
- diffusers/quantizers/base.py +17 -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 +108 -16
- diffusers/quantizers/pipe_quant_config.py +202 -0
- diffusers/quantizers/quantization_config.py +18 -16
- diffusers/quantizers/quanto/quanto_quantizer.py +4 -0
- diffusers/quantizers/torchao/torchao_quantizer.py +31 -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 +16 -9
- diffusers/schedulers/scheduling_dpm_cogvideox.py +5 -5
- diffusers/schedulers/scheduling_dpmsolver_multistep.py +18 -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 +19 -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 -2
- 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 +21 -12
- diffusers/schedulers/scheduling_utils.py +3 -3
- diffusers/schedulers/scheduling_utils_flax.py +2 -2
- diffusers/schedulers/scheduling_vq_diffusion.py +1 -1
- diffusers/training_utils.py +91 -5
- diffusers/utils/__init__.py +15 -0
- diffusers/utils/accelerate_utils.py +1 -1
- diffusers/utils/constants.py +4 -0
- diffusers/utils/doc_utils.py +1 -1
- diffusers/utils/dummy_pt_objects.py +432 -0
- diffusers/utils/dummy_torch_and_transformers_objects.py +480 -0
- diffusers/utils/dynamic_modules_utils.py +85 -8
- diffusers/utils/export_utils.py +1 -1
- diffusers/utils/hub_utils.py +33 -17
- diffusers/utils/import_utils.py +151 -18
- diffusers/utils/logging.py +1 -1
- diffusers/utils/outputs.py +2 -1
- diffusers/utils/peft_utils.py +96 -10
- diffusers/utils/state_dict_utils.py +20 -3
- diffusers/utils/testing_utils.py +195 -17
- diffusers/utils/torch_utils.py +43 -5
- diffusers/video_processor.py +2 -2
- {diffusers-0.33.1.dist-info → diffusers-0.35.0.dist-info}/METADATA +72 -57
- diffusers-0.35.0.dist-info/RECORD +703 -0
- {diffusers-0.33.1.dist-info → diffusers-0.35.0.dist-info}/WHEEL +1 -1
- diffusers-0.33.1.dist-info/RECORD +0 -608
- {diffusers-0.33.1.dist-info → diffusers-0.35.0.dist-info}/LICENSE +0 -0
- {diffusers-0.33.1.dist-info → diffusers-0.35.0.dist-info}/entry_points.txt +0 -0
- {diffusers-0.33.1.dist-info → diffusers-0.35.0.dist-info}/top_level.txt +0 -0
diffusers/utils/testing_utils.py
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
import functools
|
2
|
+
import glob
|
2
3
|
import importlib
|
3
4
|
import importlib.metadata
|
4
5
|
import inspect
|
@@ -18,7 +19,7 @@ from collections import UserDict
|
|
18
19
|
from contextlib import contextmanager
|
19
20
|
from io import BytesIO, StringIO
|
20
21
|
from pathlib import Path
|
21
|
-
from typing import TYPE_CHECKING, Any, Callable, Dict, List, Optional, Tuple, Union
|
22
|
+
from typing import TYPE_CHECKING, Any, Callable, Dict, List, Optional, Set, Tuple, Union
|
22
23
|
|
23
24
|
import numpy as np
|
24
25
|
import PIL.Image
|
@@ -35,9 +36,11 @@ from .import_utils import (
|
|
35
36
|
is_compel_available,
|
36
37
|
is_flax_available,
|
37
38
|
is_gguf_available,
|
39
|
+
is_kernels_available,
|
38
40
|
is_note_seq_available,
|
39
41
|
is_onnx_available,
|
40
42
|
is_opencv_available,
|
43
|
+
is_optimum_quanto_available,
|
41
44
|
is_peft_available,
|
42
45
|
is_timm_available,
|
43
46
|
is_torch_available,
|
@@ -132,6 +135,29 @@ def numpy_cosine_similarity_distance(a, b):
|
|
132
135
|
return distance
|
133
136
|
|
134
137
|
|
138
|
+
def check_if_dicts_are_equal(dict1, dict2):
|
139
|
+
dict1, dict2 = dict1.copy(), dict2.copy()
|
140
|
+
|
141
|
+
for key, value in dict1.items():
|
142
|
+
if isinstance(value, set):
|
143
|
+
dict1[key] = sorted(value)
|
144
|
+
for key, value in dict2.items():
|
145
|
+
if isinstance(value, set):
|
146
|
+
dict2[key] = sorted(value)
|
147
|
+
|
148
|
+
for key in dict1:
|
149
|
+
if key not in dict2:
|
150
|
+
return False
|
151
|
+
if dict1[key] != dict2[key]:
|
152
|
+
return False
|
153
|
+
|
154
|
+
for key in dict2:
|
155
|
+
if key not in dict1:
|
156
|
+
return False
|
157
|
+
|
158
|
+
return True
|
159
|
+
|
160
|
+
|
135
161
|
def print_tensor_test(
|
136
162
|
tensor,
|
137
163
|
limit_to_slices=None,
|
@@ -290,6 +316,18 @@ def require_torch_version_greater_equal(torch_version):
|
|
290
316
|
return decorator
|
291
317
|
|
292
318
|
|
319
|
+
def require_torch_version_greater(torch_version):
|
320
|
+
"""Decorator marking a test that requires torch with a specific version greater."""
|
321
|
+
|
322
|
+
def decorator(test_case):
|
323
|
+
correct_torch_version = is_torch_available() and is_torch_version(">", torch_version)
|
324
|
+
return unittest.skipUnless(
|
325
|
+
correct_torch_version, f"test requires torch with the version greater than {torch_version}"
|
326
|
+
)(test_case)
|
327
|
+
|
328
|
+
return decorator
|
329
|
+
|
330
|
+
|
293
331
|
def require_torch_gpu(test_case):
|
294
332
|
"""Decorator marking a test that requires CUDA and PyTorch."""
|
295
333
|
return unittest.skipUnless(is_torch_available() and torch_device == "cuda", "test requires PyTorch+CUDA")(
|
@@ -299,9 +337,7 @@ def require_torch_gpu(test_case):
|
|
299
337
|
|
300
338
|
def require_torch_cuda_compatibility(expected_compute_capability):
|
301
339
|
def decorator(test_case):
|
302
|
-
if
|
303
|
-
return unittest.skip(test_case)
|
304
|
-
else:
|
340
|
+
if torch.cuda.is_available():
|
305
341
|
current_compute_capability = get_torch_cuda_device_capability()
|
306
342
|
return unittest.skipUnless(
|
307
343
|
float(current_compute_capability) == float(expected_compute_capability),
|
@@ -387,6 +423,10 @@ def require_big_accelerator(test_case):
|
|
387
423
|
Decorator marking a test that requires a bigger hardware accelerator (24GB) for execution. Some example pipelines:
|
388
424
|
Flux, SD3, Cog, etc.
|
389
425
|
"""
|
426
|
+
import pytest
|
427
|
+
|
428
|
+
test_case = pytest.mark.big_accelerator(test_case)
|
429
|
+
|
390
430
|
if not is_torch_available():
|
391
431
|
return unittest.skip("test requires PyTorch")(test_case)
|
392
432
|
|
@@ -486,6 +526,13 @@ def require_bitsandbytes(test_case):
|
|
486
526
|
return unittest.skipUnless(is_bitsandbytes_available(), "test requires bitsandbytes")(test_case)
|
487
527
|
|
488
528
|
|
529
|
+
def require_quanto(test_case):
|
530
|
+
"""
|
531
|
+
Decorator marking a test that requires quanto. These tests are skipped when quanto isn't installed.
|
532
|
+
"""
|
533
|
+
return unittest.skipUnless(is_optimum_quanto_available(), "test requires quanto")(test_case)
|
534
|
+
|
535
|
+
|
489
536
|
def require_accelerate(test_case):
|
490
537
|
"""
|
491
538
|
Decorator marking a test that requires accelerate. These tests are skipped when accelerate isn't installed.
|
@@ -588,6 +635,18 @@ def require_torchao_version_greater_or_equal(torchao_version):
|
|
588
635
|
return decorator
|
589
636
|
|
590
637
|
|
638
|
+
def require_kernels_version_greater_or_equal(kernels_version):
|
639
|
+
def decorator(test_case):
|
640
|
+
correct_kernels_version = is_kernels_available() and version.parse(
|
641
|
+
version.parse(importlib.metadata.version("kernels")).base_version
|
642
|
+
) >= version.parse(kernels_version)
|
643
|
+
return unittest.skipUnless(
|
644
|
+
correct_kernels_version, f"Test requires kernels with version greater than {kernels_version}."
|
645
|
+
)(test_case)
|
646
|
+
|
647
|
+
return decorator
|
648
|
+
|
649
|
+
|
591
650
|
def deprecate_after_peft_backend(test_case):
|
592
651
|
"""
|
593
652
|
Decorator marking a test that will be skipped after PEFT backend
|
@@ -627,10 +686,10 @@ def load_numpy(arry: Union[str, np.ndarray], local_path: Optional[str] = None) -
|
|
627
686
|
return arry
|
628
687
|
|
629
688
|
|
630
|
-
def load_pt(url: str, map_location: str):
|
689
|
+
def load_pt(url: str, map_location: Optional[str] = None, weights_only: Optional[bool] = True):
|
631
690
|
response = requests.get(url, timeout=DIFFUSERS_REQUEST_TIMEOUT)
|
632
691
|
response.raise_for_status()
|
633
|
-
arry = torch.load(BytesIO(response.content), map_location=map_location)
|
692
|
+
arry = torch.load(BytesIO(response.content), map_location=map_location, weights_only=weights_only)
|
634
693
|
return arry
|
635
694
|
|
636
695
|
|
@@ -949,10 +1008,10 @@ def pytest_terminal_summary_main(tr, id):
|
|
949
1008
|
config.option.tbstyle = orig_tbstyle
|
950
1009
|
|
951
1010
|
|
952
|
-
#
|
1011
|
+
# Adapted from https://github.com/huggingface/transformers/blob/000e52aec8850d3fe2f360adc6fd256e5b47fe4c/src/transformers/testing_utils.py#L1905
|
953
1012
|
def is_flaky(max_attempts: int = 5, wait_before_retry: Optional[float] = None, description: Optional[str] = None):
|
954
1013
|
"""
|
955
|
-
To decorate flaky tests. They will be retried on failures.
|
1014
|
+
To decorate flaky tests (methods or entire classes). They will be retried on failures.
|
956
1015
|
|
957
1016
|
Args:
|
958
1017
|
max_attempts (`int`, *optional*, defaults to 5):
|
@@ -964,22 +1023,33 @@ def is_flaky(max_attempts: int = 5, wait_before_retry: Optional[float] = None, d
|
|
964
1023
|
etc.)
|
965
1024
|
"""
|
966
1025
|
|
967
|
-
def decorator(
|
968
|
-
|
1026
|
+
def decorator(obj):
|
1027
|
+
# If decorating a class, wrap each test method on it
|
1028
|
+
if inspect.isclass(obj):
|
1029
|
+
for attr_name, attr_value in list(obj.__dict__.items()):
|
1030
|
+
if callable(attr_value) and attr_name.startswith("test"):
|
1031
|
+
# recursively decorate the method
|
1032
|
+
setattr(obj, attr_name, decorator(attr_value))
|
1033
|
+
return obj
|
1034
|
+
|
1035
|
+
# Otherwise we're decorating a single test function / method
|
1036
|
+
@functools.wraps(obj)
|
969
1037
|
def wrapper(*args, **kwargs):
|
970
1038
|
retry_count = 1
|
971
|
-
|
972
1039
|
while retry_count < max_attempts:
|
973
1040
|
try:
|
974
|
-
return
|
975
|
-
|
1041
|
+
return obj(*args, **kwargs)
|
976
1042
|
except Exception as err:
|
977
|
-
|
1043
|
+
msg = (
|
1044
|
+
f"[FLAKY] {description or obj.__name__!r} "
|
1045
|
+
f"failed on attempt {retry_count}/{max_attempts}: {err}"
|
1046
|
+
)
|
1047
|
+
print(msg, file=sys.stderr)
|
978
1048
|
if wait_before_retry is not None:
|
979
1049
|
time.sleep(wait_before_retry)
|
980
1050
|
retry_count += 1
|
981
1051
|
|
982
|
-
return
|
1052
|
+
return obj(*args, **kwargs)
|
983
1053
|
|
984
1054
|
return wrapper
|
985
1055
|
|
@@ -1186,6 +1256,13 @@ if is_torch_available():
|
|
1186
1256
|
"mps": 0,
|
1187
1257
|
"default": 0,
|
1188
1258
|
}
|
1259
|
+
BACKEND_SYNCHRONIZE = {
|
1260
|
+
"cuda": torch.cuda.synchronize,
|
1261
|
+
"xpu": getattr(torch.xpu, "synchronize", None),
|
1262
|
+
"cpu": None,
|
1263
|
+
"mps": None,
|
1264
|
+
"default": None,
|
1265
|
+
}
|
1189
1266
|
|
1190
1267
|
|
1191
1268
|
# This dispatches a defined function according to the accelerator from the function definitions.
|
@@ -1197,8 +1274,8 @@ def _device_agnostic_dispatch(device: str, dispatch_table: Dict[str, Callable],
|
|
1197
1274
|
|
1198
1275
|
# Some device agnostic functions return values. Need to guard against 'None' instead at
|
1199
1276
|
# user level
|
1200
|
-
if fn
|
1201
|
-
return
|
1277
|
+
if not callable(fn):
|
1278
|
+
return fn
|
1202
1279
|
|
1203
1280
|
return fn(*args, **kwargs)
|
1204
1281
|
|
@@ -1208,6 +1285,10 @@ def backend_manual_seed(device: str, seed: int):
|
|
1208
1285
|
return _device_agnostic_dispatch(device, BACKEND_MANUAL_SEED, seed)
|
1209
1286
|
|
1210
1287
|
|
1288
|
+
def backend_synchronize(device: str):
|
1289
|
+
return _device_agnostic_dispatch(device, BACKEND_SYNCHRONIZE)
|
1290
|
+
|
1291
|
+
|
1211
1292
|
def backend_empty_cache(device: str):
|
1212
1293
|
return _device_agnostic_dispatch(device, BACKEND_EMPTY_CACHE)
|
1213
1294
|
|
@@ -1325,6 +1406,103 @@ if TYPE_CHECKING:
|
|
1325
1406
|
else:
|
1326
1407
|
DevicePropertiesUserDict = UserDict
|
1327
1408
|
|
1409
|
+
if is_torch_available():
|
1410
|
+
from diffusers.hooks._common import _GO_LC_SUPPORTED_PYTORCH_LAYERS
|
1411
|
+
from diffusers.hooks.group_offloading import (
|
1412
|
+
_GROUP_ID_LAZY_LEAF,
|
1413
|
+
_compute_group_hash,
|
1414
|
+
_find_parent_module_in_module_dict,
|
1415
|
+
_gather_buffers_with_no_group_offloading_parent,
|
1416
|
+
_gather_parameters_with_no_group_offloading_parent,
|
1417
|
+
)
|
1418
|
+
|
1419
|
+
def _get_expected_safetensors_files(
|
1420
|
+
module: torch.nn.Module,
|
1421
|
+
offload_to_disk_path: str,
|
1422
|
+
offload_type: str,
|
1423
|
+
num_blocks_per_group: Optional[int] = None,
|
1424
|
+
) -> Set[str]:
|
1425
|
+
expected_files = set()
|
1426
|
+
|
1427
|
+
def get_hashed_filename(group_id: str) -> str:
|
1428
|
+
short_hash = _compute_group_hash(group_id)
|
1429
|
+
return os.path.join(offload_to_disk_path, f"group_{short_hash}.safetensors")
|
1430
|
+
|
1431
|
+
if offload_type == "block_level":
|
1432
|
+
if num_blocks_per_group is None:
|
1433
|
+
raise ValueError("num_blocks_per_group must be provided for 'block_level' offloading.")
|
1434
|
+
|
1435
|
+
# Handle groups of ModuleList and Sequential blocks
|
1436
|
+
unmatched_modules = []
|
1437
|
+
for name, submodule in module.named_children():
|
1438
|
+
if not isinstance(submodule, (torch.nn.ModuleList, torch.nn.Sequential)):
|
1439
|
+
unmatched_modules.append(module)
|
1440
|
+
continue
|
1441
|
+
|
1442
|
+
for i in range(0, len(submodule), num_blocks_per_group):
|
1443
|
+
current_modules = submodule[i : i + num_blocks_per_group]
|
1444
|
+
if not current_modules:
|
1445
|
+
continue
|
1446
|
+
group_id = f"{name}_{i}_{i + len(current_modules) - 1}"
|
1447
|
+
expected_files.add(get_hashed_filename(group_id))
|
1448
|
+
|
1449
|
+
# Handle the group for unmatched top-level modules and parameters
|
1450
|
+
for module in unmatched_modules:
|
1451
|
+
expected_files.add(get_hashed_filename(f"{module.__class__.__name__}_unmatched_group"))
|
1452
|
+
|
1453
|
+
elif offload_type == "leaf_level":
|
1454
|
+
# Handle leaf-level module groups
|
1455
|
+
for name, submodule in module.named_modules():
|
1456
|
+
if isinstance(submodule, _GO_LC_SUPPORTED_PYTORCH_LAYERS):
|
1457
|
+
# These groups will always have parameters, so a file is expected
|
1458
|
+
expected_files.add(get_hashed_filename(name))
|
1459
|
+
|
1460
|
+
# Handle groups for non-leaf parameters/buffers
|
1461
|
+
modules_with_group_offloading = {
|
1462
|
+
name for name, sm in module.named_modules() if isinstance(sm, _GO_LC_SUPPORTED_PYTORCH_LAYERS)
|
1463
|
+
}
|
1464
|
+
parameters = _gather_parameters_with_no_group_offloading_parent(module, modules_with_group_offloading)
|
1465
|
+
buffers = _gather_buffers_with_no_group_offloading_parent(module, modules_with_group_offloading)
|
1466
|
+
|
1467
|
+
all_orphans = parameters + buffers
|
1468
|
+
if all_orphans:
|
1469
|
+
parent_to_tensors = {}
|
1470
|
+
module_dict = dict(module.named_modules())
|
1471
|
+
for tensor_name, _ in all_orphans:
|
1472
|
+
parent_name = _find_parent_module_in_module_dict(tensor_name, module_dict)
|
1473
|
+
if parent_name not in parent_to_tensors:
|
1474
|
+
parent_to_tensors[parent_name] = []
|
1475
|
+
parent_to_tensors[parent_name].append(tensor_name)
|
1476
|
+
|
1477
|
+
for parent_name in parent_to_tensors:
|
1478
|
+
# A file is expected for each parent that gathers orphaned tensors
|
1479
|
+
expected_files.add(get_hashed_filename(parent_name))
|
1480
|
+
expected_files.add(get_hashed_filename(_GROUP_ID_LAZY_LEAF))
|
1481
|
+
|
1482
|
+
else:
|
1483
|
+
raise ValueError(f"Unsupported offload_type: {offload_type}")
|
1484
|
+
|
1485
|
+
return expected_files
|
1486
|
+
|
1487
|
+
def _check_safetensors_serialization(
|
1488
|
+
module: torch.nn.Module,
|
1489
|
+
offload_to_disk_path: str,
|
1490
|
+
offload_type: str,
|
1491
|
+
num_blocks_per_group: Optional[int] = None,
|
1492
|
+
) -> bool:
|
1493
|
+
if not os.path.isdir(offload_to_disk_path):
|
1494
|
+
return False, None, None
|
1495
|
+
|
1496
|
+
expected_files = _get_expected_safetensors_files(
|
1497
|
+
module, offload_to_disk_path, offload_type, num_blocks_per_group
|
1498
|
+
)
|
1499
|
+
actual_files = set(glob.glob(os.path.join(offload_to_disk_path, "*.safetensors")))
|
1500
|
+
missing_files = expected_files - actual_files
|
1501
|
+
extra_files = actual_files - expected_files
|
1502
|
+
|
1503
|
+
is_correct = not missing_files and not extra_files
|
1504
|
+
return is_correct, extra_files, missing_files
|
1505
|
+
|
1328
1506
|
|
1329
1507
|
class Expectations(DevicePropertiesUserDict):
|
1330
1508
|
def get_expectation(self) -> Any:
|
diffusers/utils/torch_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.
|
@@ -15,10 +15,11 @@
|
|
15
15
|
PyTorch utilities: Utilities related to PyTorch
|
16
16
|
"""
|
17
17
|
|
18
|
+
import functools
|
18
19
|
from typing import List, Optional, Tuple, Union
|
19
20
|
|
20
21
|
from . import logging
|
21
|
-
from .import_utils import is_torch_available, is_torch_version
|
22
|
+
from .import_utils import is_torch_available, is_torch_npu_available, is_torch_version
|
22
23
|
|
23
24
|
|
24
25
|
if is_torch_available():
|
@@ -38,7 +39,7 @@ except (ImportError, ModuleNotFoundError):
|
|
38
39
|
def randn_tensor(
|
39
40
|
shape: Union[Tuple, List],
|
40
41
|
generator: Optional[Union[List["torch.Generator"], "torch.Generator"]] = None,
|
41
|
-
device: Optional["torch.device"] = None,
|
42
|
+
device: Optional[Union[str, "torch.device"]] = None,
|
42
43
|
dtype: Optional["torch.dtype"] = None,
|
43
44
|
layout: Optional["torch.layout"] = None,
|
44
45
|
):
|
@@ -47,6 +48,8 @@ def randn_tensor(
|
|
47
48
|
is always created on the CPU.
|
48
49
|
"""
|
49
50
|
# device on which tensor is created defaults to device
|
51
|
+
if isinstance(device, str):
|
52
|
+
device = torch.device(device)
|
50
53
|
rand_device = device
|
51
54
|
batch_size = shape[0]
|
52
55
|
|
@@ -61,7 +64,7 @@ def randn_tensor(
|
|
61
64
|
logger.info(
|
62
65
|
f"The passed generator was created on 'cpu' even though a tensor on {device} was expected."
|
63
66
|
f" Tensors will be created on 'cpu' and then moved to {device}. Note that one can probably"
|
64
|
-
f"
|
67
|
+
f" slightly speed up this function by passing a generator that was created on the {device} device."
|
65
68
|
)
|
66
69
|
elif gen_device_type != device.type and gen_device_type == "cuda":
|
67
70
|
raise ValueError(f"Cannot generate a {device} tensor from a generator of type {gen_device_type}.")
|
@@ -90,8 +93,13 @@ def is_compiled_module(module) -> bool:
|
|
90
93
|
return isinstance(module, torch._dynamo.eval_frame.OptimizedModule)
|
91
94
|
|
92
95
|
|
96
|
+
def unwrap_module(module):
|
97
|
+
"""Unwraps a module if it was compiled with torch.compile()"""
|
98
|
+
return module._orig_mod if is_compiled_module(module) else module
|
99
|
+
|
100
|
+
|
93
101
|
def fourier_filter(x_in: "torch.Tensor", threshold: int, scale: int) -> "torch.Tensor":
|
94
|
-
"""Fourier filter as introduced in FreeU (https://
|
102
|
+
"""Fourier filter as introduced in FreeU (https://huggingface.co/papers/2309.11497).
|
95
103
|
|
96
104
|
This version of the method comes from here:
|
97
105
|
https://github.com/huggingface/diffusers/pull/5164#issuecomment-1732638706
|
@@ -159,3 +167,33 @@ def get_torch_cuda_device_capability():
|
|
159
167
|
return float(compute_capability)
|
160
168
|
else:
|
161
169
|
return None
|
170
|
+
|
171
|
+
|
172
|
+
@functools.lru_cache
|
173
|
+
def get_device():
|
174
|
+
if torch.cuda.is_available():
|
175
|
+
return "cuda"
|
176
|
+
elif is_torch_npu_available():
|
177
|
+
return "npu"
|
178
|
+
elif hasattr(torch, "xpu") and torch.xpu.is_available():
|
179
|
+
return "xpu"
|
180
|
+
elif torch.backends.mps.is_available():
|
181
|
+
return "mps"
|
182
|
+
else:
|
183
|
+
return "cpu"
|
184
|
+
|
185
|
+
|
186
|
+
def empty_device_cache(device_type: Optional[str] = None):
|
187
|
+
if device_type is None:
|
188
|
+
device_type = get_device()
|
189
|
+
if device_type in ["cpu"]:
|
190
|
+
return
|
191
|
+
device_mod = getattr(torch, device_type, torch.cuda)
|
192
|
+
device_mod.empty_cache()
|
193
|
+
|
194
|
+
|
195
|
+
def device_synchronize(device_type: Optional[str] = None):
|
196
|
+
if device_type is None:
|
197
|
+
device_type = get_device()
|
198
|
+
device_mod = getattr(torch, device_type, torch.cuda)
|
199
|
+
device_mod.synchronize()
|
diffusers/video_processor.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.
|
@@ -67,7 +67,7 @@ class VideoProcessor(VaeImageProcessor):
|
|
67
67
|
|
68
68
|
# ensure the input is a list of videos:
|
69
69
|
# - if it is a batch of videos (5d torch.Tensor or np.ndarray), it is converted to a list of videos (a list of 4d torch.Tensor or np.ndarray)
|
70
|
-
# - if it is a single video, it is
|
70
|
+
# - if it is a single video, it is converted to a list of one video.
|
71
71
|
if isinstance(video, (np.ndarray, torch.Tensor)) and video.ndim == 5:
|
72
72
|
video = list(video)
|
73
73
|
elif isinstance(video, list) and is_valid_image(video[0]) or is_valid_image_imagelist(video):
|
@@ -1,6 +1,6 @@
|
|
1
|
-
Metadata-Version: 2.
|
1
|
+
Metadata-Version: 2.2
|
2
2
|
Name: diffusers
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.35.0
|
4
4
|
Summary: State-of-the-art diffusion in PyTorch and JAX.
|
5
5
|
Home-page: https://github.com/huggingface/diffusers
|
6
6
|
Author: The Hugging Face team (past and future) with the help of all our contributors (https://github.com/huggingface/diffusers/graphs/contributors)
|
@@ -18,21 +18,70 @@ Classifier: Programming Language :: Python :: 3
|
|
18
18
|
Classifier: Programming Language :: Python :: 3.8
|
19
19
|
Classifier: Programming Language :: Python :: 3.9
|
20
20
|
Classifier: Programming Language :: Python :: 3.10
|
21
|
-
Classifier: Programming Language :: Python :: 3.11
|
22
21
|
Requires-Python: >=3.8.0
|
23
22
|
Description-Content-Type: text/markdown
|
24
23
|
License-File: LICENSE
|
25
|
-
Requires-Dist:
|
24
|
+
Requires-Dist: importlib_metadata
|
26
25
|
Requires-Dist: filelock
|
27
|
-
Requires-Dist: huggingface-hub>=0.
|
26
|
+
Requires-Dist: huggingface-hub>=0.34.0
|
28
27
|
Requires-Dist: numpy
|
29
28
|
Requires-Dist: regex!=2019.12.17
|
30
29
|
Requires-Dist: requests
|
31
30
|
Requires-Dist: safetensors>=0.3.1
|
32
31
|
Requires-Dist: Pillow
|
32
|
+
Provides-Extra: quality
|
33
|
+
Requires-Dist: urllib3<=2.0.0; extra == "quality"
|
34
|
+
Requires-Dist: isort>=5.5.4; extra == "quality"
|
35
|
+
Requires-Dist: ruff==0.9.10; extra == "quality"
|
36
|
+
Requires-Dist: hf-doc-builder>=0.3.0; extra == "quality"
|
37
|
+
Provides-Extra: docs
|
38
|
+
Requires-Dist: hf-doc-builder>=0.3.0; extra == "docs"
|
39
|
+
Provides-Extra: training
|
40
|
+
Requires-Dist: accelerate>=0.31.0; extra == "training"
|
41
|
+
Requires-Dist: datasets; extra == "training"
|
42
|
+
Requires-Dist: protobuf<4,>=3.20.3; extra == "training"
|
43
|
+
Requires-Dist: tensorboard; extra == "training"
|
44
|
+
Requires-Dist: Jinja2; extra == "training"
|
45
|
+
Requires-Dist: peft>=0.17.0; extra == "training"
|
46
|
+
Provides-Extra: test
|
47
|
+
Requires-Dist: compel==0.1.8; extra == "test"
|
48
|
+
Requires-Dist: GitPython<3.1.19; extra == "test"
|
49
|
+
Requires-Dist: datasets; extra == "test"
|
50
|
+
Requires-Dist: Jinja2; extra == "test"
|
51
|
+
Requires-Dist: invisible-watermark>=0.2.0; extra == "test"
|
52
|
+
Requires-Dist: k-diffusion==0.0.12; extra == "test"
|
53
|
+
Requires-Dist: librosa; extra == "test"
|
54
|
+
Requires-Dist: parameterized; extra == "test"
|
55
|
+
Requires-Dist: pytest; extra == "test"
|
56
|
+
Requires-Dist: pytest-timeout; extra == "test"
|
57
|
+
Requires-Dist: pytest-xdist; extra == "test"
|
58
|
+
Requires-Dist: requests-mock==1.10.0; extra == "test"
|
59
|
+
Requires-Dist: safetensors>=0.3.1; extra == "test"
|
60
|
+
Requires-Dist: sentencepiece!=0.1.92,>=0.1.91; extra == "test"
|
61
|
+
Requires-Dist: scipy; extra == "test"
|
62
|
+
Requires-Dist: tiktoken>=0.7.0; extra == "test"
|
63
|
+
Requires-Dist: torchvision; extra == "test"
|
64
|
+
Requires-Dist: transformers>=4.41.2; extra == "test"
|
65
|
+
Requires-Dist: phonemizer; extra == "test"
|
66
|
+
Provides-Extra: torch
|
67
|
+
Requires-Dist: torch>=1.4; extra == "torch"
|
68
|
+
Requires-Dist: accelerate>=0.31.0; extra == "torch"
|
33
69
|
Provides-Extra: bitsandbytes
|
34
70
|
Requires-Dist: bitsandbytes>=0.43.3; extra == "bitsandbytes"
|
35
71
|
Requires-Dist: accelerate>=0.31.0; extra == "bitsandbytes"
|
72
|
+
Provides-Extra: gguf
|
73
|
+
Requires-Dist: gguf>=0.10.0; extra == "gguf"
|
74
|
+
Requires-Dist: accelerate>=0.31.0; extra == "gguf"
|
75
|
+
Provides-Extra: optimum-quanto
|
76
|
+
Requires-Dist: optimum_quanto>=0.2.6; extra == "optimum-quanto"
|
77
|
+
Requires-Dist: accelerate>=0.31.0; extra == "optimum-quanto"
|
78
|
+
Provides-Extra: torchao
|
79
|
+
Requires-Dist: torchao>=0.7.0; extra == "torchao"
|
80
|
+
Requires-Dist: accelerate>=0.31.0; extra == "torchao"
|
81
|
+
Provides-Extra: flax
|
82
|
+
Requires-Dist: jax>=0.4.1; extra == "flax"
|
83
|
+
Requires-Dist: jaxlib>=0.4.1; extra == "flax"
|
84
|
+
Requires-Dist: flax>=0.4.1; extra == "flax"
|
36
85
|
Provides-Extra: dev
|
37
86
|
Requires-Dist: urllib3<=2.0.0; extra == "dev"
|
38
87
|
Requires-Dist: isort>=5.5.4; extra == "dev"
|
@@ -43,7 +92,7 @@ Requires-Dist: GitPython<3.1.19; extra == "dev"
|
|
43
92
|
Requires-Dist: datasets; extra == "dev"
|
44
93
|
Requires-Dist: Jinja2; extra == "dev"
|
45
94
|
Requires-Dist: invisible-watermark>=0.2.0; extra == "dev"
|
46
|
-
Requires-Dist: k-diffusion
|
95
|
+
Requires-Dist: k-diffusion==0.0.12; extra == "dev"
|
47
96
|
Requires-Dist: librosa; extra == "dev"
|
48
97
|
Requires-Dist: parameterized; extra == "dev"
|
49
98
|
Requires-Dist: pytest; extra == "dev"
|
@@ -58,63 +107,29 @@ Requires-Dist: torchvision; extra == "dev"
|
|
58
107
|
Requires-Dist: transformers>=4.41.2; extra == "dev"
|
59
108
|
Requires-Dist: phonemizer; extra == "dev"
|
60
109
|
Requires-Dist: accelerate>=0.31.0; extra == "dev"
|
110
|
+
Requires-Dist: datasets; extra == "dev"
|
61
111
|
Requires-Dist: protobuf<4,>=3.20.3; extra == "dev"
|
62
112
|
Requires-Dist: tensorboard; extra == "dev"
|
63
|
-
Requires-Dist:
|
113
|
+
Requires-Dist: Jinja2; extra == "dev"
|
114
|
+
Requires-Dist: peft>=0.17.0; extra == "dev"
|
115
|
+
Requires-Dist: hf-doc-builder>=0.3.0; extra == "dev"
|
64
116
|
Requires-Dist: torch>=1.4; extra == "dev"
|
117
|
+
Requires-Dist: accelerate>=0.31.0; extra == "dev"
|
65
118
|
Requires-Dist: jax>=0.4.1; extra == "dev"
|
66
119
|
Requires-Dist: jaxlib>=0.4.1; extra == "dev"
|
67
120
|
Requires-Dist: flax>=0.4.1; extra == "dev"
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
Provides-Extra: quality
|
81
|
-
Requires-Dist: urllib3<=2.0.0; extra == "quality"
|
82
|
-
Requires-Dist: isort>=5.5.4; extra == "quality"
|
83
|
-
Requires-Dist: ruff==0.9.10; extra == "quality"
|
84
|
-
Requires-Dist: hf-doc-builder>=0.3.0; extra == "quality"
|
85
|
-
Provides-Extra: test
|
86
|
-
Requires-Dist: compel==0.1.8; extra == "test"
|
87
|
-
Requires-Dist: GitPython<3.1.19; extra == "test"
|
88
|
-
Requires-Dist: datasets; extra == "test"
|
89
|
-
Requires-Dist: Jinja2; extra == "test"
|
90
|
-
Requires-Dist: invisible-watermark>=0.2.0; extra == "test"
|
91
|
-
Requires-Dist: k-diffusion>=0.0.12; extra == "test"
|
92
|
-
Requires-Dist: librosa; extra == "test"
|
93
|
-
Requires-Dist: parameterized; extra == "test"
|
94
|
-
Requires-Dist: pytest; extra == "test"
|
95
|
-
Requires-Dist: pytest-timeout; extra == "test"
|
96
|
-
Requires-Dist: pytest-xdist; extra == "test"
|
97
|
-
Requires-Dist: requests-mock==1.10.0; extra == "test"
|
98
|
-
Requires-Dist: safetensors>=0.3.1; extra == "test"
|
99
|
-
Requires-Dist: sentencepiece!=0.1.92,>=0.1.91; extra == "test"
|
100
|
-
Requires-Dist: scipy; extra == "test"
|
101
|
-
Requires-Dist: tiktoken>=0.7.0; extra == "test"
|
102
|
-
Requires-Dist: torchvision; extra == "test"
|
103
|
-
Requires-Dist: transformers>=4.41.2; extra == "test"
|
104
|
-
Requires-Dist: phonemizer; extra == "test"
|
105
|
-
Provides-Extra: torch
|
106
|
-
Requires-Dist: torch>=1.4; extra == "torch"
|
107
|
-
Requires-Dist: accelerate>=0.31.0; extra == "torch"
|
108
|
-
Provides-Extra: torchao
|
109
|
-
Requires-Dist: torchao>=0.7.0; extra == "torchao"
|
110
|
-
Requires-Dist: accelerate>=0.31.0; extra == "torchao"
|
111
|
-
Provides-Extra: training
|
112
|
-
Requires-Dist: accelerate>=0.31.0; extra == "training"
|
113
|
-
Requires-Dist: datasets; extra == "training"
|
114
|
-
Requires-Dist: protobuf<4,>=3.20.3; extra == "training"
|
115
|
-
Requires-Dist: tensorboard; extra == "training"
|
116
|
-
Requires-Dist: Jinja2; extra == "training"
|
117
|
-
Requires-Dist: peft>=0.6.0; extra == "training"
|
121
|
+
Dynamic: author
|
122
|
+
Dynamic: author-email
|
123
|
+
Dynamic: classifier
|
124
|
+
Dynamic: description
|
125
|
+
Dynamic: description-content-type
|
126
|
+
Dynamic: home-page
|
127
|
+
Dynamic: keywords
|
128
|
+
Dynamic: license
|
129
|
+
Dynamic: provides-extra
|
130
|
+
Dynamic: requires-dist
|
131
|
+
Dynamic: requires-python
|
132
|
+
Dynamic: summary
|
118
133
|
|
119
134
|
<!---
|
120
135
|
Copyright 2022 - The HuggingFace Team. All rights reserved.
|