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
@@ -47,6 +47,7 @@ from ..configuration_utils import ConfigMixin
47
47
  from ..models import AutoencoderKL
48
48
  from ..models.attention_processor import FusedAttnProcessor2_0
49
49
  from ..models.modeling_utils import _LOW_CPU_MEM_USAGE_DEFAULT, ModelMixin
50
+ from ..quantizers import PipelineQuantizationConfig
50
51
  from ..quantizers.bitsandbytes.utils import _check_bnb_status
51
52
  from ..schedulers.scheduling_utils import SCHEDULER_CONFIG_NAME
52
53
  from ..utils import (
@@ -58,6 +59,7 @@ from ..utils import (
58
59
  _is_valid_type,
59
60
  is_accelerate_available,
60
61
  is_accelerate_version,
62
+ is_hpu_available,
61
63
  is_torch_npu_available,
62
64
  is_torch_version,
63
65
  is_transformers_version,
@@ -65,7 +67,7 @@ from ..utils import (
65
67
  numpy_to_pil,
66
68
  )
67
69
  from ..utils.hub_utils import _check_legacy_sharding_variant_format, load_or_create_model_card, populate_model_card
68
- from ..utils.torch_utils import is_compiled_module
70
+ from ..utils.torch_utils import empty_device_cache, get_device, is_compiled_module
69
71
 
70
72
 
71
73
  if is_torch_npu_available():
@@ -86,6 +88,7 @@ from .pipeline_loading_utils import (
86
88
  _identify_model_variants,
87
89
  _maybe_raise_error_for_incorrect_transformers,
88
90
  _maybe_raise_warning_for_inpainting,
91
+ _maybe_warn_for_wrong_component_in_quant_config,
89
92
  _resolve_custom_pipeline_and_cls,
90
93
  _unwrap_model,
91
94
  _update_init_kwargs_with_connected_pipeline,
@@ -105,7 +108,7 @@ LIBRARIES = []
105
108
  for library in LOADABLE_CLASSES:
106
109
  LIBRARIES.append(library)
107
110
 
108
- SUPPORTED_DEVICE_MAP = ["balanced"]
111
+ SUPPORTED_DEVICE_MAP = ["balanced"] + [get_device()]
109
112
 
110
113
  logger = logging.get_logger(__name__)
111
114
 
@@ -137,6 +140,43 @@ class AudioPipelineOutput(BaseOutput):
137
140
  audios: np.ndarray
138
141
 
139
142
 
143
+ class DeprecatedPipelineMixin:
144
+ """
145
+ A mixin that can be used to mark a pipeline as deprecated.
146
+
147
+ Pipelines inheriting from this mixin will raise a warning when instantiated, indicating that they are deprecated
148
+ and won't receive updates past the specified version. Tests will be skipped for pipelines that inherit from this
149
+ mixin.
150
+
151
+ Example usage:
152
+ ```python
153
+ class MyDeprecatedPipeline(DeprecatedPipelineMixin, DiffusionPipeline):
154
+ _last_supported_version = "0.20.0"
155
+
156
+ def __init__(self, *args, **kwargs):
157
+ super().__init__(*args, **kwargs)
158
+ ```
159
+ """
160
+
161
+ # Override this in the inheriting class to specify the last version that will support this pipeline
162
+ _last_supported_version = None
163
+
164
+ def __init__(self, *args, **kwargs):
165
+ # Get the class name for the warning message
166
+ class_name = self.__class__.__name__
167
+
168
+ # Get the last supported version or use the current version if not specified
169
+ version_info = getattr(self.__class__, "_last_supported_version", __version__)
170
+
171
+ # Raise a warning that this pipeline is deprecated
172
+ logger.warning(
173
+ f"The {class_name} has been deprecated and will not receive bug fixes or feature updates after Diffusers version {version_info}. "
174
+ )
175
+
176
+ # Call the parent class's __init__ method
177
+ super().__init__(*args, **kwargs)
178
+
179
+
140
180
  class DiffusionPipeline(ConfigMixin, PushToHubMixin):
141
181
  r"""
142
182
  Base class for all pipelines.
@@ -404,6 +444,11 @@ class DiffusionPipeline(ConfigMixin, PushToHubMixin):
404
444
  if not is_accelerate_available() or is_accelerate_version("<", "0.14.0"):
405
445
  return False
406
446
 
447
+ _, _, is_loaded_in_8bit_bnb = _check_bnb_status(module)
448
+
449
+ if is_loaded_in_8bit_bnb:
450
+ return False
451
+
407
452
  return hasattr(module, "_hf_hook") and (
408
453
  isinstance(module._hf_hook, accelerate.hooks.AlignDevicesHook)
409
454
  or hasattr(module._hf_hook, "hooks")
@@ -445,6 +490,20 @@ class DiffusionPipeline(ConfigMixin, PushToHubMixin):
445
490
  f"It seems like you have activated model offloading by calling `enable_model_cpu_offload`, but are now manually moving the pipeline to GPU. It is strongly recommended against doing so as memory gains from offloading are likely to be lost. Offloading automatically takes care of moving the individual components {', '.join(self.components.keys())} to GPU when needed. To make sure offloading works as expected, you should consider moving the pipeline back to CPU: `pipeline.to('cpu')` or removing the move altogether if you use offloading."
446
491
  )
447
492
 
493
+ # Enable generic support for Intel Gaudi accelerator using GPU/HPU migration
494
+ if device_type == "hpu" and kwargs.pop("hpu_migration", True) and is_hpu_available():
495
+ os.environ["PT_HPU_GPU_MIGRATION"] = "1"
496
+ logger.debug("Environment variable set: PT_HPU_GPU_MIGRATION=1")
497
+
498
+ import habana_frameworks.torch # noqa: F401
499
+
500
+ # HPU hardware check
501
+ if not (hasattr(torch, "hpu") and torch.hpu.is_available()):
502
+ raise ValueError("You are trying to call `.to('hpu')` but HPU device is unavailable.")
503
+
504
+ os.environ["PT_HPU_MAX_COMPOUND_OP_SIZE"] = "1"
505
+ logger.debug("Environment variable set: PT_HPU_MAX_COMPOUND_OP_SIZE=1")
506
+
448
507
  module_names, _ = self._get_signature_keys(self)
449
508
  modules = [getattr(self, n, None) for n in module_names]
450
509
  modules = [m for m in modules if isinstance(m, torch.nn.Module)]
@@ -552,12 +611,12 @@ class DiffusionPipeline(ConfigMixin, PushToHubMixin):
552
611
  saved using
553
612
  [`~DiffusionPipeline.save_pretrained`].
554
613
  - A path to a *directory* (for example `./my_pipeline_directory/`) containing a dduf file
555
- torch_dtype (`str` or `torch.dtype` or `dict[str, Union[str, torch.dtype]]`, *optional*):
556
- Override the default `torch.dtype` and load the model with another dtype. If "auto" is passed, the
557
- dtype is automatically derived from the model's weights. To load submodels with different dtype pass a
558
- `dict` (for example `{'transformer': torch.bfloat16, 'vae': torch.float16}`). Set the default dtype for
559
- unspecified components with `default` (for example `{'transformer': torch.bfloat16, 'default':
560
- torch.float16}`). If a component is not specified and no default is set, `torch.float32` is used.
614
+ torch_dtype (`torch.dtype` or `dict[str, Union[str, torch.dtype]]`, *optional*):
615
+ Override the default `torch.dtype` and load the model with another dtype. To load submodels with
616
+ different dtype pass a `dict` (for example `{'transformer': torch.bfloat16, 'vae': torch.float16}`).
617
+ Set the default dtype for unspecified components with `default` (for example `{'transformer':
618
+ torch.bfloat16, 'default': torch.float16}`). If a component is not specified and no default is set,
619
+ `torch.float32` is used.
561
620
  custom_pipeline (`str`, *optional*):
562
621
 
563
622
  <Tip warning={true}>
@@ -611,14 +670,11 @@ class DiffusionPipeline(ConfigMixin, PushToHubMixin):
611
670
  Mirror source to resolve accessibility issues if you’re downloading a model in China. We do not
612
671
  guarantee the timeliness or safety of the source, and you should refer to the mirror site for more
613
672
  information.
614
- device_map (`str` or `Dict[str, Union[int, str, torch.device]]`, *optional*):
615
- A map that specifies where each submodule should go. It doesn’t need to be defined for each
616
- parameter/buffer name; once a given module name is inside, every submodule of it will be sent to the
617
- same device.
618
-
619
- Set `device_map="auto"` to have 🤗 Accelerate automatically compute the most optimized `device_map`. For
620
- more information about each option see [designing a device
621
- map](https://hf.co/docs/accelerate/main/en/usage_guides/big_modeling#designing-a-device-map).
673
+ device_map (`str`, *optional*):
674
+ Strategy that dictates how the different components of a pipeline should be placed on available
675
+ devices. Currently, only "balanced" `device_map` is supported. Check out
676
+ [this](https://huggingface.co/docs/diffusers/main/en/tutorials/inference_with_big_models#device-placement)
677
+ to know more.
622
678
  max_memory (`Dict`, *optional*):
623
679
  A dictionary device identifier for the maximum memory. Will default to the maximum memory available for
624
680
  each GPU and the available CPU RAM if unset.
@@ -654,8 +710,8 @@ class DiffusionPipeline(ConfigMixin, PushToHubMixin):
654
710
 
655
711
  <Tip>
656
712
 
657
- To use private or [gated](https://huggingface.co/docs/hub/models-gated#gated-models) models, log-in with
658
- `huggingface-cli login`.
713
+ To use private or [gated](https://huggingface.co/docs/hub/models-gated#gated-models) models, log-in with `hf
714
+ auth login`.
659
715
 
660
716
  </Tip>
661
717
 
@@ -705,6 +761,7 @@ class DiffusionPipeline(ConfigMixin, PushToHubMixin):
705
761
  use_safetensors = kwargs.pop("use_safetensors", None)
706
762
  use_onnx = kwargs.pop("use_onnx", None)
707
763
  load_connected_pipeline = kwargs.pop("load_connected_pipeline", False)
764
+ quantization_config = kwargs.pop("quantization_config", None)
708
765
 
709
766
  if torch_dtype is not None and not isinstance(torch_dtype, dict) and not isinstance(torch_dtype, torch.dtype):
710
767
  torch_dtype = torch.float32
@@ -721,6 +778,9 @@ class DiffusionPipeline(ConfigMixin, PushToHubMixin):
721
778
  " install accelerate\n```\n."
722
779
  )
723
780
 
781
+ if quantization_config is not None and not isinstance(quantization_config, PipelineQuantizationConfig):
782
+ raise ValueError("`quantization_config` must be an instance of `PipelineQuantizationConfig`.")
783
+
724
784
  if low_cpu_mem_usage is True and not is_torch_version(">=", "1.9.0"):
725
785
  raise NotImplementedError(
726
786
  "Low memory initialization requires torch >= 1.9.0. Please either update your PyTorch version or set"
@@ -925,14 +985,18 @@ class DiffusionPipeline(ConfigMixin, PushToHubMixin):
925
985
 
926
986
  # 7. Load each module in the pipeline
927
987
  current_device_map = None
988
+ _maybe_warn_for_wrong_component_in_quant_config(init_dict, quantization_config)
928
989
  for name, (library_name, class_name) in logging.tqdm(init_dict.items(), desc="Loading pipeline components..."):
929
990
  # 7.1 device_map shenanigans
930
- if final_device_map is not None and len(final_device_map) > 0:
931
- component_device = final_device_map.get(name, None)
932
- if component_device is not None:
933
- current_device_map = {"": component_device}
934
- else:
935
- current_device_map = None
991
+ if final_device_map is not None:
992
+ if isinstance(final_device_map, dict) and len(final_device_map) > 0:
993
+ component_device = final_device_map.get(name, None)
994
+ if component_device is not None:
995
+ current_device_map = {"": component_device}
996
+ else:
997
+ current_device_map = None
998
+ elif isinstance(final_device_map, str):
999
+ current_device_map = final_device_map
936
1000
 
937
1001
  # 7.2 - now that JAX/Flax is an official framework of the library, we might load from Flax names
938
1002
  class_name = class_name[4:] if class_name.startswith("Flax") else class_name
@@ -981,6 +1045,7 @@ class DiffusionPipeline(ConfigMixin, PushToHubMixin):
981
1045
  use_safetensors=use_safetensors,
982
1046
  dduf_entries=dduf_entries,
983
1047
  provider_options=provider_options,
1048
+ quantization_config=quantization_config,
984
1049
  )
985
1050
  logger.info(
986
1051
  f"Loaded {name} as {class_name} from `{name}` subfolder of {pretrained_model_name_or_path}."
@@ -1034,6 +1099,8 @@ class DiffusionPipeline(ConfigMixin, PushToHubMixin):
1034
1099
  model.register_to_config(_name_or_path=pretrained_model_name_or_path)
1035
1100
  if device_map is not None:
1036
1101
  setattr(model, "hf_device_map", final_device_map)
1102
+ if quantization_config is not None:
1103
+ setattr(model, "quantization_config", quantization_config)
1037
1104
  return model
1038
1105
 
1039
1106
  @property
@@ -1084,19 +1151,20 @@ class DiffusionPipeline(ConfigMixin, PushToHubMixin):
1084
1151
  accelerate.hooks.remove_hook_from_module(model, recurse=True)
1085
1152
  self._all_hooks = []
1086
1153
 
1087
- def enable_model_cpu_offload(self, gpu_id: Optional[int] = None, device: Union[torch.device, str] = "cuda"):
1154
+ def enable_model_cpu_offload(self, gpu_id: Optional[int] = None, device: Union[torch.device, str] = None):
1088
1155
  r"""
1089
1156
  Offloads all models to CPU using accelerate, reducing memory usage with a low impact on performance. Compared
1090
- to `enable_sequential_cpu_offload`, this method moves one whole model at a time to the GPU when its `forward`
1091
- method is called, and the model remains in GPU until the next model runs. Memory savings are lower than with
1092
- `enable_sequential_cpu_offload`, but performance is much better due to the iterative execution of the `unet`.
1157
+ to `enable_sequential_cpu_offload`, this method moves one whole model at a time to the accelerator when its
1158
+ `forward` method is called, and the model remains in accelerator until the next model runs. Memory savings are
1159
+ lower than with `enable_sequential_cpu_offload`, but performance is much better due to the iterative execution
1160
+ of the `unet`.
1093
1161
 
1094
1162
  Arguments:
1095
1163
  gpu_id (`int`, *optional*):
1096
1164
  The ID of the accelerator that shall be used in inference. If not specified, it will default to 0.
1097
- device (`torch.Device` or `str`, *optional*, defaults to "cuda"):
1165
+ device (`torch.Device` or `str`, *optional*, defaults to None):
1098
1166
  The PyTorch device type of the accelerator that shall be used in inference. If not specified, it will
1099
- default to "cuda".
1167
+ automatically detect the available accelerator and use.
1100
1168
  """
1101
1169
  self._maybe_raise_error_if_group_offload_active(raise_error=True)
1102
1170
 
@@ -1118,6 +1186,11 @@ class DiffusionPipeline(ConfigMixin, PushToHubMixin):
1118
1186
 
1119
1187
  self.remove_all_hooks()
1120
1188
 
1189
+ if device is None:
1190
+ device = get_device()
1191
+ if device == "cpu":
1192
+ raise RuntimeError("`enable_model_cpu_offload` requires accelerator, but not found")
1193
+
1121
1194
  torch_device = torch.device(device)
1122
1195
  device_index = torch_device.index
1123
1196
 
@@ -1135,9 +1208,7 @@ class DiffusionPipeline(ConfigMixin, PushToHubMixin):
1135
1208
  self._offload_device = device
1136
1209
 
1137
1210
  self.to("cpu", silence_dtype_warnings=True)
1138
- device_mod = getattr(torch, device.type, None)
1139
- if hasattr(device_mod, "empty_cache") and device_mod.is_available():
1140
- device_mod.empty_cache() # otherwise we don't see the memory savings (but they probably exist)
1211
+ empty_device_cache(device.type)
1141
1212
 
1142
1213
  all_model_components = {k: v for k, v in self.components.items() if isinstance(v, torch.nn.Module)}
1143
1214
 
@@ -1196,20 +1267,20 @@ class DiffusionPipeline(ConfigMixin, PushToHubMixin):
1196
1267
  # make sure the model is in the same state as before calling it
1197
1268
  self.enable_model_cpu_offload(device=getattr(self, "_offload_device", "cuda"))
1198
1269
 
1199
- def enable_sequential_cpu_offload(self, gpu_id: Optional[int] = None, device: Union[torch.device, str] = "cuda"):
1270
+ def enable_sequential_cpu_offload(self, gpu_id: Optional[int] = None, device: Union[torch.device, str] = None):
1200
1271
  r"""
1201
1272
  Offloads all models to CPU using 🤗 Accelerate, significantly reducing memory usage. When called, the state
1202
1273
  dicts of all `torch.nn.Module` components (except those in `self._exclude_from_cpu_offload`) are saved to CPU
1203
- and then moved to `torch.device('meta')` and loaded to GPU only when their specific submodule has its `forward`
1204
- method called. Offloading happens on a submodule basis. Memory savings are higher than with
1274
+ and then moved to `torch.device('meta')` and loaded to accelerator only when their specific submodule has its
1275
+ `forward` method called. Offloading happens on a submodule basis. Memory savings are higher than with
1205
1276
  `enable_model_cpu_offload`, but performance is lower.
1206
1277
 
1207
1278
  Arguments:
1208
1279
  gpu_id (`int`, *optional*):
1209
1280
  The ID of the accelerator that shall be used in inference. If not specified, it will default to 0.
1210
- device (`torch.Device` or `str`, *optional*, defaults to "cuda"):
1281
+ device (`torch.Device` or `str`, *optional*, defaults to None):
1211
1282
  The PyTorch device type of the accelerator that shall be used in inference. If not specified, it will
1212
- default to "cuda".
1283
+ automatically detect the available accelerator and use.
1213
1284
  """
1214
1285
  self._maybe_raise_error_if_group_offload_active(raise_error=True)
1215
1286
 
@@ -1225,6 +1296,11 @@ class DiffusionPipeline(ConfigMixin, PushToHubMixin):
1225
1296
  "It seems like you have activated a device mapping strategy on the pipeline so calling `enable_sequential_cpu_offload() isn't allowed. You can call `reset_device_map()` first and then call `enable_sequential_cpu_offload()`."
1226
1297
  )
1227
1298
 
1299
+ if device is None:
1300
+ device = get_device()
1301
+ if device == "cpu":
1302
+ raise RuntimeError("`enable_sequential_cpu_offload` requires accelerator, but not found")
1303
+
1228
1304
  torch_device = torch.device(device)
1229
1305
  device_index = torch_device.index
1230
1306
 
@@ -1242,10 +1318,9 @@ class DiffusionPipeline(ConfigMixin, PushToHubMixin):
1242
1318
  self._offload_device = device
1243
1319
 
1244
1320
  if self.device.type != "cpu":
1321
+ orig_device_type = self.device.type
1245
1322
  self.to("cpu", silence_dtype_warnings=True)
1246
- device_mod = getattr(torch, self.device.type, None)
1247
- if hasattr(device_mod, "empty_cache") and device_mod.is_available():
1248
- device_mod.empty_cache() # otherwise we don't see the memory savings (but they probably exist)
1323
+ empty_device_cache(orig_device_type)
1249
1324
 
1250
1325
  for name, model in self.components.items():
1251
1326
  if not isinstance(model, torch.nn.Module):
@@ -1358,8 +1433,8 @@ class DiffusionPipeline(ConfigMixin, PushToHubMixin):
1358
1433
 
1359
1434
  <Tip>
1360
1435
 
1361
- To use private or [gated models](https://huggingface.co/docs/hub/models-gated#gated-models), log-in with
1362
- `huggingface-cli login`.
1436
+ To use private or [gated models](https://huggingface.co/docs/hub/models-gated#gated-models), log-in with `hf
1437
+ auth login
1363
1438
 
1364
1439
  </Tip>
1365
1440
 
@@ -1628,6 +1703,8 @@ class DiffusionPipeline(ConfigMixin, PushToHubMixin):
1628
1703
  signature_types[k] = (v.annotation,)
1629
1704
  elif get_origin(v.annotation) == Union:
1630
1705
  signature_types[k] = get_args(v.annotation)
1706
+ elif get_origin(v.annotation) in [List, Dict, list, dict]:
1707
+ signature_types[k] = (v.annotation,)
1631
1708
  else:
1632
1709
  logger.warning(f"cannot get type annotation for Parameter {k} of {cls}.")
1633
1710
  return signature_types
@@ -1914,11 +1991,13 @@ class DiffusionPipeline(ConfigMixin, PushToHubMixin):
1914
1991
  f"{'' if k.startswith('_') else '_'}{k}": v for k, v in original_config.items() if k not in pipeline_kwargs
1915
1992
  }
1916
1993
 
1994
+ optional_components = (
1995
+ pipeline._optional_components
1996
+ if hasattr(pipeline, "_optional_components") and pipeline._optional_components
1997
+ else []
1998
+ )
1917
1999
  missing_modules = (
1918
- set(expected_modules)
1919
- - set(pipeline._optional_components)
1920
- - set(pipeline_kwargs.keys())
1921
- - set(true_optional_modules)
2000
+ set(expected_modules) - set(optional_components) - set(pipeline_kwargs.keys()) - set(true_optional_modules)
1922
2001
  )
1923
2002
 
1924
2003
  if len(missing_modules) > 0:
@@ -1990,7 +2069,7 @@ class StableDiffusionMixin:
1990
2069
  self.vae.disable_tiling()
1991
2070
 
1992
2071
  def enable_freeu(self, s1: float, s2: float, b1: float, b2: float):
1993
- r"""Enables the FreeU mechanism as in https://arxiv.org/abs/2309.11497.
2072
+ r"""Enables the FreeU mechanism as in https://huggingface.co/papers/2309.11497.
1994
2073
 
1995
2074
  The suffixes after the scaling factors represent the stages where they are being applied.
1996
2075
 
@@ -1,4 +1,4 @@
1
- # Copyright 2024 PixArt-Alpha Authors and The HuggingFace Team. All rights reserved.
1
+ # Copyright 2025 PixArt-Alpha Authors and The HuggingFace Team. All rights reserved.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -256,7 +256,9 @@ class PixArtAlphaPipeline(DiffusionPipeline):
256
256
  Tokenizer of class
257
257
  [T5Tokenizer](https://huggingface.co/docs/transformers/model_doc/t5#transformers.T5Tokenizer).
258
258
  transformer ([`PixArtTransformer2DModel`]):
259
- A text conditioned `PixArtTransformer2DModel` to denoise the encoded image latents.
259
+ A text conditioned `PixArtTransformer2DModel` to denoise the encoded image latents. Initially published as
260
+ [`Transformer2DModel`](https://huggingface.co/PixArt-alpha/PixArt-XL-2-1024-MS/blob/main/transformer/config.json#L2)
261
+ in the config, but the mismatch can be ignored.
260
262
  scheduler ([`SchedulerMixin`]):
261
263
  A scheduler to be used in combination with `transformer` to denoise the encoded image latents.
262
264
  """
@@ -437,7 +439,7 @@ class PixArtAlphaPipeline(DiffusionPipeline):
437
439
  def prepare_extra_step_kwargs(self, generator, eta):
438
440
  # prepare extra kwargs for the scheduler step, since not all schedulers have the same signature
439
441
  # eta (η) is only used with the DDIMScheduler, it will be ignored for other schedulers.
440
- # eta corresponds to η in DDIM paper: https://arxiv.org/abs/2010.02502
442
+ # eta corresponds to η in DDIM paper: https://huggingface.co/papers/2010.02502
441
443
  # and should be between [0, 1]
442
444
 
443
445
  accepts_eta = "eta" in set(inspect.signature(self.scheduler.step).parameters.keys())
@@ -598,7 +600,7 @@ class PixArtAlphaPipeline(DiffusionPipeline):
598
600
  # &amp
599
601
  caption = re.sub(r"&amp", "", caption)
600
602
 
601
- # ip adresses:
603
+ # ip addresses:
602
604
  caption = re.sub(r"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}", " ", caption)
603
605
 
604
606
  # article ids:
@@ -733,11 +735,11 @@ class PixArtAlphaPipeline(DiffusionPipeline):
733
735
  their `set_timesteps` method. If not defined, the default behavior when `num_inference_steps` is passed
734
736
  will be used.
735
737
  guidance_scale (`float`, *optional*, defaults to 4.5):
736
- Guidance scale as defined in [Classifier-Free Diffusion Guidance](https://arxiv.org/abs/2207.12598).
737
- `guidance_scale` is defined as `w` of equation 2. of [Imagen
738
- Paper](https://arxiv.org/pdf/2205.11487.pdf). Guidance scale is enabled by setting `guidance_scale >
739
- 1`. Higher guidance scale encourages to generate images that are closely linked to the text `prompt`,
740
- usually at the expense of lower image quality.
738
+ Guidance scale as defined in [Classifier-Free Diffusion
739
+ Guidance](https://huggingface.co/papers/2207.12598). `guidance_scale` is defined as `w` of equation 2.
740
+ of [Imagen Paper](https://huggingface.co/papers/2205.11487). Guidance scale is enabled by setting
741
+ `guidance_scale > 1`. Higher guidance scale encourages to generate images that are closely linked to
742
+ the text `prompt`, usually at the expense of lower image quality.
741
743
  num_images_per_prompt (`int`, *optional*, defaults to 1):
742
744
  The number of images to generate per prompt.
743
745
  height (`int`, *optional*, defaults to self.unet.config.sample_size):
@@ -745,8 +747,8 @@ class PixArtAlphaPipeline(DiffusionPipeline):
745
747
  width (`int`, *optional*, defaults to self.unet.config.sample_size):
746
748
  The width in pixels of the generated image.
747
749
  eta (`float`, *optional*, defaults to 0.0):
748
- Corresponds to parameter eta (η) in the DDIM paper: https://arxiv.org/abs/2010.02502. Only applies to
749
- [`schedulers.DDIMScheduler`], will be ignored for others.
750
+ Corresponds to parameter eta (η) in the DDIM paper: https://huggingface.co/papers/2010.02502. Only
751
+ applies to [`schedulers.DDIMScheduler`], will be ignored for others.
750
752
  generator (`torch.Generator` or `List[torch.Generator]`, *optional*):
751
753
  One or a list of [torch generator(s)](https://pytorch.org/docs/stable/generated/torch.Generator.html)
752
754
  to make generation deterministic.
@@ -832,7 +834,7 @@ class PixArtAlphaPipeline(DiffusionPipeline):
832
834
  device = self._execution_device
833
835
 
834
836
  # here `guidance_scale` is defined analog to the guidance weight `w` of equation (2)
835
- # of the Imagen paper: https://arxiv.org/pdf/2205.11487.pdf . `guidance_scale = 1`
837
+ # of the Imagen paper: https://huggingface.co/papers/2205.11487 . `guidance_scale = 1`
836
838
  # corresponds to doing no classifier free guidance.
837
839
  do_classifier_free_guidance = guidance_scale > 1.0
838
840
 
@@ -1,4 +1,4 @@
1
- # Copyright 2024 PixArt-Sigma Authors and The HuggingFace Team. All rights reserved.
1
+ # Copyright 2025 PixArt-Sigma Authors and The HuggingFace Team. All rights reserved.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -185,6 +185,26 @@ def retrieve_timesteps(
185
185
  class PixArtSigmaPipeline(DiffusionPipeline):
186
186
  r"""
187
187
  Pipeline for text-to-image generation using PixArt-Sigma.
188
+
189
+ This model inherits from [`DiffusionPipeline`]. Check the superclass documentation for the generic methods the
190
+ library implements for all the pipelines (such as downloading or saving, running on a particular device, etc.)
191
+
192
+ Args:
193
+ vae ([`AutoencoderKL`]):
194
+ Variational Auto-Encoder (VAE) Model to encode and decode images to and from latent representations.
195
+ text_encoder ([`T5EncoderModel`]):
196
+ Frozen text-encoder. PixArt-Alpha uses
197
+ [T5](https://huggingface.co/docs/transformers/model_doc/t5#transformers.T5EncoderModel), specifically the
198
+ [t5-v1_1-xxl](https://huggingface.co/PixArt-alpha/PixArt-alpha/tree/main/t5-v1_1-xxl) variant.
199
+ tokenizer (`T5Tokenizer`):
200
+ Tokenizer of class
201
+ [T5Tokenizer](https://huggingface.co/docs/transformers/model_doc/t5#transformers.T5Tokenizer).
202
+ transformer ([`PixArtTransformer2DModel`]):
203
+ A text conditioned `PixArtTransformer2DModel` to denoise the encoded image latents. Initially published as
204
+ [`Transformer2DModel`](https://huggingface.co/PixArt-alpha/PixArt-Sigma-XL-2-1024-MS/blob/main/transformer/config.json#L2)
205
+ in the config, but the mismatch can be ignored.
206
+ scheduler ([`SchedulerMixin`]):
207
+ A scheduler to be used in combination with `transformer` to denoise the encoded image latents.
188
208
  """
189
209
 
190
210
  bad_punct_regex = re.compile(
@@ -363,7 +383,7 @@ class PixArtSigmaPipeline(DiffusionPipeline):
363
383
  def prepare_extra_step_kwargs(self, generator, eta):
364
384
  # prepare extra kwargs for the scheduler step, since not all schedulers have the same signature
365
385
  # eta (η) is only used with the DDIMScheduler, it will be ignored for other schedulers.
366
- # eta corresponds to η in DDIM paper: https://arxiv.org/abs/2010.02502
386
+ # eta corresponds to η in DDIM paper: https://huggingface.co/papers/2010.02502
367
387
  # and should be between [0, 1]
368
388
 
369
389
  accepts_eta = "eta" in set(inspect.signature(self.scheduler.step).parameters.keys())
@@ -525,7 +545,7 @@ class PixArtSigmaPipeline(DiffusionPipeline):
525
545
  # &amp
526
546
  caption = re.sub(r"&amp", "", caption)
527
547
 
528
- # ip adresses:
548
+ # ip addresses:
529
549
  caption = re.sub(r"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}", " ", caption)
530
550
 
531
551
  # article ids:
@@ -660,11 +680,11 @@ class PixArtSigmaPipeline(DiffusionPipeline):
660
680
  their `set_timesteps` method. If not defined, the default behavior when `num_inference_steps` is passed
661
681
  will be used.
662
682
  guidance_scale (`float`, *optional*, defaults to 4.5):
663
- Guidance scale as defined in [Classifier-Free Diffusion Guidance](https://arxiv.org/abs/2207.12598).
664
- `guidance_scale` is defined as `w` of equation 2. of [Imagen
665
- Paper](https://arxiv.org/pdf/2205.11487.pdf). Guidance scale is enabled by setting `guidance_scale >
666
- 1`. Higher guidance scale encourages to generate images that are closely linked to the text `prompt`,
667
- usually at the expense of lower image quality.
683
+ Guidance scale as defined in [Classifier-Free Diffusion
684
+ Guidance](https://huggingface.co/papers/2207.12598). `guidance_scale` is defined as `w` of equation 2.
685
+ of [Imagen Paper](https://huggingface.co/papers/2205.11487). Guidance scale is enabled by setting
686
+ `guidance_scale > 1`. Higher guidance scale encourages to generate images that are closely linked to
687
+ the text `prompt`, usually at the expense of lower image quality.
668
688
  num_images_per_prompt (`int`, *optional*, defaults to 1):
669
689
  The number of images to generate per prompt.
670
690
  height (`int`, *optional*, defaults to self.unet.config.sample_size):
@@ -672,8 +692,8 @@ class PixArtSigmaPipeline(DiffusionPipeline):
672
692
  width (`int`, *optional*, defaults to self.unet.config.sample_size):
673
693
  The width in pixels of the generated image.
674
694
  eta (`float`, *optional*, defaults to 0.0):
675
- Corresponds to parameter eta (η) in the DDIM paper: https://arxiv.org/abs/2010.02502. Only applies to
676
- [`schedulers.DDIMScheduler`], will be ignored for others.
695
+ Corresponds to parameter eta (η) in the DDIM paper: https://huggingface.co/papers/2010.02502. Only
696
+ applies to [`schedulers.DDIMScheduler`], will be ignored for others.
677
697
  generator (`torch.Generator` or `List[torch.Generator]`, *optional*):
678
698
  One or a list of [torch generator(s)](https://pytorch.org/docs/stable/generated/torch.Generator.html)
679
699
  to make generation deterministic.
@@ -758,7 +778,7 @@ class PixArtSigmaPipeline(DiffusionPipeline):
758
778
  device = self._execution_device
759
779
 
760
780
  # here `guidance_scale` is defined analog to the guidance weight `w` of equation (2)
761
- # of the Imagen paper: https://arxiv.org/pdf/2205.11487.pdf . `guidance_scale = 1`
781
+ # of the Imagen paper: https://huggingface.co/papers/2205.11487 . `guidance_scale = 1`
762
782
  # corresponds to doing no classifier free guidance.
763
783
  do_classifier_free_guidance = guidance_scale > 1.0
764
784
 
@@ -0,0 +1,55 @@
1
+ from typing import TYPE_CHECKING
2
+
3
+ from ...utils import (
4
+ DIFFUSERS_SLOW_IMPORT,
5
+ OptionalDependencyNotAvailable,
6
+ _LazyModule,
7
+ get_objects_from_module,
8
+ is_torch_available,
9
+ is_transformers_available,
10
+ )
11
+
12
+
13
+ _dummy_objects = {}
14
+ _additional_imports = {}
15
+ _import_structure = {"pipeline_output": ["QwenImagePipelineOutput", "QwenImagePriorReduxPipelineOutput"]}
16
+
17
+ try:
18
+ if not (is_transformers_available() and is_torch_available()):
19
+ raise OptionalDependencyNotAvailable()
20
+ except OptionalDependencyNotAvailable:
21
+ from ...utils import dummy_torch_and_transformers_objects # noqa F403
22
+
23
+ _dummy_objects.update(get_objects_from_module(dummy_torch_and_transformers_objects))
24
+ else:
25
+ _import_structure["modeling_qwenimage"] = ["ReduxImageEncoder"]
26
+ _import_structure["pipeline_qwenimage"] = ["QwenImagePipeline"]
27
+ _import_structure["pipeline_qwenimage_edit"] = ["QwenImageEditPipeline"]
28
+ _import_structure["pipeline_qwenimage_img2img"] = ["QwenImageImg2ImgPipeline"]
29
+ _import_structure["pipeline_qwenimage_inpaint"] = ["QwenImageInpaintPipeline"]
30
+
31
+ if TYPE_CHECKING or DIFFUSERS_SLOW_IMPORT:
32
+ try:
33
+ if not (is_transformers_available() and is_torch_available()):
34
+ raise OptionalDependencyNotAvailable()
35
+ except OptionalDependencyNotAvailable:
36
+ from ...utils.dummy_torch_and_transformers_objects import * # noqa F403
37
+ else:
38
+ from .pipeline_qwenimage import QwenImagePipeline
39
+ from .pipeline_qwenimage_edit import QwenImageEditPipeline
40
+ from .pipeline_qwenimage_img2img import QwenImageImg2ImgPipeline
41
+ from .pipeline_qwenimage_inpaint import QwenImageInpaintPipeline
42
+ else:
43
+ import sys
44
+
45
+ sys.modules[__name__] = _LazyModule(
46
+ __name__,
47
+ globals()["__file__"],
48
+ _import_structure,
49
+ module_spec=__spec__,
50
+ )
51
+
52
+ for name, value in _dummy_objects.items():
53
+ setattr(sys.modules[__name__], name, value)
54
+ for name, value in _additional_imports.items():
55
+ setattr(sys.modules[__name__], name, value)
@@ -0,0 +1,21 @@
1
+ from dataclasses import dataclass
2
+ from typing import List, Union
3
+
4
+ import numpy as np
5
+ import PIL.Image
6
+
7
+ from ...utils import BaseOutput
8
+
9
+
10
+ @dataclass
11
+ class QwenImagePipelineOutput(BaseOutput):
12
+ """
13
+ Output class for Stable Diffusion pipelines.
14
+
15
+ Args:
16
+ images (`List[PIL.Image.Image]` or `np.ndarray`)
17
+ List of denoised PIL images of length `batch_size` or numpy array of shape `(batch_size, height, width,
18
+ num_channels)`. PIL images or numpy array present the denoised images of the diffusion pipeline.
19
+ """
20
+
21
+ images: Union[List[PIL.Image.Image], np.ndarray]