diffsynth 2.0.15__tar.gz → 2.0.17__tar.gz

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 (235) hide show
  1. {diffsynth-2.0.15 → diffsynth-2.0.17}/PKG-INFO +1 -1
  2. {diffsynth-2.0.15 → diffsynth-2.0.17}/README.md +124 -3
  3. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/configs/model_configs.py +155 -4
  4. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/configs/vram_management_module_maps.py +18 -0
  5. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/core/data/operators.py +34 -4
  6. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/diffusion/__init__.py +1 -0
  7. diffsynth-2.0.17/diffsynth/diffusion/dmd2.py +601 -0
  8. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/diffusion/flow_match.py +40 -1
  9. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/diffusion/parsers.py +21 -0
  10. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/diffusion/runner.py +18 -1
  11. diffsynth-2.0.17/diffsynth/models/boogu_image_dit.py +3282 -0
  12. diffsynth-2.0.17/diffsynth/models/krea2_dit.py +419 -0
  13. diffsynth-2.0.17/diffsynth/models/krea2_text_encoder.py +79 -0
  14. diffsynth-2.0.17/diffsynth/pipelines/boogu_image.py +291 -0
  15. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/pipelines/flux2_image.py +1 -1
  16. diffsynth-2.0.17/diffsynth/pipelines/krea2.py +280 -0
  17. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/pipelines/stable_diffusion_xl.py +10 -7
  18. diffsynth-2.0.17/diffsynth/utils/lora/krea2.py +131 -0
  19. diffsynth-2.0.17/diffsynth/utils/state_dict_converters/krea2_dit.py +92 -0
  20. diffsynth-2.0.17/diffsynth/utils/state_dict_converters/krea2_text_encoder.py +19 -0
  21. diffsynth-2.0.17/diffsynth/utils/state_dict_converters/sdxl_text_encoder.py +206 -0
  22. diffsynth-2.0.17/diffsynth/utils/state_dict_converters/sdxl_text_encoder_2.py +345 -0
  23. diffsynth-2.0.17/diffsynth/utils/state_dict_converters/sdxl_vae.py +265 -0
  24. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth.egg-info/PKG-INFO +1 -1
  25. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth.egg-info/SOURCES.txt +12 -0
  26. {diffsynth-2.0.15 → diffsynth-2.0.17}/pyproject.toml +1 -1
  27. {diffsynth-2.0.15 → diffsynth-2.0.17}/LICENSE +0 -0
  28. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/__init__.py +0 -0
  29. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/configs/__init__.py +0 -0
  30. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/core/__init__.py +0 -0
  31. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/core/attention/__init__.py +0 -0
  32. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/core/attention/attention.py +0 -0
  33. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/core/data/__init__.py +0 -0
  34. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/core/data/unified_dataset.py +0 -0
  35. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/core/device/__init__.py +0 -0
  36. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/core/device/npu_compatible_device.py +0 -0
  37. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/core/gradient/__init__.py +0 -0
  38. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/core/gradient/gradient_checkpoint.py +0 -0
  39. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/core/loader/__init__.py +0 -0
  40. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/core/loader/config.py +0 -0
  41. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/core/loader/file.py +0 -0
  42. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/core/loader/model.py +0 -0
  43. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/core/npu_patch/npu_fused_operator.py +0 -0
  44. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/core/offload_training/__init__.py +0 -0
  45. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/core/offload_training/manager.py +0 -0
  46. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/core/offload_training/memory_buffer.py +0 -0
  47. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/core/offload_training/offloader.py +0 -0
  48. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/core/vram/__init__.py +0 -0
  49. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/core/vram/disk_map.py +0 -0
  50. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/core/vram/initialization.py +0 -0
  51. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/core/vram/layers.py +0 -0
  52. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/diffusion/base_pipeline.py +0 -0
  53. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/diffusion/ddim_scheduler.py +0 -0
  54. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/diffusion/logger.py +0 -0
  55. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/diffusion/loss.py +0 -0
  56. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/diffusion/template.py +0 -0
  57. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/diffusion/training_module.py +0 -0
  58. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/metrics/__init__.py +0 -0
  59. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/metrics/aesthetic.py +0 -0
  60. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/metrics/base.py +0 -0
  61. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/metrics/bioclip.py +0 -0
  62. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/metrics/clip.py +0 -0
  63. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/metrics/fid.py +0 -0
  64. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/metrics/hpsv2.py +0 -0
  65. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/metrics/hpsv3.py +0 -0
  66. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/metrics/image_reward.py +0 -0
  67. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/metrics/lpips.py +0 -0
  68. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/metrics/pickscore.py +0 -0
  69. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/metrics/qwen_image_bench.py +0 -0
  70. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/metrics/unified_reward_2.py +0 -0
  71. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/metrics/unified_reward_edit.py +0 -0
  72. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/ace_step_conditioner.py +0 -0
  73. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/ace_step_dit.py +0 -0
  74. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/ace_step_residual_fsq.py +0 -0
  75. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/ace_step_text_encoder.py +0 -0
  76. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/ace_step_tokenizer.py +0 -0
  77. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/ace_step_vae.py +0 -0
  78. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/aesthetic.py +0 -0
  79. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/anima_dit.py +0 -0
  80. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/bioclip.py +0 -0
  81. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/clip.py +0 -0
  82. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/demucs.py +0 -0
  83. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/dinov3_image_encoder.py +0 -0
  84. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/ernie_image_dit.py +0 -0
  85. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/ernie_image_text_encoder.py +0 -0
  86. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/fid.py +0 -0
  87. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/flux2_dit.py +0 -0
  88. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/flux2_text_encoder.py +0 -0
  89. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/flux2_vae.py +0 -0
  90. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/flux_controlnet.py +0 -0
  91. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/flux_dit.py +0 -0
  92. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/flux_infiniteyou.py +0 -0
  93. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/flux_ipadapter.py +0 -0
  94. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/flux_lora_encoder.py +0 -0
  95. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/flux_lora_patcher.py +0 -0
  96. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/flux_text_encoder_clip.py +0 -0
  97. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/flux_text_encoder_t5.py +0 -0
  98. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/flux_vae.py +0 -0
  99. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/flux_value_control.py +0 -0
  100. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/general_modules.py +0 -0
  101. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/hidream_common.py +0 -0
  102. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/hidream_o1_image_dit.py +0 -0
  103. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/hpsv2.py +0 -0
  104. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/hpsv3.py +0 -0
  105. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/ideogram4_dit.py +0 -0
  106. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/ideogram4_text_encoder.py +0 -0
  107. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/ideogram4_vae.py +0 -0
  108. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/image_reward.py +0 -0
  109. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/joyai_image_dit.py +0 -0
  110. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/joyai_image_text_encoder.py +0 -0
  111. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/longcat_video_dit.py +0 -0
  112. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/lpips.py +0 -0
  113. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/ltx2_audio_vae.py +0 -0
  114. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/ltx2_common.py +0 -0
  115. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/ltx2_dit.py +0 -0
  116. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/ltx2_text_encoder.py +0 -0
  117. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/ltx2_upsampler.py +0 -0
  118. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/ltx2_video_vae.py +0 -0
  119. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/model_loader.py +0 -0
  120. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/mova_audio_dit.py +0 -0
  121. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/mova_audio_vae.py +0 -0
  122. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/mova_dual_tower_bridge.py +0 -0
  123. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/nexus_gen.py +0 -0
  124. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/nexus_gen_ar_model.py +0 -0
  125. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/nexus_gen_projector.py +0 -0
  126. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/pickscore.py +0 -0
  127. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/qwen_image_bench.py +0 -0
  128. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/qwen_image_controlnet.py +0 -0
  129. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/qwen_image_dit.py +0 -0
  130. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/qwen_image_image2lora.py +0 -0
  131. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/qwen_image_text_encoder.py +0 -0
  132. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/qwen_image_vae.py +0 -0
  133. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/sd_text_encoder.py +0 -0
  134. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/siglip2_image_encoder.py +0 -0
  135. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/stable_diffusion_text_encoder.py +0 -0
  136. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/stable_diffusion_unet.py +0 -0
  137. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/stable_diffusion_vae.py +0 -0
  138. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/stable_diffusion_xl_text_encoder.py +0 -0
  139. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/stable_diffusion_xl_unet.py +0 -0
  140. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/step1x_connector.py +0 -0
  141. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/step1x_text_encoder.py +0 -0
  142. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/unified_reward_2.py +0 -0
  143. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/unified_reward_edit.py +0 -0
  144. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/wan_video_animate_adapter.py +0 -0
  145. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/wan_video_camera_controller.py +0 -0
  146. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/wan_video_dit.py +0 -0
  147. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/wan_video_dit_s2v.py +0 -0
  148. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/wan_video_image_encoder.py +0 -0
  149. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/wan_video_mot.py +0 -0
  150. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/wan_video_motion_controller.py +0 -0
  151. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/wan_video_text_encoder.py +0 -0
  152. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/wan_video_vace.py +0 -0
  153. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/wan_video_vae.py +0 -0
  154. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/wantodance.py +0 -0
  155. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/wav2vec.py +0 -0
  156. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/z_image_controlnet.py +0 -0
  157. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/z_image_dit.py +0 -0
  158. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/z_image_image2lora.py +0 -0
  159. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/z_image_text_encoder.py +0 -0
  160. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/pipelines/ace_step.py +0 -0
  161. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/pipelines/anima_image.py +0 -0
  162. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/pipelines/ernie_image.py +0 -0
  163. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/pipelines/flux_image.py +0 -0
  164. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/pipelines/hidream_o1_image.py +0 -0
  165. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/pipelines/ideogram4.py +0 -0
  166. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/pipelines/joyai_image.py +0 -0
  167. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/pipelines/ltx2_audio_video.py +0 -0
  168. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/pipelines/mova_audio_video.py +0 -0
  169. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/pipelines/qwen_image.py +0 -0
  170. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/pipelines/stable_diffusion.py +0 -0
  171. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/pipelines/wan_video.py +0 -0
  172. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/pipelines/z_image.py +0 -0
  173. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/controlnet/__init__.py +0 -0
  174. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/controlnet/annotator.py +0 -0
  175. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/controlnet/controlnet_input.py +0 -0
  176. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/data/__init__.py +0 -0
  177. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/data/audio.py +0 -0
  178. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/data/audio_video.py +0 -0
  179. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/data/media_io_ltx2.py +0 -0
  180. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/demucs/__init__.py +0 -0
  181. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/dequantizer/__init__.py +0 -0
  182. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/lora/__init__.py +0 -0
  183. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/lora/flux.py +0 -0
  184. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/lora/general.py +0 -0
  185. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/lora/merge.py +0 -0
  186. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/lora/reset_rank.py +0 -0
  187. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/lora/sdxl.py +0 -0
  188. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/ses/__init__.py +0 -0
  189. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/ses/ses.py +0 -0
  190. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/__init__.py +0 -0
  191. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/ace_step_conditioner.py +0 -0
  192. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/ace_step_dit.py +0 -0
  193. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/ace_step_text_encoder.py +0 -0
  194. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/ace_step_tokenizer.py +0 -0
  195. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/anima_dit.py +0 -0
  196. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/dino_v3.py +0 -0
  197. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/ernie_image_text_encoder.py +0 -0
  198. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/flux2_text_encoder.py +0 -0
  199. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/flux_controlnet.py +0 -0
  200. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/flux_dit.py +0 -0
  201. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/flux_infiniteyou.py +0 -0
  202. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/flux_ipadapter.py +0 -0
  203. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/flux_text_encoder_clip.py +0 -0
  204. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/flux_text_encoder_t5.py +0 -0
  205. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/flux_vae.py +0 -0
  206. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/image_metrics.py +0 -0
  207. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/joyai_image_text_encoder.py +0 -0
  208. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/ltx2_audio_vae.py +0 -0
  209. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/ltx2_dit.py +0 -0
  210. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/ltx2_text_encoder.py +0 -0
  211. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/ltx2_video_vae.py +0 -0
  212. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/nexus_gen.py +0 -0
  213. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/nexus_gen_projector.py +0 -0
  214. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/qwen_image_text_encoder.py +0 -0
  215. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/sdxl.py +0 -0
  216. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/stable_diffusion_text_encoder.py +0 -0
  217. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/stable_diffusion_vae.py +0 -0
  218. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/stable_diffusion_xl_text_encoder.py +0 -0
  219. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/step1x_connector.py +0 -0
  220. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/wan_video_animate_adapter.py +0 -0
  221. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/wan_video_dit.py +0 -0
  222. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/wan_video_image_encoder.py +0 -0
  223. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/wan_video_mot.py +0 -0
  224. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/wan_video_vace.py +0 -0
  225. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/wan_video_vae.py +0 -0
  226. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/wans2v_audio_encoder.py +0 -0
  227. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/z_image_dit.py +0 -0
  228. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/z_image_text_encoder.py +0 -0
  229. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/xfuser/__init__.py +0 -0
  230. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/xfuser/xdit_context_parallel.py +0 -0
  231. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/version.py +0 -0
  232. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth.egg-info/dependency_links.txt +0 -0
  233. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth.egg-info/requires.txt +0 -0
  234. {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth.egg-info/top_level.txt +0 -0
  235. {diffsynth-2.0.15 → diffsynth-2.0.17}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: diffsynth
3
- Version: 2.0.15
3
+ Version: 2.0.17
4
4
  Summary: Enjoy the magic of Diffusion models!
5
5
  Author: ModelScope Team
6
6
  License: Apache-2.0
@@ -34,7 +34,11 @@ We believe that a well-developed open-source code framework can lower the thresh
34
34
 
35
35
  > Currently, the development personnel of this project are limited, with most of the work handled by [Artiprocher](https://github.com/Artiprocher) and [mi804](https://github.com/mi804). Therefore, the progress of new feature development will be relatively slow, and the speed of responding to and resolving issues is limited. We apologize for this and ask developers to understand.
36
36
 
37
- - **June 16, 2026**: We have added a new Template model for ACE-Step: [vocals2music](https://www.modelscope.cn/models/DiffSynth-Studio/acestep15xlsft-vocals2music). For more details, please refer to the [documentation](/docs/zh/Model_Details/ACE-Step.md) and [example code](/examples/ace_step/).
37
+ - **June 29, 2026** Boogu-Image open-sourced. Support includes text-to-image generation, image editing, low VRAM inference, and training capabilities. For details, please refer to the [documentation](/docs/en/Model_Details/Boogu-Image.md) and [example code](/examples/boogu_image/).
38
+
39
+ - **June 24, 2026** Krea-2 is now open-source, and we have provided full support. For more details, please refer to the [documentation](/docs/en/Model_Details/Krea-2.md) and [example code](/examples/krea2/).
40
+
41
+ - **June 16, 2026**: We have added a new Template model for ACE-Step: [vocals2music](https://www.modelscope.cn/models/DiffSynth-Studio/acestep15xlsft-vocals2music). For more details, please refer to the [documentation](/docs/en/Model_Details/ACE-Step.md) and [example code](/examples/ace_step/).
38
42
 
39
43
  - **June 15, 2026** We have open-sourced Image-to-LoRA V2, compressing the hours-long training process for image style LoRAs into a single model inference step, thereby exploring a new paradigm for LoRA model training. The [technical report](https://arxiv.org/abs/2606.13809) has been released. This release includes three models:
40
44
  * [DiffSynth-Studio/ZImage-i2L-v2](https://modelscope.cn/models/DiffSynth-Studio/ZImage-i2L-v2): Adapted for the Z-Image model
@@ -1042,6 +1046,123 @@ Example code for Ideogram 4 is available at: [/examples/ideogram4/](/examples/id
1042
1046
 
1043
1047
  </details>
1044
1048
 
1049
+ #### Krea-2: [/docs/en/Model_Details/Krea-2.md](/docs/en/Model_Details/Krea-2.md)
1050
+
1051
+ <details>
1052
+
1053
+ <summary>Quick Start</summary>
1054
+
1055
+ Running the following code will quickly load the [krea/Krea-2-Raw](https://www.modelscope.cn/models/krea/Krea-2-Raw) model and perform inference. VRAM management is enabled, and the framework will automatically control the loading of model parameters based on available VRAM. The model can run with a minimum of 24GB VRAM.
1056
+
1057
+ ```python
1058
+ from diffsynth.pipelines.krea2 import Krea2Pipeline, ModelConfig
1059
+ import torch
1060
+
1061
+ vram_config = {
1062
+ "offload_dtype": "disk",
1063
+ "offload_device": "disk",
1064
+ "onload_dtype": torch.float8_e4m3fn,
1065
+ "onload_device": "cpu",
1066
+ "preparing_dtype": torch.float8_e4m3fn,
1067
+ "preparing_device": "cuda",
1068
+ "computation_dtype": torch.bfloat16,
1069
+ "computation_device": "cuda",
1070
+ }
1071
+ pipe = Krea2Pipeline.from_pretrained(
1072
+ torch_dtype=torch.bfloat16,
1073
+ device="cuda",
1074
+ model_configs=[
1075
+ ModelConfig(model_id="krea/Krea-2-Raw", origin_file_pattern="raw.safetensors", **vram_config),
1076
+ ModelConfig(model_id="Qwen/Qwen3-VL-4B-Instruct", origin_file_pattern="*.safetensors", **vram_config),
1077
+ ModelConfig(model_id="Qwen/Qwen-Image", origin_file_pattern="vae/diffusion_pytorch_model.safetensors", **vram_config),
1078
+ ],
1079
+ tokenizer_config=ModelConfig(model_id="Qwen/Qwen3-VL-4B-Instruct", origin_file_pattern=""),
1080
+ vram_limit=torch.cuda.mem_get_info("cuda")[1] / (1024 ** 3) - 1,
1081
+ )
1082
+ prompt = "A cat standing on a stone."
1083
+ image = pipe(prompt, seed=0, num_inference_steps=52, cfg_scale=4.5)
1084
+ image.save("image.jpg")
1085
+ ```
1086
+
1087
+ </details>
1088
+
1089
+ <details>
1090
+
1091
+ <summary>Examples</summary>
1092
+
1093
+ Example code for Krea-2 is available at: [/examples/krea2/](/examples/krea2/)
1094
+
1095
+ | Model ID | Inference | Low VRAM Inference | Full Training | Full Training Validation | LoRA Training | LoRA Training Validation |
1096
+ |-|-|-|-|-|-|-|
1097
+ |[krea/Krea-2-Raw](https://www.modelscope.cn/models/krea/Krea-2-Raw)|[code](/examples/krea2/model_inference/Krea-2-Raw.py)|[code](/examples/krea2/model_inference_low_vram/Krea-2-Raw.py)|[code](/examples/krea2/model_training/full/Krea-2-Raw.sh)|[code](/examples/krea2/model_training/validate_full/Krea-2-Raw.py)|[code](/examples/krea2/model_training/lora/Krea-2-Raw.sh)|[code](/examples/krea2/model_training/validate_lora/Krea-2-Raw.py)|
1098
+ |[krea/Krea-2-Turbo](https://www.modelscope.cn/models/krea/Krea-2-Turbo)|[code](/examples/krea2/model_inference/Krea-2-Turbo.py)|[code](/examples/krea2/model_inference_low_vram/Krea-2-Turbo.py)|[code](/examples/krea2/model_training/full/Krea-2-Turbo.sh)|[code](/examples/krea2/model_training/validate_full/Krea-2-Turbo.py)|[code](/examples/krea2/model_training/lora/Krea-2-Turbo.sh)|[code](/examples/krea2/model_training/validate_lora/Krea-2-Turbo.py)|
1099
+
1100
+ </details>
1101
+
1102
+ #### Boogu-Image: [/docs/en/Model_Details/Boogu-Image.md](/docs/en/Model_Details/Boogu-Image.md)
1103
+
1104
+ <details>
1105
+
1106
+ <summary>Quick Start</summary>
1107
+
1108
+ Running the following code will quickly load the [Boogu/Boogu-Image-0.1-Base](https://modelscope.cn/models/Boogu/Boogu-Image-0.1-Base) model for inference. VRAM management is enabled, and the framework will automatically control the loading of model parameters based on available VRAM. The model can run with a minimum of 8GB VRAM.
1109
+
1110
+ ```python
1111
+ from diffsynth.pipelines.boogu_image import BooguImagePipeline, ModelConfig
1112
+ import torch
1113
+
1114
+
1115
+ vram_config = {
1116
+ "offload_dtype": torch.float8_e4m3fn,
1117
+ "offload_device": "cpu",
1118
+ "onload_dtype": torch.float8_e4m3fn,
1119
+ "onload_device": "cpu",
1120
+ "preparing_dtype": torch.float8_e4m3fn,
1121
+ "preparing_device": "cuda",
1122
+ "computation_dtype": torch.bfloat16,
1123
+ "computation_device": "cuda",
1124
+ }
1125
+
1126
+ pipe = BooguImagePipeline.from_pretrained(
1127
+ torch_dtype=torch.bfloat16,
1128
+ device="cuda",
1129
+ model_configs=[
1130
+ ModelConfig(model_id="Boogu/Boogu-Image-0.1-Base", origin_file_pattern="transformer/*.safetensors", **vram_config),
1131
+ ModelConfig(model_id="Boogu/Boogu-Image-0.1-Base", origin_file_pattern="mllm/*.safetensors", **vram_config),
1132
+ ModelConfig(model_id="Boogu/Boogu-Image-0.1-Base", origin_file_pattern="vae/*.safetensors", **vram_config),
1133
+ ],
1134
+ processor_config=ModelConfig(model_id="Boogu/Boogu-Image-0.1-Base", origin_file_pattern="mllm/"),
1135
+ vram_limit=torch.cuda.mem_get_info("cuda")[1] / (1024 ** 3) - 0.5,
1136
+ )
1137
+
1138
+ output = pipe(
1139
+ prompt="a cat",
1140
+ negative_prompt="",
1141
+ height=1024,
1142
+ width=1024,
1143
+ seed=42,
1144
+ num_inference_steps=50,
1145
+ cfg_scale=4.0,
1146
+ )
1147
+ output.save("image_Boogu-Image-0.1-Base.jpg")
1148
+ ```
1149
+
1150
+ </details>
1151
+
1152
+ <details>
1153
+
1154
+ <summary>Examples</summary>
1155
+
1156
+ Example code for Boogu-Image is available at: [/examples/boogu_image/](/examples/boogu_image/)
1157
+
1158
+ |Model ID|Inference|Low VRAM Inference|Full Training|Full Training Validation|LoRA Training|LoRA Training Validation|
1159
+ |-|-|-|-|-|-|-|
1160
+ |[Boogu/Boogu-Image-0.1-Base](https://modelscope.cn/models/Boogu/Boogu-Image-0.1-Base)|[code](/examples/boogu_image/model_inference/Boogu-Image-0.1-Base.py)|[code](/examples/boogu_image/model_inference_low_vram/Boogu-Image-0.1-Base.py)|[code](/examples/boogu_image/model_training/full/Boogu-Image-0.1-Base.sh)|[code](/examples/boogu_image/model_training/validate_full/Boogu-Image-0.1-Base.py)|[code](/examples/boogu_image/model_training/lora/Boogu-Image-0.1-Base.sh)|[code](/examples/boogu_image/model_training/validate_lora/Boogu-Image-0.1-Base.py)|
1161
+ |[Boogu/Boogu-Image-0.1-Turbo](https://modelscope.cn/models/Boogu/Boogu-Image-0.1-Turbo)|[code](/examples/boogu_image/model_inference/Boogu-Image-0.1-Turbo.py)|[code](/examples/boogu_image/model_inference_low_vram/Boogu-Image-0.1-Turbo.py)|[code](/examples/boogu_image/model_training/full/Boogu-Image-0.1-Turbo.sh)|[code](/examples/boogu_image/model_training/validate_full/Boogu-Image-0.1-Turbo.py)|[code](/examples/boogu_image/model_training/lora/Boogu-Image-0.1-Turbo.sh)|[code](/examples/boogu_image/model_training/validate_lora/Boogu-Image-0.1-Turbo.py)|
1162
+ |[Boogu/Boogu-Image-0.1-Edit](https://modelscope.cn/models/Boogu/Boogu-Image-0.1-Edit)|[code](/examples/boogu_image/model_inference/Boogu-Image-0.1-Edit.py)|[code](/examples/boogu_image/model_inference_low_vram/Boogu-Image-0.1-Edit.py)|[code](/examples/boogu_image/model_training/full/Boogu-Image-0.1-Edit.sh)|[code](/examples/boogu_image/model_training/validate_full/Boogu-Image-0.1-Edit.py)|[code](/examples/boogu_image/model_training/lora/Boogu-Image-0.1-Edit.sh)|[code](/examples/boogu_image/model_training/validate_lora/Boogu-Image-0.1-Edit.py)|
1163
+
1164
+ </details>
1165
+
1045
1166
  ### Video Synthesis
1046
1167
 
1047
1168
  https://github.com/user-attachments/assets/1d66ae74-3b02-40a9-acc3-ea95fc039314
@@ -1317,8 +1438,8 @@ Example code for Wan is available at: [/examples/wanvideo/](/examples/wanvideo/)
1317
1438
  |[PAI/Wan2.2-Fun-A14B-Control-Camera](https://modelscope.cn/models/PAI/Wan2.2-Fun-A14B-Control-Camera)|`control_camera_video`, `input_image`|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/wanvideo/model_inference/Wan2.2-Fun-A14B-Control-Camera.py)|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/wanvideo/model_inference_low_vram/Wan2.2-Fun-A14B-Control-Camera.py)|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/wanvideo/model_training/full/Wan2.2-Fun-A14B-Control-Camera.sh)|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/wanvideo/model_training/validate_full/Wan2.2-Fun-A14B-Control-Camera.py)|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/wanvideo/model_training/lora/Wan2.2-Fun-A14B-Control-Camera.sh)|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/wanvideo/model_training/validate_lora/Wan2.2-Fun-A14B-Control-Camera.py)|
1318
1439
  |[openmoss/MOVA-360p](https://modelscope.cn/models/openmoss/MOVA-360p)|`input_image`|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/mova/model_inference/MOVA-360p-I2AV.py)|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/mova/model_inference_low_vram/MOVA-360p-I2AV.py)|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/mova/model_training/full/MOVA-360P-I2AV.sh)|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/mova/model_training/validate_full/MOVA-360p-I2AV.py)|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/mova/model_training/lora/MOVA-360P-I2AV.sh)|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/mova/model_training/validate_lora/MOVA-360p-I2AV.py)|
1319
1440
  |[openmoss/MOVA-720p](https://modelscope.cn/models/openmoss/MOVA-720p)|`input_image`|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/mova/model_inference/MOVA-720p-I2AV.py)|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/mova/model_inference_low_vram/MOVA-720p-I2AV.py)|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/mova/model_training/full/MOVA-720P-I2AV.sh)|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/mova/model_training/validate_full/MOVA-720p-I2AV.py)|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/mova/model_training/lora/MOVA-720P-I2AV.sh)|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/mova/model_training/validate_lora/MOVA-720p-I2AV.py)|
1320
- |[Wan-AI/Wan2.2-Dancer-14B (global model)](https://modelscope.cn/models/Wan-AI/Wan2.2-Dancer-14B)|`wantodance_music_path`, `wantodance_reference_image`, `wantodance_fps`, `wantodance_keyframes`, `wantodance_keyframes_mask`|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/wanvideo/model_inference/Wan2.2-Dancer-14B-global.py)|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/wanvideo/model_inference_low_vram/Wan2.2-Dancer-14B-global.py)|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/wanvideo/model_training/full/Wan2.2-Dancer-14B-global.sh)|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/wanvideo/model_training/validate_full/Wan2.2-Dancer-14B-global.py)|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/wanvideo/model_training/lora/Wan2.2-Dancer-14B-global.sh)|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/wanvideo/model_training/validate_lora/Wan2.2-Dancer-14B-global.py)|
1321
- |[Wan-AI/Wan2.2-Dancer-14B (local model)](https://modelscope.cn/models/Wan-AI/Wan2.2-Dancer-14B)|`wantodance_music_path`, `wantodance_reference_image`, `wantodance_fps`, `wantodance_keyframes`, `wantodance_keyframes_mask`|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/wanvideo/model_inference/Wan2.2-Dancer-14B-local.py)|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/wanvideo/model_inference_low_vram/Wan2.2-Dancer-14B-local.py)|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/wanvideo/model_training/full/Wan2.2-Dancer-14B-local.sh)|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/wanvideo/model_training/validate_full/Wan2.2-Dancer-14B-local.py)|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/wanvideo/model_training/lora/Wan2.2-Dancer-14B-local.sh)|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/wanvideo/model_training/validate_lora/Wan2.2-Dancer-14B-local.py)|
1441
+ |[Wan-AI/Wan-Dancer-14B (global model)](https://modelscope.cn/models/Wan-AI/Wan-Dancer-14B)|`wantodance_music_path`, `wantodance_reference_image`, `wantodance_fps`, `wantodance_keyframes`, `wantodance_keyframes_mask`|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/wanvideo/model_inference/Wan-Dancer-14B-global.py)|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/wanvideo/model_inference_low_vram/Wan-Dancer-14B-global.py)|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/wanvideo/model_training/full/Wan-Dancer-14B-global.sh)|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/wanvideo/model_training/validate_full/Wan-Dancer-14B-global.py)|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/wanvideo/model_training/lora/Wan-Dancer-14B-global.sh)|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/wanvideo/model_training/validate_lora/Wan-Dancer-14B-global.py)|
1442
+ |[Wan-AI/Wan-Dancer-14B (local model)](https://modelscope.cn/models/Wan-AI/Wan-Dancer-14B)|`wantodance_music_path`, `wantodance_reference_image`, `wantodance_fps`, `wantodance_keyframes`, `wantodance_keyframes_mask`|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/wanvideo/model_inference/Wan-Dancer-14B-local.py)|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/wanvideo/model_inference_low_vram/Wan-Dancer-14B-local.py)|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/wanvideo/model_training/full/Wan-Dancer-14B-local.sh)|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/wanvideo/model_training/validate_full/Wan-Dancer-14B-local.py)|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/wanvideo/model_training/lora/Wan-Dancer-14B-local.sh)|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/wanvideo/model_training/validate_lora/Wan-Dancer-14B-local.py)|
1322
1443
 
1323
1444
  </details>
1324
1445
 
@@ -309,7 +309,7 @@ wan_series = [
309
309
  "state_dict_converter": "diffsynth.utils.state_dict_converters.wans2v_audio_encoder.WanS2VAudioEncoderStateDictConverter",
310
310
  },
311
311
  {
312
- # Example: ModelConfig(model_id="Wan-AI/Wan2.2-Dancer-14B", origin_file_pattern="global_model.safetensors")
312
+ # Example: ModelConfig(model_id="Wan-AI/Wan-Dancer-14B", origin_file_pattern="global_model.safetensors")
313
313
  "model_hash": "eb18873fc0ba77b541eb7b62dbcd2059",
314
314
  "model_name": "wan_video_dit",
315
315
  "model_class": "diffsynth.models.wan_video_dit.WanModel",
@@ -924,7 +924,119 @@ stable_diffusion_xl_series = [
924
924
  "model_class": "diffsynth.models.stable_diffusion_xl_unet.SDXLUNet2DConditionModel",
925
925
  "extra_kwargs": {"attention_head_dim": [5, 10, 20], "transformer_layers_per_block": [1, 2, 10], "use_linear_projection": True, "addition_embed_type": "text_time", "addition_time_embed_dim": 256, "projection_class_embeddings_input_dim": 2816},
926
926
  "state_dict_converter": "diffsynth.utils.state_dict_converters.sdxl.SDXLUNetStateDictConverter_Original2Diffusers",
927
- }
927
+ },
928
+ {
929
+ # Example: ModelConfig(model_id="stabilityai/stable-diffusion-xl-base-1.0", origin_file_pattern="sd_xl_base_1.0.safetensors")
930
+ "model_hash": "4cf64a799d04260df438c6f33c9a047e",
931
+ "model_name": "stable_diffusion_text_encoder",
932
+ "model_class": "diffsynth.models.stable_diffusion_text_encoder.SDTextEncoder",
933
+ "state_dict_converter": "diffsynth.utils.state_dict_converters.sdxl_text_encoder.SDXLTextEncoderStateDictConverter_Original2Diffusers",
934
+ },
935
+ {
936
+ # Example: ModelConfig(model_id="stabilityai/stable-diffusion-xl-base-1.0", origin_file_pattern="sd_xl_base_1.0.safetensors")
937
+ "model_hash": "4cf64a799d04260df438c6f33c9a047e",
938
+ "model_name": "stable_diffusion_xl_text_encoder",
939
+ "model_class": "diffsynth.models.stable_diffusion_xl_text_encoder.SDXLTextEncoder2",
940
+ "state_dict_converter": "diffsynth.utils.state_dict_converters.sdxl_text_encoder_2.SDXLTextEncoder2StateDictConverter_Original2Diffusers",
941
+ },
942
+ {
943
+ # Example: ModelConfig(model_id="stabilityai/stable-diffusion-xl-base-1.0", origin_file_pattern="sd_xl_base_1.0.safetensors")
944
+ "model_hash": "4cf64a799d04260df438c6f33c9a047e",
945
+ "model_name": "stable_diffusion_xl_vae",
946
+ "model_class": "diffsynth.models.stable_diffusion_vae.StableDiffusionVAE",
947
+ "state_dict_converter": "diffsynth.utils.state_dict_converters.sdxl_vae.SDXLVAEStateDictConverter_Original2Diffusers",
948
+ "extra_kwargs": {"scaling_factor": 0.13025, "sample_size": 1024, "force_upcast": True},
949
+ },
950
+ {
951
+ # Example: Non-mainstream format 1
952
+ "model_hash": "d34167ecd389f17d58f6c907b65173fa",
953
+ "model_name": "stable_diffusion_xl_unet",
954
+ "model_class": "diffsynth.models.stable_diffusion_xl_unet.SDXLUNet2DConditionModel",
955
+ "extra_kwargs": {"attention_head_dim": [5, 10, 20], "transformer_layers_per_block": [1, 2, 10], "use_linear_projection": True, "addition_embed_type": "text_time", "addition_time_embed_dim": 256, "projection_class_embeddings_input_dim": 2816},
956
+ "state_dict_converter": "diffsynth.utils.state_dict_converters.sdxl.SDXLUNetStateDictConverter_Original2Diffusers",
957
+ },
958
+ {
959
+ # Example: Non-mainstream format 1
960
+ "model_hash": "d34167ecd389f17d58f6c907b65173fa",
961
+ "model_name": "stable_diffusion_text_encoder",
962
+ "model_class": "diffsynth.models.stable_diffusion_text_encoder.SDTextEncoder",
963
+ "state_dict_converter": "diffsynth.utils.state_dict_converters.sdxl_text_encoder.SDXLTextEncoderStateDictConverter_Original2Diffusers",
964
+ },
965
+ {
966
+ # Example: Non-mainstream format 1
967
+ "model_hash": "d34167ecd389f17d58f6c907b65173fa",
968
+ "model_name": "stable_diffusion_xl_text_encoder",
969
+ "model_class": "diffsynth.models.stable_diffusion_xl_text_encoder.SDXLTextEncoder2",
970
+ "state_dict_converter": "diffsynth.utils.state_dict_converters.sdxl_text_encoder_2.SDXLTextEncoder2StateDictConverter_Original2Diffusers",
971
+ },
972
+ {
973
+ # Example: Non-mainstream format 1
974
+ "model_hash": "d34167ecd389f17d58f6c907b65173fa",
975
+ "model_name": "stable_diffusion_xl_vae",
976
+ "model_class": "diffsynth.models.stable_diffusion_vae.StableDiffusionVAE",
977
+ "state_dict_converter": "diffsynth.utils.state_dict_converters.sdxl_vae.SDXLVAEStateDictConverter_Original2Diffusers",
978
+ "extra_kwargs": {"scaling_factor": 0.13025, "sample_size": 1024, "force_upcast": True},
979
+ },
980
+ {
981
+ # Example: Non-mainstream format 2
982
+ "model_hash": "c906695c0d35ec8547ebdd70d2e6a19b",
983
+ "model_name": "stable_diffusion_xl_unet",
984
+ "model_class": "diffsynth.models.stable_diffusion_xl_unet.SDXLUNet2DConditionModel",
985
+ "extra_kwargs": {"attention_head_dim": [5, 10, 20], "transformer_layers_per_block": [1, 2, 10], "use_linear_projection": True, "addition_embed_type": "text_time", "addition_time_embed_dim": 256, "projection_class_embeddings_input_dim": 2816},
986
+ "state_dict_converter": "diffsynth.utils.state_dict_converters.sdxl.SDXLUNetStateDictConverter_Original2Diffusers",
987
+ },
988
+ {
989
+ # Example: Non-mainstream format 2
990
+ "model_hash": "c906695c0d35ec8547ebdd70d2e6a19b",
991
+ "model_name": "stable_diffusion_text_encoder",
992
+ "model_class": "diffsynth.models.stable_diffusion_text_encoder.SDTextEncoder",
993
+ "state_dict_converter": "diffsynth.utils.state_dict_converters.sdxl_text_encoder.SDXLTextEncoderStateDictConverter_Original2Diffusers",
994
+ },
995
+ {
996
+ # Example: Non-mainstream format 2
997
+ "model_hash": "c906695c0d35ec8547ebdd70d2e6a19b",
998
+ "model_name": "stable_diffusion_xl_text_encoder",
999
+ "model_class": "diffsynth.models.stable_diffusion_xl_text_encoder.SDXLTextEncoder2",
1000
+ "state_dict_converter": "diffsynth.utils.state_dict_converters.sdxl_text_encoder_2.SDXLTextEncoder2StateDictConverter_Original2Diffusers",
1001
+ },
1002
+ {
1003
+ # Example: Non-mainstream format 2
1004
+ "model_hash": "c906695c0d35ec8547ebdd70d2e6a19b",
1005
+ "model_name": "stable_diffusion_xl_vae",
1006
+ "model_class": "diffsynth.models.stable_diffusion_vae.StableDiffusionVAE",
1007
+ "state_dict_converter": "diffsynth.utils.state_dict_converters.sdxl_vae.SDXLVAEStateDictConverter_Original2Diffusers",
1008
+ "extra_kwargs": {"scaling_factor": 0.13025, "sample_size": 1024, "force_upcast": True},
1009
+ },
1010
+ {
1011
+ # Example: Non-mainstream format 3
1012
+ "model_hash": "1a9744a6f0c0e54ef40805c9d2b79ec6",
1013
+ "model_name": "stable_diffusion_xl_unet",
1014
+ "model_class": "diffsynth.models.stable_diffusion_xl_unet.SDXLUNet2DConditionModel",
1015
+ "extra_kwargs": {"attention_head_dim": [5, 10, 20], "transformer_layers_per_block": [1, 2, 10], "use_linear_projection": True, "addition_embed_type": "text_time", "addition_time_embed_dim": 256, "projection_class_embeddings_input_dim": 2816},
1016
+ "state_dict_converter": "diffsynth.utils.state_dict_converters.sdxl.SDXLUNetStateDictConverter_Original2Diffusers",
1017
+ },
1018
+ {
1019
+ # Example: Non-mainstream format 3
1020
+ "model_hash": "1a9744a6f0c0e54ef40805c9d2b79ec6",
1021
+ "model_name": "stable_diffusion_text_encoder",
1022
+ "model_class": "diffsynth.models.stable_diffusion_text_encoder.SDTextEncoder",
1023
+ "state_dict_converter": "diffsynth.utils.state_dict_converters.sdxl_text_encoder.SDXLTextEncoderStateDictConverter_Original2Diffusers",
1024
+ },
1025
+ {
1026
+ # Example: Non-mainstream format 3
1027
+ "model_hash": "1a9744a6f0c0e54ef40805c9d2b79ec6",
1028
+ "model_name": "stable_diffusion_xl_text_encoder",
1029
+ "model_class": "diffsynth.models.stable_diffusion_xl_text_encoder.SDXLTextEncoder2",
1030
+ "state_dict_converter": "diffsynth.utils.state_dict_converters.sdxl_text_encoder_2.SDXLTextEncoder2StateDictConverter_Original2Diffusers",
1031
+ },
1032
+ {
1033
+ # Example: Non-mainstream format 3
1034
+ "model_hash": "1a9744a6f0c0e54ef40805c9d2b79ec6",
1035
+ "model_name": "stable_diffusion_xl_vae",
1036
+ "model_class": "diffsynth.models.stable_diffusion_vae.StableDiffusionVAE",
1037
+ "state_dict_converter": "diffsynth.utils.state_dict_converters.sdxl_vae.SDXLVAEStateDictConverter_Original2Diffusers",
1038
+ "extra_kwargs": {"scaling_factor": 0.13025, "sample_size": 1024, "force_upcast": True},
1039
+ },
928
1040
  ]
929
1041
 
930
1042
  stable_diffusion_series = [
@@ -967,6 +1079,15 @@ joyai_image_series = [
967
1079
  },
968
1080
  ]
969
1081
 
1082
+ boogu_image_series = [
1083
+ {
1084
+ # Example: ModelConfig(model_id="Boogu/Boogu-Image-0.1-Base", origin_file_pattern="transformer/diffusion_pytorch_model-*.safetensors")
1085
+ "model_hash": "8e29d2d28b83530320ae1d2c5eb323b3",
1086
+ "model_name": "boogu_image_dit",
1087
+ "model_class": "diffsynth.models.boogu_image_dit.BooguImageDiT",
1088
+ },
1089
+ ]
1090
+
970
1091
  ace_step_series = [
971
1092
  {
972
1093
  # Example: ModelConfig(model_id="ACE-Step/Ace-Step1.5", origin_file_pattern="acestep-v15-turbo/model.safetensors")
@@ -1171,8 +1292,38 @@ ideogram4_series = [
1171
1292
  },
1172
1293
  ]
1173
1294
 
1295
+ krea2_series = [
1296
+ {
1297
+ # Example: ModelConfig(model_id="AI-ModelScope/Krea-2", origin_file_pattern="raw.safetensors"),
1298
+ "model_hash": "4be51f0ecc9b9dfc9825abb3f7a0b4ae",
1299
+ "model_name": "krea2_dit",
1300
+ "model_class": "diffsynth.models.krea2_dit.SingleStreamDiT",
1301
+ "state_dict_converter": "diffsynth.utils.state_dict_converters.krea2_dit.Krea2DiTStateDictConverter",
1302
+ },
1303
+ {
1304
+ # Example: ModelConfig(model_id="krea/Krea-2-Raw", origin_file_pattern="raw.safetensors")
1305
+ "model_hash": "2a05e69084a6d608516ee47c8ad03334",
1306
+ "model_name": "krea2_dit",
1307
+ "model_class": "diffsynth.models.krea2_dit.SingleStreamDiT",
1308
+ },
1309
+ {
1310
+ # Example: ModelConfig(model_id="krea/Krea-2-Raw", origin_file_pattern="transformer/*.safetensors")
1311
+ "model_hash": "cddb3118d9f8250bf7b08c331c5c55aa",
1312
+ "model_name": "krea2_dit",
1313
+ "model_class": "diffsynth.models.krea2_dit.SingleStreamDiT",
1314
+ "state_dict_converter": "diffsynth.utils.state_dict_converters.krea2_dit.Krea2DiTStateDictConverter_Diffusers",
1315
+ },
1316
+ {
1317
+ # Example: ModelConfig(model_id="Qwen/Qwen3-VL-4B-Instruct", origin_file_pattern="*.safetensors")
1318
+ "model_hash": "b8750c24f732c87797f551196c4cef78",
1319
+ "model_name": "krea2_text_encoder",
1320
+ "model_class": "diffsynth.models.krea2_text_encoder.Krea2TextEncoder",
1321
+ "state_dict_converter": "diffsynth.utils.state_dict_converters.krea2_text_encoder.Krea2TextEncoderStateDictConverter",
1322
+ },
1323
+ ]
1324
+
1174
1325
  MODEL_CONFIGS = (
1175
1326
  stable_diffusion_xl_series + stable_diffusion_series + qwen_image_series + wan_series + flux_series + flux2_series + ernie_image_series
1176
- + z_image_series + ltx2_series + anima_series + mova_series + joyai_image_series + ace_step_series + hidream_o1_image_series
1177
- + image_metrics_series + ideogram4_series
1327
+ + z_image_series + ltx2_series + anima_series + mova_series + joyai_image_series + boogu_image_series + ace_step_series + hidream_o1_image_series
1328
+ + image_metrics_series + ideogram4_series + krea2_series
1178
1329
  )
@@ -295,6 +295,12 @@ VRAM_MANAGEMENT_MODULE_MAPS = {
295
295
  "transformers.models.qwen3_vl.modeling_qwen3_vl.Qwen3VLTextRMSNorm": "diffsynth.core.vram.layers.AutoWrappedModule",
296
296
  "transformers.models.qwen3_vl.modeling_qwen3_vl.Qwen3VLTextRotaryEmbedding": "diffsynth.core.vram.layers.AutoWrappedModule",
297
297
  },
298
+ "diffsynth.models.boogu_image_dit.BooguImageDiT": {
299
+ "torch.nn.Linear": "diffsynth.core.vram.layers.AutoWrappedLinear",
300
+ "torch.nn.RMSNorm": "diffsynth.core.vram.layers.AutoWrappedModule",
301
+ "torch.nn.LayerNorm": "diffsynth.core.vram.layers.AutoWrappedModule",
302
+ "torch.nn.Embedding": "diffsynth.core.vram.layers.AutoWrappedModule",
303
+ },
298
304
  "diffsynth.models.ace_step_dit.AceStepDiTModel": {
299
305
  "diffsynth.models.ace_step_dit.AceStepDiTLayer": "diffsynth.core.vram.layers.AutoWrappedNonRecurseModule",
300
306
  "torch.nn.Linear": "diffsynth.core.vram.layers.AutoWrappedLinear",
@@ -393,6 +399,18 @@ VRAM_MANAGEMENT_MODULE_MAPS = {
393
399
  "transformers.models.qwen3_vl.modeling_qwen3_vl.Qwen3VLTextRotaryEmbedding": "diffsynth.core.vram.layers.AutoWrappedModule",
394
400
  "transformers.models.qwen3_vl.modeling_qwen3_vl.Qwen3VLTextRMSNorm": "diffsynth.core.vram.layers.AutoWrappedModule",
395
401
  },
402
+ "diffsynth.models.krea2_dit.SingleStreamDiT": {
403
+ "diffsynth.models.krea2_dit.RMSNorm": "diffsynth.core.vram.layers.AutoWrappedModule",
404
+ "torch.nn.Linear": "diffsynth.core.vram.layers.AutoWrappedLinear",
405
+ "diffsynth.models.krea2_dit.DoubleSharedModulation": "diffsynth.core.vram.layers.AutoWrappedModule",
406
+ "diffsynth.models.krea2_dit.SimpleModulation": "diffsynth.core.vram.layers.AutoWrappedModule",
407
+ },
408
+ "diffsynth.models.krea2_text_encoder.Krea2TextEncoder": {
409
+ "torch.nn.Linear": "diffsynth.core.vram.layers.AutoWrappedLinear",
410
+ "torch.nn.Embedding": "diffsynth.core.vram.layers.AutoWrappedModule",
411
+ "transformers.models.qwen3_vl.modeling_qwen3_vl.Qwen3VLTextRotaryEmbedding": "diffsynth.core.vram.layers.AutoWrappedModule",
412
+ "transformers.models.qwen3_vl.modeling_qwen3_vl.Qwen3VLTextRMSNorm": "diffsynth.core.vram.layers.AutoWrappedModule",
413
+ },
396
414
  }
397
415
 
398
416
  def QwenImageTextEncoder_Module_Map_Updater():
@@ -1,10 +1,32 @@
1
- import math, warnings
1
+ import math, warnings, time
2
2
  import torch, torchvision, imageio, os
3
3
  import imageio.v3 as iio
4
+ import urllib.request
5
+ from io import BytesIO
4
6
  from PIL import Image
5
7
  from einops import repeat
6
8
 
7
9
 
10
+ def _is_url(path):
11
+ return isinstance(path, str) and path.startswith(("http://", "https://"))
12
+
13
+
14
+ def _load_image_from_url(url, timeout=30, max_retries=3):
15
+ request = urllib.request.Request(url, headers={"User-Agent": "Mozilla/5.0 (compatible; DiffSynth-Studio)"})
16
+ last_error = None
17
+ for attempt in range(max_retries):
18
+ try:
19
+ with urllib.request.urlopen(request, timeout=timeout) as response:
20
+ image = Image.open(BytesIO(response.read()))
21
+ image.load()
22
+ return image
23
+ except Exception as e:
24
+ last_error = e
25
+ if attempt < max_retries - 1:
26
+ time.sleep(2 ** attempt)
27
+ raise RuntimeError(f"Failed to load image from URL '{url}' after {max_retries} attempts: {last_error}") from last_error
28
+
29
+
8
30
  class DataProcessingPipeline:
9
31
  def __init__(self, operators=None):
10
32
  self.operators: list[DataProcessingOperator] = [] if operators is None else operators
@@ -55,12 +77,17 @@ class ToStr(DataProcessingOperator):
55
77
 
56
78
 
57
79
  class LoadImage(DataProcessingOperator):
58
- def __init__(self, convert_RGB=True, convert_RGBA=False):
80
+ def __init__(self, convert_RGB=True, convert_RGBA=False, url_timeout=30, url_max_retries=3):
59
81
  self.convert_RGB = convert_RGB
60
82
  self.convert_RGBA = convert_RGBA
61
-
83
+ self.url_timeout = url_timeout
84
+ self.url_max_retries = url_max_retries
85
+
62
86
  def __call__(self, data: str):
63
- image = Image.open(data)
87
+ if _is_url(data):
88
+ image = _load_image_from_url(data, timeout=self.url_timeout, max_retries=self.url_max_retries)
89
+ else:
90
+ image = Image.open(data)
64
91
  if self.convert_RGB: image = image.convert("RGB")
65
92
  if self.convert_RGBA: image = image.convert("RGBA")
66
93
  return image
@@ -242,6 +269,9 @@ class ToAbsolutePath(DataProcessingOperator):
242
269
  self.base_path = base_path
243
270
 
244
271
  def __call__(self, data):
272
+ # A remote URL is already absolute; joining it with base_path would corrupt it.
273
+ if _is_url(data):
274
+ return data
245
275
  return os.path.join(self.base_path, data)
246
276
 
247
277
 
@@ -4,3 +4,4 @@ from .logger import ModelLogger
4
4
  from .runner import launch_training_task, launch_data_process_task
5
5
  from .parsers import *
6
6
  from .loss import *
7
+ from .dmd2 import *