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.
Files changed (551) hide show
  1. diffusers/__init__.py +145 -1
  2. diffusers/callbacks.py +35 -0
  3. diffusers/commands/__init__.py +1 -1
  4. diffusers/commands/custom_blocks.py +134 -0
  5. diffusers/commands/diffusers_cli.py +3 -1
  6. diffusers/commands/env.py +1 -1
  7. diffusers/commands/fp16_safetensors.py +2 -2
  8. diffusers/configuration_utils.py +11 -2
  9. diffusers/dependency_versions_check.py +1 -1
  10. diffusers/dependency_versions_table.py +3 -3
  11. diffusers/experimental/rl/value_guided_sampling.py +1 -1
  12. diffusers/guiders/__init__.py +41 -0
  13. diffusers/guiders/adaptive_projected_guidance.py +188 -0
  14. diffusers/guiders/auto_guidance.py +190 -0
  15. diffusers/guiders/classifier_free_guidance.py +141 -0
  16. diffusers/guiders/classifier_free_zero_star_guidance.py +152 -0
  17. diffusers/guiders/frequency_decoupled_guidance.py +327 -0
  18. diffusers/guiders/guider_utils.py +309 -0
  19. diffusers/guiders/perturbed_attention_guidance.py +271 -0
  20. diffusers/guiders/skip_layer_guidance.py +262 -0
  21. diffusers/guiders/smoothed_energy_guidance.py +251 -0
  22. diffusers/guiders/tangential_classifier_free_guidance.py +143 -0
  23. diffusers/hooks/__init__.py +17 -0
  24. diffusers/hooks/_common.py +56 -0
  25. diffusers/hooks/_helpers.py +293 -0
  26. diffusers/hooks/faster_cache.py +9 -8
  27. diffusers/hooks/first_block_cache.py +259 -0
  28. diffusers/hooks/group_offloading.py +332 -227
  29. diffusers/hooks/hooks.py +58 -3
  30. diffusers/hooks/layer_skip.py +263 -0
  31. diffusers/hooks/layerwise_casting.py +5 -10
  32. diffusers/hooks/pyramid_attention_broadcast.py +15 -12
  33. diffusers/hooks/smoothed_energy_guidance_utils.py +167 -0
  34. diffusers/hooks/utils.py +43 -0
  35. diffusers/image_processor.py +7 -2
  36. diffusers/loaders/__init__.py +10 -0
  37. diffusers/loaders/ip_adapter.py +260 -18
  38. diffusers/loaders/lora_base.py +261 -127
  39. diffusers/loaders/lora_conversion_utils.py +657 -35
  40. diffusers/loaders/lora_pipeline.py +2778 -1246
  41. diffusers/loaders/peft.py +78 -112
  42. diffusers/loaders/single_file.py +2 -2
  43. diffusers/loaders/single_file_model.py +64 -15
  44. diffusers/loaders/single_file_utils.py +395 -7
  45. diffusers/loaders/textual_inversion.py +3 -2
  46. diffusers/loaders/transformer_flux.py +10 -11
  47. diffusers/loaders/transformer_sd3.py +8 -3
  48. diffusers/loaders/unet.py +24 -21
  49. diffusers/loaders/unet_loader_utils.py +6 -3
  50. diffusers/loaders/utils.py +1 -1
  51. diffusers/models/__init__.py +23 -1
  52. diffusers/models/activations.py +5 -5
  53. diffusers/models/adapter.py +2 -3
  54. diffusers/models/attention.py +488 -7
  55. diffusers/models/attention_dispatch.py +1218 -0
  56. diffusers/models/attention_flax.py +10 -10
  57. diffusers/models/attention_processor.py +113 -667
  58. diffusers/models/auto_model.py +49 -12
  59. diffusers/models/autoencoders/__init__.py +2 -0
  60. diffusers/models/autoencoders/autoencoder_asym_kl.py +4 -4
  61. diffusers/models/autoencoders/autoencoder_dc.py +17 -4
  62. diffusers/models/autoencoders/autoencoder_kl.py +5 -5
  63. diffusers/models/autoencoders/autoencoder_kl_allegro.py +4 -4
  64. diffusers/models/autoencoders/autoencoder_kl_cogvideox.py +6 -6
  65. diffusers/models/autoencoders/autoencoder_kl_cosmos.py +1110 -0
  66. diffusers/models/autoencoders/autoencoder_kl_hunyuan_video.py +2 -2
  67. diffusers/models/autoencoders/autoencoder_kl_ltx.py +3 -3
  68. diffusers/models/autoencoders/autoencoder_kl_magvit.py +4 -4
  69. diffusers/models/autoencoders/autoencoder_kl_mochi.py +3 -3
  70. diffusers/models/autoencoders/autoencoder_kl_qwenimage.py +1070 -0
  71. diffusers/models/autoencoders/autoencoder_kl_temporal_decoder.py +4 -4
  72. diffusers/models/autoencoders/autoencoder_kl_wan.py +626 -62
  73. diffusers/models/autoencoders/autoencoder_oobleck.py +1 -1
  74. diffusers/models/autoencoders/autoencoder_tiny.py +3 -3
  75. diffusers/models/autoencoders/consistency_decoder_vae.py +1 -1
  76. diffusers/models/autoencoders/vae.py +13 -2
  77. diffusers/models/autoencoders/vq_model.py +2 -2
  78. diffusers/models/cache_utils.py +32 -10
  79. diffusers/models/controlnet.py +1 -1
  80. diffusers/models/controlnet_flux.py +1 -1
  81. diffusers/models/controlnet_sd3.py +1 -1
  82. diffusers/models/controlnet_sparsectrl.py +1 -1
  83. diffusers/models/controlnets/__init__.py +1 -0
  84. diffusers/models/controlnets/controlnet.py +3 -3
  85. diffusers/models/controlnets/controlnet_flax.py +1 -1
  86. diffusers/models/controlnets/controlnet_flux.py +21 -20
  87. diffusers/models/controlnets/controlnet_hunyuan.py +2 -2
  88. diffusers/models/controlnets/controlnet_sana.py +290 -0
  89. diffusers/models/controlnets/controlnet_sd3.py +1 -1
  90. diffusers/models/controlnets/controlnet_sparsectrl.py +2 -2
  91. diffusers/models/controlnets/controlnet_union.py +5 -5
  92. diffusers/models/controlnets/controlnet_xs.py +7 -7
  93. diffusers/models/controlnets/multicontrolnet.py +4 -5
  94. diffusers/models/controlnets/multicontrolnet_union.py +5 -6
  95. diffusers/models/downsampling.py +2 -2
  96. diffusers/models/embeddings.py +36 -46
  97. diffusers/models/embeddings_flax.py +2 -2
  98. diffusers/models/lora.py +3 -3
  99. diffusers/models/model_loading_utils.py +233 -1
  100. diffusers/models/modeling_flax_utils.py +1 -2
  101. diffusers/models/modeling_utils.py +203 -108
  102. diffusers/models/normalization.py +4 -4
  103. diffusers/models/resnet.py +2 -2
  104. diffusers/models/resnet_flax.py +1 -1
  105. diffusers/models/transformers/__init__.py +7 -0
  106. diffusers/models/transformers/auraflow_transformer_2d.py +70 -24
  107. diffusers/models/transformers/cogvideox_transformer_3d.py +1 -1
  108. diffusers/models/transformers/consisid_transformer_3d.py +1 -1
  109. diffusers/models/transformers/dit_transformer_2d.py +2 -2
  110. diffusers/models/transformers/dual_transformer_2d.py +1 -1
  111. diffusers/models/transformers/hunyuan_transformer_2d.py +2 -2
  112. diffusers/models/transformers/latte_transformer_3d.py +4 -5
  113. diffusers/models/transformers/lumina_nextdit2d.py +2 -2
  114. diffusers/models/transformers/pixart_transformer_2d.py +3 -3
  115. diffusers/models/transformers/prior_transformer.py +1 -1
  116. diffusers/models/transformers/sana_transformer.py +8 -3
  117. diffusers/models/transformers/stable_audio_transformer.py +5 -9
  118. diffusers/models/transformers/t5_film_transformer.py +3 -3
  119. diffusers/models/transformers/transformer_2d.py +1 -1
  120. diffusers/models/transformers/transformer_allegro.py +1 -1
  121. diffusers/models/transformers/transformer_chroma.py +641 -0
  122. diffusers/models/transformers/transformer_cogview3plus.py +5 -10
  123. diffusers/models/transformers/transformer_cogview4.py +353 -27
  124. diffusers/models/transformers/transformer_cosmos.py +586 -0
  125. diffusers/models/transformers/transformer_flux.py +376 -138
  126. diffusers/models/transformers/transformer_hidream_image.py +942 -0
  127. diffusers/models/transformers/transformer_hunyuan_video.py +12 -8
  128. diffusers/models/transformers/transformer_hunyuan_video_framepack.py +416 -0
  129. diffusers/models/transformers/transformer_ltx.py +105 -24
  130. diffusers/models/transformers/transformer_lumina2.py +1 -1
  131. diffusers/models/transformers/transformer_mochi.py +1 -1
  132. diffusers/models/transformers/transformer_omnigen.py +2 -2
  133. diffusers/models/transformers/transformer_qwenimage.py +645 -0
  134. diffusers/models/transformers/transformer_sd3.py +7 -7
  135. diffusers/models/transformers/transformer_skyreels_v2.py +607 -0
  136. diffusers/models/transformers/transformer_temporal.py +1 -1
  137. diffusers/models/transformers/transformer_wan.py +316 -87
  138. diffusers/models/transformers/transformer_wan_vace.py +387 -0
  139. diffusers/models/unets/unet_1d.py +1 -1
  140. diffusers/models/unets/unet_1d_blocks.py +1 -1
  141. diffusers/models/unets/unet_2d.py +1 -1
  142. diffusers/models/unets/unet_2d_blocks.py +1 -1
  143. diffusers/models/unets/unet_2d_blocks_flax.py +8 -7
  144. diffusers/models/unets/unet_2d_condition.py +4 -3
  145. diffusers/models/unets/unet_2d_condition_flax.py +2 -2
  146. diffusers/models/unets/unet_3d_blocks.py +1 -1
  147. diffusers/models/unets/unet_3d_condition.py +3 -3
  148. diffusers/models/unets/unet_i2vgen_xl.py +3 -3
  149. diffusers/models/unets/unet_kandinsky3.py +1 -1
  150. diffusers/models/unets/unet_motion_model.py +2 -2
  151. diffusers/models/unets/unet_stable_cascade.py +1 -1
  152. diffusers/models/upsampling.py +2 -2
  153. diffusers/models/vae_flax.py +2 -2
  154. diffusers/models/vq_model.py +1 -1
  155. diffusers/modular_pipelines/__init__.py +83 -0
  156. diffusers/modular_pipelines/components_manager.py +1068 -0
  157. diffusers/modular_pipelines/flux/__init__.py +66 -0
  158. diffusers/modular_pipelines/flux/before_denoise.py +689 -0
  159. diffusers/modular_pipelines/flux/decoders.py +109 -0
  160. diffusers/modular_pipelines/flux/denoise.py +227 -0
  161. diffusers/modular_pipelines/flux/encoders.py +412 -0
  162. diffusers/modular_pipelines/flux/modular_blocks.py +181 -0
  163. diffusers/modular_pipelines/flux/modular_pipeline.py +59 -0
  164. diffusers/modular_pipelines/modular_pipeline.py +2446 -0
  165. diffusers/modular_pipelines/modular_pipeline_utils.py +672 -0
  166. diffusers/modular_pipelines/node_utils.py +665 -0
  167. diffusers/modular_pipelines/stable_diffusion_xl/__init__.py +77 -0
  168. diffusers/modular_pipelines/stable_diffusion_xl/before_denoise.py +1874 -0
  169. diffusers/modular_pipelines/stable_diffusion_xl/decoders.py +208 -0
  170. diffusers/modular_pipelines/stable_diffusion_xl/denoise.py +771 -0
  171. diffusers/modular_pipelines/stable_diffusion_xl/encoders.py +887 -0
  172. diffusers/modular_pipelines/stable_diffusion_xl/modular_blocks.py +380 -0
  173. diffusers/modular_pipelines/stable_diffusion_xl/modular_pipeline.py +365 -0
  174. diffusers/modular_pipelines/wan/__init__.py +66 -0
  175. diffusers/modular_pipelines/wan/before_denoise.py +365 -0
  176. diffusers/modular_pipelines/wan/decoders.py +105 -0
  177. diffusers/modular_pipelines/wan/denoise.py +261 -0
  178. diffusers/modular_pipelines/wan/encoders.py +242 -0
  179. diffusers/modular_pipelines/wan/modular_blocks.py +144 -0
  180. diffusers/modular_pipelines/wan/modular_pipeline.py +90 -0
  181. diffusers/pipelines/__init__.py +68 -6
  182. diffusers/pipelines/allegro/pipeline_allegro.py +11 -11
  183. diffusers/pipelines/amused/pipeline_amused.py +7 -6
  184. diffusers/pipelines/amused/pipeline_amused_img2img.py +6 -5
  185. diffusers/pipelines/amused/pipeline_amused_inpaint.py +6 -5
  186. diffusers/pipelines/animatediff/pipeline_animatediff.py +6 -6
  187. diffusers/pipelines/animatediff/pipeline_animatediff_controlnet.py +6 -6
  188. diffusers/pipelines/animatediff/pipeline_animatediff_sdxl.py +16 -15
  189. diffusers/pipelines/animatediff/pipeline_animatediff_sparsectrl.py +6 -6
  190. diffusers/pipelines/animatediff/pipeline_animatediff_video2video.py +5 -5
  191. diffusers/pipelines/animatediff/pipeline_animatediff_video2video_controlnet.py +5 -5
  192. diffusers/pipelines/audioldm/pipeline_audioldm.py +8 -7
  193. diffusers/pipelines/audioldm2/modeling_audioldm2.py +1 -1
  194. diffusers/pipelines/audioldm2/pipeline_audioldm2.py +22 -13
  195. diffusers/pipelines/aura_flow/pipeline_aura_flow.py +48 -11
  196. diffusers/pipelines/auto_pipeline.py +23 -20
  197. diffusers/pipelines/blip_diffusion/modeling_blip2.py +1 -1
  198. diffusers/pipelines/blip_diffusion/modeling_ctx_clip.py +2 -2
  199. diffusers/pipelines/blip_diffusion/pipeline_blip_diffusion.py +11 -10
  200. diffusers/pipelines/chroma/__init__.py +49 -0
  201. diffusers/pipelines/chroma/pipeline_chroma.py +949 -0
  202. diffusers/pipelines/chroma/pipeline_chroma_img2img.py +1034 -0
  203. diffusers/pipelines/chroma/pipeline_output.py +21 -0
  204. diffusers/pipelines/cogvideo/pipeline_cogvideox.py +17 -16
  205. diffusers/pipelines/cogvideo/pipeline_cogvideox_fun_control.py +17 -16
  206. diffusers/pipelines/cogvideo/pipeline_cogvideox_image2video.py +18 -17
  207. diffusers/pipelines/cogvideo/pipeline_cogvideox_video2video.py +17 -16
  208. diffusers/pipelines/cogview3/pipeline_cogview3plus.py +9 -9
  209. diffusers/pipelines/cogview4/pipeline_cogview4.py +23 -22
  210. diffusers/pipelines/cogview4/pipeline_cogview4_control.py +7 -7
  211. diffusers/pipelines/consisid/consisid_utils.py +2 -2
  212. diffusers/pipelines/consisid/pipeline_consisid.py +8 -8
  213. diffusers/pipelines/consistency_models/pipeline_consistency_models.py +1 -1
  214. diffusers/pipelines/controlnet/pipeline_controlnet.py +7 -7
  215. diffusers/pipelines/controlnet/pipeline_controlnet_blip_diffusion.py +11 -10
  216. diffusers/pipelines/controlnet/pipeline_controlnet_img2img.py +7 -7
  217. diffusers/pipelines/controlnet/pipeline_controlnet_inpaint.py +7 -7
  218. diffusers/pipelines/controlnet/pipeline_controlnet_inpaint_sd_xl.py +14 -14
  219. diffusers/pipelines/controlnet/pipeline_controlnet_sd_xl.py +10 -6
  220. diffusers/pipelines/controlnet/pipeline_controlnet_sd_xl_img2img.py +13 -13
  221. diffusers/pipelines/controlnet/pipeline_controlnet_union_inpaint_sd_xl.py +226 -107
  222. diffusers/pipelines/controlnet/pipeline_controlnet_union_sd_xl.py +12 -8
  223. diffusers/pipelines/controlnet/pipeline_controlnet_union_sd_xl_img2img.py +207 -105
  224. diffusers/pipelines/controlnet/pipeline_flax_controlnet.py +1 -1
  225. diffusers/pipelines/controlnet_hunyuandit/pipeline_hunyuandit_controlnet.py +8 -8
  226. diffusers/pipelines/controlnet_sd3/pipeline_stable_diffusion_3_controlnet.py +7 -7
  227. diffusers/pipelines/controlnet_sd3/pipeline_stable_diffusion_3_controlnet_inpainting.py +7 -7
  228. diffusers/pipelines/controlnet_xs/pipeline_controlnet_xs.py +12 -10
  229. diffusers/pipelines/controlnet_xs/pipeline_controlnet_xs_sd_xl.py +9 -7
  230. diffusers/pipelines/cosmos/__init__.py +54 -0
  231. diffusers/pipelines/cosmos/pipeline_cosmos2_text2image.py +673 -0
  232. diffusers/pipelines/cosmos/pipeline_cosmos2_video2world.py +792 -0
  233. diffusers/pipelines/cosmos/pipeline_cosmos_text2world.py +664 -0
  234. diffusers/pipelines/cosmos/pipeline_cosmos_video2world.py +826 -0
  235. diffusers/pipelines/cosmos/pipeline_output.py +40 -0
  236. diffusers/pipelines/dance_diffusion/pipeline_dance_diffusion.py +5 -4
  237. diffusers/pipelines/ddim/pipeline_ddim.py +4 -4
  238. diffusers/pipelines/ddpm/pipeline_ddpm.py +1 -1
  239. diffusers/pipelines/deepfloyd_if/pipeline_if.py +10 -10
  240. diffusers/pipelines/deepfloyd_if/pipeline_if_img2img.py +10 -10
  241. diffusers/pipelines/deepfloyd_if/pipeline_if_img2img_superresolution.py +10 -10
  242. diffusers/pipelines/deepfloyd_if/pipeline_if_inpainting.py +10 -10
  243. diffusers/pipelines/deepfloyd_if/pipeline_if_inpainting_superresolution.py +10 -10
  244. diffusers/pipelines/deepfloyd_if/pipeline_if_superresolution.py +10 -10
  245. diffusers/pipelines/deprecated/alt_diffusion/pipeline_alt_diffusion.py +8 -8
  246. diffusers/pipelines/deprecated/alt_diffusion/pipeline_alt_diffusion_img2img.py +5 -5
  247. diffusers/pipelines/deprecated/audio_diffusion/mel.py +1 -1
  248. diffusers/pipelines/deprecated/audio_diffusion/pipeline_audio_diffusion.py +3 -3
  249. diffusers/pipelines/deprecated/latent_diffusion_uncond/pipeline_latent_diffusion_uncond.py +1 -1
  250. diffusers/pipelines/deprecated/pndm/pipeline_pndm.py +2 -2
  251. diffusers/pipelines/deprecated/repaint/pipeline_repaint.py +4 -3
  252. diffusers/pipelines/deprecated/score_sde_ve/pipeline_score_sde_ve.py +1 -1
  253. diffusers/pipelines/deprecated/spectrogram_diffusion/continuous_encoder.py +1 -1
  254. diffusers/pipelines/deprecated/spectrogram_diffusion/midi_utils.py +1 -1
  255. diffusers/pipelines/deprecated/spectrogram_diffusion/notes_encoder.py +1 -1
  256. diffusers/pipelines/deprecated/spectrogram_diffusion/pipeline_spectrogram_diffusion.py +1 -1
  257. diffusers/pipelines/deprecated/stable_diffusion_variants/pipeline_cycle_diffusion.py +8 -8
  258. diffusers/pipelines/deprecated/stable_diffusion_variants/pipeline_onnx_stable_diffusion_inpaint_legacy.py +9 -9
  259. diffusers/pipelines/deprecated/stable_diffusion_variants/pipeline_stable_diffusion_inpaint_legacy.py +10 -10
  260. diffusers/pipelines/deprecated/stable_diffusion_variants/pipeline_stable_diffusion_model_editing.py +10 -8
  261. diffusers/pipelines/deprecated/stable_diffusion_variants/pipeline_stable_diffusion_paradigms.py +5 -5
  262. diffusers/pipelines/deprecated/stable_diffusion_variants/pipeline_stable_diffusion_pix2pix_zero.py +18 -18
  263. diffusers/pipelines/deprecated/stochastic_karras_ve/pipeline_stochastic_karras_ve.py +1 -1
  264. diffusers/pipelines/deprecated/versatile_diffusion/modeling_text_unet.py +2 -2
  265. diffusers/pipelines/deprecated/versatile_diffusion/pipeline_versatile_diffusion.py +6 -6
  266. diffusers/pipelines/deprecated/versatile_diffusion/pipeline_versatile_diffusion_dual_guided.py +5 -5
  267. diffusers/pipelines/deprecated/versatile_diffusion/pipeline_versatile_diffusion_image_variation.py +5 -5
  268. diffusers/pipelines/deprecated/versatile_diffusion/pipeline_versatile_diffusion_text_to_image.py +5 -5
  269. diffusers/pipelines/deprecated/vq_diffusion/pipeline_vq_diffusion.py +1 -1
  270. diffusers/pipelines/dit/pipeline_dit.py +4 -2
  271. diffusers/pipelines/easyanimate/pipeline_easyanimate.py +4 -4
  272. diffusers/pipelines/easyanimate/pipeline_easyanimate_control.py +4 -4
  273. diffusers/pipelines/easyanimate/pipeline_easyanimate_inpaint.py +7 -6
  274. diffusers/pipelines/flux/__init__.py +4 -0
  275. diffusers/pipelines/flux/modeling_flux.py +1 -1
  276. diffusers/pipelines/flux/pipeline_flux.py +37 -36
  277. diffusers/pipelines/flux/pipeline_flux_control.py +9 -9
  278. diffusers/pipelines/flux/pipeline_flux_control_img2img.py +7 -7
  279. diffusers/pipelines/flux/pipeline_flux_control_inpaint.py +7 -7
  280. diffusers/pipelines/flux/pipeline_flux_controlnet.py +7 -7
  281. diffusers/pipelines/flux/pipeline_flux_controlnet_image_to_image.py +31 -23
  282. diffusers/pipelines/flux/pipeline_flux_controlnet_inpainting.py +3 -2
  283. diffusers/pipelines/flux/pipeline_flux_fill.py +7 -7
  284. diffusers/pipelines/flux/pipeline_flux_img2img.py +40 -7
  285. diffusers/pipelines/flux/pipeline_flux_inpaint.py +12 -7
  286. diffusers/pipelines/flux/pipeline_flux_kontext.py +1134 -0
  287. diffusers/pipelines/flux/pipeline_flux_kontext_inpaint.py +1460 -0
  288. diffusers/pipelines/flux/pipeline_flux_prior_redux.py +2 -2
  289. diffusers/pipelines/flux/pipeline_output.py +6 -4
  290. diffusers/pipelines/free_init_utils.py +2 -2
  291. diffusers/pipelines/free_noise_utils.py +3 -3
  292. diffusers/pipelines/hidream_image/__init__.py +47 -0
  293. diffusers/pipelines/hidream_image/pipeline_hidream_image.py +1026 -0
  294. diffusers/pipelines/hidream_image/pipeline_output.py +35 -0
  295. diffusers/pipelines/hunyuan_video/__init__.py +2 -0
  296. diffusers/pipelines/hunyuan_video/pipeline_hunyuan_skyreels_image2video.py +8 -8
  297. diffusers/pipelines/hunyuan_video/pipeline_hunyuan_video.py +26 -25
  298. diffusers/pipelines/hunyuan_video/pipeline_hunyuan_video_framepack.py +1114 -0
  299. diffusers/pipelines/hunyuan_video/pipeline_hunyuan_video_image2video.py +71 -15
  300. diffusers/pipelines/hunyuan_video/pipeline_output.py +19 -0
  301. diffusers/pipelines/hunyuandit/pipeline_hunyuandit.py +8 -8
  302. diffusers/pipelines/i2vgen_xl/pipeline_i2vgen_xl.py +10 -8
  303. diffusers/pipelines/kandinsky/pipeline_kandinsky.py +6 -6
  304. diffusers/pipelines/kandinsky/pipeline_kandinsky_combined.py +34 -34
  305. diffusers/pipelines/kandinsky/pipeline_kandinsky_img2img.py +19 -26
  306. diffusers/pipelines/kandinsky/pipeline_kandinsky_inpaint.py +7 -7
  307. diffusers/pipelines/kandinsky/pipeline_kandinsky_prior.py +11 -11
  308. diffusers/pipelines/kandinsky2_2/pipeline_kandinsky2_2.py +6 -6
  309. diffusers/pipelines/kandinsky2_2/pipeline_kandinsky2_2_combined.py +35 -35
  310. diffusers/pipelines/kandinsky2_2/pipeline_kandinsky2_2_controlnet.py +6 -6
  311. diffusers/pipelines/kandinsky2_2/pipeline_kandinsky2_2_controlnet_img2img.py +17 -39
  312. diffusers/pipelines/kandinsky2_2/pipeline_kandinsky2_2_img2img.py +17 -45
  313. diffusers/pipelines/kandinsky2_2/pipeline_kandinsky2_2_inpainting.py +7 -7
  314. diffusers/pipelines/kandinsky2_2/pipeline_kandinsky2_2_prior.py +10 -10
  315. diffusers/pipelines/kandinsky2_2/pipeline_kandinsky2_2_prior_emb2emb.py +10 -10
  316. diffusers/pipelines/kandinsky3/pipeline_kandinsky3.py +7 -7
  317. diffusers/pipelines/kandinsky3/pipeline_kandinsky3_img2img.py +17 -38
  318. diffusers/pipelines/kolors/pipeline_kolors.py +10 -10
  319. diffusers/pipelines/kolors/pipeline_kolors_img2img.py +12 -12
  320. diffusers/pipelines/kolors/text_encoder.py +3 -3
  321. diffusers/pipelines/kolors/tokenizer.py +1 -1
  322. diffusers/pipelines/latent_consistency_models/pipeline_latent_consistency_img2img.py +2 -2
  323. diffusers/pipelines/latent_consistency_models/pipeline_latent_consistency_text2img.py +2 -2
  324. diffusers/pipelines/latent_diffusion/pipeline_latent_diffusion.py +1 -1
  325. diffusers/pipelines/latent_diffusion/pipeline_latent_diffusion_superresolution.py +3 -3
  326. diffusers/pipelines/latte/pipeline_latte.py +12 -12
  327. diffusers/pipelines/ledits_pp/pipeline_leditspp_stable_diffusion.py +13 -13
  328. diffusers/pipelines/ledits_pp/pipeline_leditspp_stable_diffusion_xl.py +17 -16
  329. diffusers/pipelines/ltx/__init__.py +4 -0
  330. diffusers/pipelines/ltx/modeling_latent_upsampler.py +188 -0
  331. diffusers/pipelines/ltx/pipeline_ltx.py +64 -18
  332. diffusers/pipelines/ltx/pipeline_ltx_condition.py +117 -38
  333. diffusers/pipelines/ltx/pipeline_ltx_image2video.py +63 -18
  334. diffusers/pipelines/ltx/pipeline_ltx_latent_upsample.py +277 -0
  335. diffusers/pipelines/lumina/pipeline_lumina.py +13 -13
  336. diffusers/pipelines/lumina2/pipeline_lumina2.py +10 -10
  337. diffusers/pipelines/marigold/marigold_image_processing.py +2 -2
  338. diffusers/pipelines/mochi/pipeline_mochi.py +15 -14
  339. diffusers/pipelines/musicldm/pipeline_musicldm.py +16 -13
  340. diffusers/pipelines/omnigen/pipeline_omnigen.py +13 -11
  341. diffusers/pipelines/omnigen/processor_omnigen.py +8 -3
  342. diffusers/pipelines/onnx_utils.py +15 -2
  343. diffusers/pipelines/pag/pag_utils.py +2 -2
  344. diffusers/pipelines/pag/pipeline_pag_controlnet_sd.py +12 -8
  345. diffusers/pipelines/pag/pipeline_pag_controlnet_sd_inpaint.py +7 -7
  346. diffusers/pipelines/pag/pipeline_pag_controlnet_sd_xl.py +10 -6
  347. diffusers/pipelines/pag/pipeline_pag_controlnet_sd_xl_img2img.py +14 -14
  348. diffusers/pipelines/pag/pipeline_pag_hunyuandit.py +8 -8
  349. diffusers/pipelines/pag/pipeline_pag_kolors.py +10 -10
  350. diffusers/pipelines/pag/pipeline_pag_pixart_sigma.py +11 -11
  351. diffusers/pipelines/pag/pipeline_pag_sana.py +18 -12
  352. diffusers/pipelines/pag/pipeline_pag_sd.py +8 -8
  353. diffusers/pipelines/pag/pipeline_pag_sd_3.py +7 -7
  354. diffusers/pipelines/pag/pipeline_pag_sd_3_img2img.py +7 -7
  355. diffusers/pipelines/pag/pipeline_pag_sd_animatediff.py +6 -6
  356. diffusers/pipelines/pag/pipeline_pag_sd_img2img.py +5 -5
  357. diffusers/pipelines/pag/pipeline_pag_sd_inpaint.py +8 -8
  358. diffusers/pipelines/pag/pipeline_pag_sd_xl.py +16 -15
  359. diffusers/pipelines/pag/pipeline_pag_sd_xl_img2img.py +18 -17
  360. diffusers/pipelines/pag/pipeline_pag_sd_xl_inpaint.py +12 -12
  361. diffusers/pipelines/paint_by_example/image_encoder.py +1 -1
  362. diffusers/pipelines/paint_by_example/pipeline_paint_by_example.py +8 -7
  363. diffusers/pipelines/pia/pipeline_pia.py +8 -6
  364. diffusers/pipelines/pipeline_flax_utils.py +5 -6
  365. diffusers/pipelines/pipeline_loading_utils.py +113 -15
  366. diffusers/pipelines/pipeline_utils.py +127 -48
  367. diffusers/pipelines/pixart_alpha/pipeline_pixart_alpha.py +14 -12
  368. diffusers/pipelines/pixart_alpha/pipeline_pixart_sigma.py +31 -11
  369. diffusers/pipelines/qwenimage/__init__.py +55 -0
  370. diffusers/pipelines/qwenimage/pipeline_output.py +21 -0
  371. diffusers/pipelines/qwenimage/pipeline_qwenimage.py +726 -0
  372. diffusers/pipelines/qwenimage/pipeline_qwenimage_edit.py +882 -0
  373. diffusers/pipelines/qwenimage/pipeline_qwenimage_img2img.py +829 -0
  374. diffusers/pipelines/qwenimage/pipeline_qwenimage_inpaint.py +1015 -0
  375. diffusers/pipelines/sana/__init__.py +4 -0
  376. diffusers/pipelines/sana/pipeline_sana.py +23 -21
  377. diffusers/pipelines/sana/pipeline_sana_controlnet.py +1106 -0
  378. diffusers/pipelines/sana/pipeline_sana_sprint.py +23 -19
  379. diffusers/pipelines/sana/pipeline_sana_sprint_img2img.py +981 -0
  380. diffusers/pipelines/semantic_stable_diffusion/pipeline_semantic_stable_diffusion.py +7 -6
  381. diffusers/pipelines/shap_e/camera.py +1 -1
  382. diffusers/pipelines/shap_e/pipeline_shap_e.py +1 -1
  383. diffusers/pipelines/shap_e/pipeline_shap_e_img2img.py +1 -1
  384. diffusers/pipelines/shap_e/renderer.py +3 -3
  385. diffusers/pipelines/skyreels_v2/__init__.py +59 -0
  386. diffusers/pipelines/skyreels_v2/pipeline_output.py +20 -0
  387. diffusers/pipelines/skyreels_v2/pipeline_skyreels_v2.py +610 -0
  388. diffusers/pipelines/skyreels_v2/pipeline_skyreels_v2_diffusion_forcing.py +978 -0
  389. diffusers/pipelines/skyreels_v2/pipeline_skyreels_v2_diffusion_forcing_i2v.py +1059 -0
  390. diffusers/pipelines/skyreels_v2/pipeline_skyreels_v2_diffusion_forcing_v2v.py +1063 -0
  391. diffusers/pipelines/skyreels_v2/pipeline_skyreels_v2_i2v.py +745 -0
  392. diffusers/pipelines/stable_audio/modeling_stable_audio.py +1 -1
  393. diffusers/pipelines/stable_audio/pipeline_stable_audio.py +5 -5
  394. diffusers/pipelines/stable_cascade/pipeline_stable_cascade.py +8 -8
  395. diffusers/pipelines/stable_cascade/pipeline_stable_cascade_combined.py +13 -13
  396. diffusers/pipelines/stable_cascade/pipeline_stable_cascade_prior.py +9 -9
  397. diffusers/pipelines/stable_diffusion/__init__.py +0 -7
  398. diffusers/pipelines/stable_diffusion/clip_image_project_model.py +1 -1
  399. diffusers/pipelines/stable_diffusion/convert_from_ckpt.py +11 -4
  400. diffusers/pipelines/stable_diffusion/pipeline_flax_stable_diffusion.py +1 -1
  401. diffusers/pipelines/stable_diffusion/pipeline_flax_stable_diffusion_img2img.py +1 -1
  402. diffusers/pipelines/stable_diffusion/pipeline_flax_stable_diffusion_inpaint.py +1 -1
  403. diffusers/pipelines/stable_diffusion/pipeline_onnx_stable_diffusion.py +12 -11
  404. diffusers/pipelines/stable_diffusion/pipeline_onnx_stable_diffusion_img2img.py +10 -10
  405. diffusers/pipelines/stable_diffusion/pipeline_onnx_stable_diffusion_inpaint.py +11 -11
  406. diffusers/pipelines/stable_diffusion/pipeline_onnx_stable_diffusion_upscale.py +10 -10
  407. diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion.py +10 -9
  408. diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion_depth2img.py +5 -5
  409. diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion_image_variation.py +5 -5
  410. diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion_img2img.py +5 -5
  411. diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion_inpaint.py +5 -5
  412. diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion_instruct_pix2pix.py +5 -5
  413. diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion_latent_upscale.py +4 -4
  414. diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion_upscale.py +5 -5
  415. diffusers/pipelines/stable_diffusion/pipeline_stable_unclip.py +7 -7
  416. diffusers/pipelines/stable_diffusion/pipeline_stable_unclip_img2img.py +5 -5
  417. diffusers/pipelines/stable_diffusion/safety_checker.py +1 -1
  418. diffusers/pipelines/stable_diffusion/safety_checker_flax.py +1 -1
  419. diffusers/pipelines/stable_diffusion/stable_unclip_image_normalizer.py +1 -1
  420. diffusers/pipelines/stable_diffusion_3/pipeline_stable_diffusion_3.py +13 -12
  421. diffusers/pipelines/stable_diffusion_3/pipeline_stable_diffusion_3_img2img.py +7 -7
  422. diffusers/pipelines/stable_diffusion_3/pipeline_stable_diffusion_3_inpaint.py +7 -7
  423. diffusers/pipelines/stable_diffusion_attend_and_excite/pipeline_stable_diffusion_attend_and_excite.py +12 -8
  424. diffusers/pipelines/stable_diffusion_diffedit/pipeline_stable_diffusion_diffedit.py +15 -9
  425. diffusers/pipelines/stable_diffusion_gligen/pipeline_stable_diffusion_gligen.py +11 -9
  426. diffusers/pipelines/stable_diffusion_gligen/pipeline_stable_diffusion_gligen_text_image.py +11 -9
  427. diffusers/pipelines/stable_diffusion_k_diffusion/pipeline_stable_diffusion_k_diffusion.py +18 -12
  428. diffusers/pipelines/stable_diffusion_k_diffusion/pipeline_stable_diffusion_xl_k_diffusion.py +11 -8
  429. diffusers/pipelines/stable_diffusion_ldm3d/pipeline_stable_diffusion_ldm3d.py +11 -8
  430. diffusers/pipelines/stable_diffusion_panorama/pipeline_stable_diffusion_panorama.py +15 -12
  431. diffusers/pipelines/stable_diffusion_safe/pipeline_stable_diffusion_safe.py +8 -6
  432. diffusers/pipelines/stable_diffusion_safe/safety_checker.py +1 -1
  433. diffusers/pipelines/stable_diffusion_sag/pipeline_stable_diffusion_sag.py +15 -11
  434. diffusers/pipelines/stable_diffusion_xl/pipeline_flax_stable_diffusion_xl.py +1 -1
  435. diffusers/pipelines/stable_diffusion_xl/pipeline_stable_diffusion_xl.py +16 -15
  436. diffusers/pipelines/stable_diffusion_xl/pipeline_stable_diffusion_xl_img2img.py +18 -17
  437. diffusers/pipelines/stable_diffusion_xl/pipeline_stable_diffusion_xl_inpaint.py +12 -12
  438. diffusers/pipelines/stable_diffusion_xl/pipeline_stable_diffusion_xl_instruct_pix2pix.py +16 -15
  439. diffusers/pipelines/stable_video_diffusion/pipeline_stable_video_diffusion.py +3 -3
  440. diffusers/pipelines/t2i_adapter/pipeline_stable_diffusion_adapter.py +12 -12
  441. diffusers/pipelines/t2i_adapter/pipeline_stable_diffusion_xl_adapter.py +18 -17
  442. diffusers/pipelines/text_to_video_synthesis/pipeline_text_to_video_synth.py +12 -7
  443. diffusers/pipelines/text_to_video_synthesis/pipeline_text_to_video_synth_img2img.py +12 -7
  444. diffusers/pipelines/text_to_video_synthesis/pipeline_text_to_video_zero.py +15 -13
  445. diffusers/pipelines/text_to_video_synthesis/pipeline_text_to_video_zero_sdxl.py +24 -21
  446. diffusers/pipelines/unclip/pipeline_unclip.py +4 -3
  447. diffusers/pipelines/unclip/pipeline_unclip_image_variation.py +4 -3
  448. diffusers/pipelines/unclip/text_proj.py +2 -2
  449. diffusers/pipelines/unidiffuser/modeling_text_decoder.py +2 -2
  450. diffusers/pipelines/unidiffuser/modeling_uvit.py +1 -1
  451. diffusers/pipelines/unidiffuser/pipeline_unidiffuser.py +8 -7
  452. diffusers/pipelines/visualcloze/__init__.py +52 -0
  453. diffusers/pipelines/visualcloze/pipeline_visualcloze_combined.py +444 -0
  454. diffusers/pipelines/visualcloze/pipeline_visualcloze_generation.py +952 -0
  455. diffusers/pipelines/visualcloze/visualcloze_utils.py +251 -0
  456. diffusers/pipelines/wan/__init__.py +2 -0
  457. diffusers/pipelines/wan/pipeline_wan.py +91 -30
  458. diffusers/pipelines/wan/pipeline_wan_i2v.py +145 -45
  459. diffusers/pipelines/wan/pipeline_wan_vace.py +975 -0
  460. diffusers/pipelines/wan/pipeline_wan_video2video.py +14 -16
  461. diffusers/pipelines/wuerstchen/modeling_paella_vq_model.py +1 -1
  462. diffusers/pipelines/wuerstchen/modeling_wuerstchen_diffnext.py +1 -1
  463. diffusers/pipelines/wuerstchen/modeling_wuerstchen_prior.py +1 -1
  464. diffusers/pipelines/wuerstchen/pipeline_wuerstchen.py +8 -8
  465. diffusers/pipelines/wuerstchen/pipeline_wuerstchen_combined.py +16 -15
  466. diffusers/pipelines/wuerstchen/pipeline_wuerstchen_prior.py +6 -6
  467. diffusers/quantizers/__init__.py +3 -1
  468. diffusers/quantizers/base.py +17 -1
  469. diffusers/quantizers/bitsandbytes/bnb_quantizer.py +4 -0
  470. diffusers/quantizers/bitsandbytes/utils.py +10 -7
  471. diffusers/quantizers/gguf/gguf_quantizer.py +13 -4
  472. diffusers/quantizers/gguf/utils.py +108 -16
  473. diffusers/quantizers/pipe_quant_config.py +202 -0
  474. diffusers/quantizers/quantization_config.py +18 -16
  475. diffusers/quantizers/quanto/quanto_quantizer.py +4 -0
  476. diffusers/quantizers/torchao/torchao_quantizer.py +31 -1
  477. diffusers/schedulers/__init__.py +3 -1
  478. diffusers/schedulers/deprecated/scheduling_karras_ve.py +4 -3
  479. diffusers/schedulers/deprecated/scheduling_sde_vp.py +1 -1
  480. diffusers/schedulers/scheduling_consistency_models.py +1 -1
  481. diffusers/schedulers/scheduling_cosine_dpmsolver_multistep.py +10 -5
  482. diffusers/schedulers/scheduling_ddim.py +8 -8
  483. diffusers/schedulers/scheduling_ddim_cogvideox.py +5 -5
  484. diffusers/schedulers/scheduling_ddim_flax.py +6 -6
  485. diffusers/schedulers/scheduling_ddim_inverse.py +6 -6
  486. diffusers/schedulers/scheduling_ddim_parallel.py +22 -22
  487. diffusers/schedulers/scheduling_ddpm.py +9 -9
  488. diffusers/schedulers/scheduling_ddpm_flax.py +7 -7
  489. diffusers/schedulers/scheduling_ddpm_parallel.py +18 -18
  490. diffusers/schedulers/scheduling_ddpm_wuerstchen.py +2 -2
  491. diffusers/schedulers/scheduling_deis_multistep.py +16 -9
  492. diffusers/schedulers/scheduling_dpm_cogvideox.py +5 -5
  493. diffusers/schedulers/scheduling_dpmsolver_multistep.py +18 -12
  494. diffusers/schedulers/scheduling_dpmsolver_multistep_flax.py +22 -20
  495. diffusers/schedulers/scheduling_dpmsolver_multistep_inverse.py +11 -11
  496. diffusers/schedulers/scheduling_dpmsolver_sde.py +2 -2
  497. diffusers/schedulers/scheduling_dpmsolver_singlestep.py +19 -13
  498. diffusers/schedulers/scheduling_edm_dpmsolver_multistep.py +13 -8
  499. diffusers/schedulers/scheduling_edm_euler.py +20 -11
  500. diffusers/schedulers/scheduling_euler_ancestral_discrete.py +3 -3
  501. diffusers/schedulers/scheduling_euler_discrete.py +3 -3
  502. diffusers/schedulers/scheduling_euler_discrete_flax.py +3 -3
  503. diffusers/schedulers/scheduling_flow_match_euler_discrete.py +20 -5
  504. diffusers/schedulers/scheduling_flow_match_heun_discrete.py +1 -1
  505. diffusers/schedulers/scheduling_flow_match_lcm.py +561 -0
  506. diffusers/schedulers/scheduling_heun_discrete.py +2 -2
  507. diffusers/schedulers/scheduling_ipndm.py +2 -2
  508. diffusers/schedulers/scheduling_k_dpm_2_ancestral_discrete.py +2 -2
  509. diffusers/schedulers/scheduling_k_dpm_2_discrete.py +2 -2
  510. diffusers/schedulers/scheduling_karras_ve_flax.py +5 -5
  511. diffusers/schedulers/scheduling_lcm.py +3 -3
  512. diffusers/schedulers/scheduling_lms_discrete.py +2 -2
  513. diffusers/schedulers/scheduling_lms_discrete_flax.py +1 -1
  514. diffusers/schedulers/scheduling_pndm.py +4 -4
  515. diffusers/schedulers/scheduling_pndm_flax.py +4 -4
  516. diffusers/schedulers/scheduling_repaint.py +9 -9
  517. diffusers/schedulers/scheduling_sasolver.py +15 -15
  518. diffusers/schedulers/scheduling_scm.py +1 -2
  519. diffusers/schedulers/scheduling_sde_ve.py +1 -1
  520. diffusers/schedulers/scheduling_sde_ve_flax.py +2 -2
  521. diffusers/schedulers/scheduling_tcd.py +3 -3
  522. diffusers/schedulers/scheduling_unclip.py +5 -5
  523. diffusers/schedulers/scheduling_unipc_multistep.py +21 -12
  524. diffusers/schedulers/scheduling_utils.py +3 -3
  525. diffusers/schedulers/scheduling_utils_flax.py +2 -2
  526. diffusers/schedulers/scheduling_vq_diffusion.py +1 -1
  527. diffusers/training_utils.py +91 -5
  528. diffusers/utils/__init__.py +15 -0
  529. diffusers/utils/accelerate_utils.py +1 -1
  530. diffusers/utils/constants.py +4 -0
  531. diffusers/utils/doc_utils.py +1 -1
  532. diffusers/utils/dummy_pt_objects.py +432 -0
  533. diffusers/utils/dummy_torch_and_transformers_objects.py +480 -0
  534. diffusers/utils/dynamic_modules_utils.py +85 -8
  535. diffusers/utils/export_utils.py +1 -1
  536. diffusers/utils/hub_utils.py +33 -17
  537. diffusers/utils/import_utils.py +151 -18
  538. diffusers/utils/logging.py +1 -1
  539. diffusers/utils/outputs.py +2 -1
  540. diffusers/utils/peft_utils.py +96 -10
  541. diffusers/utils/state_dict_utils.py +20 -3
  542. diffusers/utils/testing_utils.py +195 -17
  543. diffusers/utils/torch_utils.py +43 -5
  544. diffusers/video_processor.py +2 -2
  545. {diffusers-0.33.1.dist-info → diffusers-0.35.0.dist-info}/METADATA +72 -57
  546. diffusers-0.35.0.dist-info/RECORD +703 -0
  547. {diffusers-0.33.1.dist-info → diffusers-0.35.0.dist-info}/WHEEL +1 -1
  548. diffusers-0.33.1.dist-info/RECORD +0 -608
  549. {diffusers-0.33.1.dist-info → diffusers-0.35.0.dist-info}/LICENSE +0 -0
  550. {diffusers-0.33.1.dist-info → diffusers-0.35.0.dist-info}/entry_points.txt +0 -0
  551. {diffusers-0.33.1.dist-info → diffusers-0.35.0.dist-info}/top_level.txt +0 -0
@@ -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 not torch.cuda.is_available():
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
- # Copied from https://github.com/huggingface/transformers/blob/000e52aec8850d3fe2f360adc6fd256e5b47fe4c/src/transformers/testing_utils.py#L1905
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(test_func_ref):
968
- @functools.wraps(test_func_ref)
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 test_func_ref(*args, **kwargs)
975
-
1041
+ return obj(*args, **kwargs)
976
1042
  except Exception as err:
977
- print(f"Test failed with {err} at try {retry_count}/{max_attempts}.", file=sys.stderr)
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 test_func_ref(*args, **kwargs)
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 is None:
1201
- return None
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:
@@ -1,4 +1,4 @@
1
- # Copyright 2024 The HuggingFace Team. All rights reserved.
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" slighly speed up this function by passing a generator that was created on the {device} device."
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://arxiv.org/abs/2309.11497).
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()
@@ -1,4 +1,4 @@
1
- # Copyright 2024 The HuggingFace Team. All rights reserved.
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 convereted to a list of one video.
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
1
+ Metadata-Version: 2.2
2
2
  Name: diffusers
3
- Version: 0.33.1
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: importlib-metadata
24
+ Requires-Dist: importlib_metadata
26
25
  Requires-Dist: filelock
27
- Requires-Dist: huggingface-hub>=0.27.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>=0.0.12; extra == "dev"
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: peft>=0.6.0; extra == "dev"
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
- Provides-Extra: docs
69
- Requires-Dist: hf-doc-builder>=0.3.0; extra == "docs"
70
- Provides-Extra: flax
71
- Requires-Dist: jax>=0.4.1; extra == "flax"
72
- Requires-Dist: jaxlib>=0.4.1; extra == "flax"
73
- Requires-Dist: flax>=0.4.1; extra == "flax"
74
- Provides-Extra: gguf
75
- Requires-Dist: gguf>=0.10.0; extra == "gguf"
76
- Requires-Dist: accelerate>=0.31.0; extra == "gguf"
77
- Provides-Extra: optimum_quanto
78
- Requires-Dist: optimum-quanto>=0.2.6; extra == "optimum-quanto"
79
- Requires-Dist: accelerate>=0.31.0; extra == "optimum-quanto"
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.