diffsynth 2.1.3__tar.gz → 2.1.4__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 (270) hide show
  1. {diffsynth-2.1.3 → diffsynth-2.1.4}/PKG-INFO +3 -1
  2. {diffsynth-2.1.3 → diffsynth-2.1.4}/README.md +2 -0
  3. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/core/data/operators.py +2 -2
  4. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/core/loader/file.py +17 -1
  5. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/core/loader/model.py +1 -1
  6. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/diffusion/flow_match.py +1 -1
  7. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/diffusion/training_module.py +19 -3
  8. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/pipelines/ltx2_audio_video.py +1 -1
  9. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/version.py +1 -1
  10. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth.egg-info/PKG-INFO +3 -1
  11. {diffsynth-2.1.3 → diffsynth-2.1.4}/LICENSE +0 -0
  12. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/__init__.py +0 -0
  13. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/configs/__init__.py +0 -0
  14. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/configs/model_configs.py +0 -0
  15. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/configs/vram_management_module_maps.py +0 -0
  16. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/core/__init__.py +0 -0
  17. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/core/attention/__init__.py +0 -0
  18. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/core/attention/attention.py +0 -0
  19. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/core/data/__init__.py +0 -0
  20. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/core/data/unified_dataset.py +0 -0
  21. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/core/device/__init__.py +0 -0
  22. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/core/device/npu_compatible_device.py +0 -0
  23. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/core/gradient/__init__.py +0 -0
  24. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/core/gradient/gradient_checkpoint.py +0 -0
  25. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/core/loader/__init__.py +0 -0
  26. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/core/loader/config.py +0 -0
  27. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/core/npu_patch/npu_fused_operator.py +0 -0
  28. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/core/offload_training/__init__.py +0 -0
  29. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/core/offload_training/manager.py +0 -0
  30. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/core/offload_training/memory_buffer.py +0 -0
  31. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/core/offload_training/offloader.py +0 -0
  32. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/core/quant/__init__.py +0 -0
  33. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/core/quant/backends/__init__.py +0 -0
  34. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/core/quant/backends/bitsandbytes.py +0 -0
  35. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/core/quant/backends/comfy_kitchen.py +0 -0
  36. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/core/quant/backends/torchao.py +0 -0
  37. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/core/quant/base.py +0 -0
  38. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/core/quant/config.py +0 -0
  39. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/core/vram/__init__.py +0 -0
  40. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/core/vram/disk_map.py +0 -0
  41. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/core/vram/initialization.py +0 -0
  42. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/core/vram/layers.py +0 -0
  43. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/diffusion/__init__.py +0 -0
  44. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/diffusion/base_pipeline.py +0 -0
  45. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/diffusion/ddim_scheduler.py +0 -0
  46. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/diffusion/dmd2.py +0 -0
  47. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/diffusion/logger.py +0 -0
  48. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/diffusion/loss.py +0 -0
  49. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/diffusion/parsers.py +0 -0
  50. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/diffusion/runner.py +0 -0
  51. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/diffusion/template.py +0 -0
  52. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/metrics/__init__.py +0 -0
  53. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/metrics/aesthetic.py +0 -0
  54. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/metrics/base.py +0 -0
  55. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/metrics/bioclip.py +0 -0
  56. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/metrics/clip.py +0 -0
  57. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/metrics/fid.py +0 -0
  58. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/metrics/hpsv2.py +0 -0
  59. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/metrics/hpsv3.py +0 -0
  60. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/metrics/image_reward.py +0 -0
  61. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/metrics/lpips.py +0 -0
  62. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/metrics/pickscore.py +0 -0
  63. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/metrics/qwen_image_bench.py +0 -0
  64. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/metrics/unified_reward_2.py +0 -0
  65. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/metrics/unified_reward_edit.py +0 -0
  66. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/ace_step_conditioner.py +0 -0
  67. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/ace_step_dit.py +0 -0
  68. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/ace_step_residual_fsq.py +0 -0
  69. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/ace_step_text_encoder.py +0 -0
  70. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/ace_step_tokenizer.py +0 -0
  71. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/ace_step_vae.py +0 -0
  72. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/aesthetic.py +0 -0
  73. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/anima_dit.py +0 -0
  74. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/bioclip.py +0 -0
  75. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/boogu_image_dit.py +0 -0
  76. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/clip.py +0 -0
  77. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/demucs.py +0 -0
  78. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/dinov3_image_encoder.py +0 -0
  79. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/ernie_image_dit.py +0 -0
  80. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/ernie_image_text_encoder.py +0 -0
  81. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/fid.py +0 -0
  82. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/flux2_dit.py +0 -0
  83. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/flux2_text_encoder.py +0 -0
  84. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/flux2_vae.py +0 -0
  85. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/flux_controlnet.py +0 -0
  86. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/flux_dit.py +0 -0
  87. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/flux_infiniteyou.py +0 -0
  88. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/flux_ipadapter.py +0 -0
  89. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/flux_lora_encoder.py +0 -0
  90. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/flux_lora_patcher.py +0 -0
  91. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/flux_redux.py +0 -0
  92. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/flux_text_encoder_clip.py +0 -0
  93. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/flux_text_encoder_t5.py +0 -0
  94. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/flux_vae.py +0 -0
  95. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/flux_value_control.py +0 -0
  96. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/general_modules.py +0 -0
  97. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/hidream_common.py +0 -0
  98. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/hidream_o1_image_dit.py +0 -0
  99. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/hpsv2.py +0 -0
  100. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/hpsv3.py +0 -0
  101. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/ideogram4_dit.py +0 -0
  102. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/ideogram4_text_encoder.py +0 -0
  103. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/ideogram4_vae.py +0 -0
  104. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/image_reward.py +0 -0
  105. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/joyai_image_dit.py +0 -0
  106. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/joyai_image_text_encoder.py +0 -0
  107. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/krea2_dit.py +0 -0
  108. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/krea2_text_encoder.py +0 -0
  109. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/lingbot_video_dit.py +0 -0
  110. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/longcat_video_dit.py +0 -0
  111. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/lpips.py +0 -0
  112. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/ltx2_audio_vae.py +0 -0
  113. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/ltx2_common.py +0 -0
  114. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/ltx2_dit.py +0 -0
  115. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/ltx2_text_encoder.py +0 -0
  116. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/ltx2_upsampler.py +0 -0
  117. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/ltx2_video_vae.py +0 -0
  118. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/minimax_h3_audio_vae.py +0 -0
  119. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/minimax_h3_dit.py +0 -0
  120. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/minimax_h3_dit_comfy.py +0 -0
  121. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/minimax_h3_text_encoder.py +0 -0
  122. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/minimax_h3_video_vae.py +0 -0
  123. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/minimax_music3_condition_encoder.py +0 -0
  124. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/minimax_music3_dit.py +0 -0
  125. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/minimax_music3_rvq_depth_decoder.py +0 -0
  126. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/minimax_music3_text_encoder.py +0 -0
  127. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/minimax_music3_vocoder.py +0 -0
  128. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/model_loader.py +0 -0
  129. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/mova_audio_dit.py +0 -0
  130. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/mova_audio_vae.py +0 -0
  131. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/mova_dual_tower_bridge.py +0 -0
  132. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/nexus_gen.py +0 -0
  133. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/nexus_gen_ar_model.py +0 -0
  134. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/nexus_gen_projector.py +0 -0
  135. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/pickscore.py +0 -0
  136. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/qwen_image_bench.py +0 -0
  137. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/qwen_image_controlnet.py +0 -0
  138. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/qwen_image_dit.py +0 -0
  139. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/qwen_image_image2lora.py +0 -0
  140. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/qwen_image_text_encoder.py +0 -0
  141. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/qwen_image_vae.py +0 -0
  142. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/sd_text_encoder.py +0 -0
  143. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/siglip2_image_encoder.py +0 -0
  144. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/stable_diffusion_text_encoder.py +0 -0
  145. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/stable_diffusion_unet.py +0 -0
  146. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/stable_diffusion_vae.py +0 -0
  147. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/stable_diffusion_xl_text_encoder.py +0 -0
  148. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/stable_diffusion_xl_unet.py +0 -0
  149. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/step1x_connector.py +0 -0
  150. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/step1x_text_encoder.py +0 -0
  151. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/unified_reward_2.py +0 -0
  152. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/unified_reward_edit.py +0 -0
  153. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/wan_animate_2_dit.py +0 -0
  154. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/wan_video_animate_adapter.py +0 -0
  155. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/wan_video_camera_controller.py +0 -0
  156. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/wan_video_dit.py +0 -0
  157. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/wan_video_dit_s2v.py +0 -0
  158. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/wan_video_image_encoder.py +0 -0
  159. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/wan_video_mot.py +0 -0
  160. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/wan_video_motion_controller.py +0 -0
  161. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/wan_video_text_encoder.py +0 -0
  162. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/wan_video_vace.py +0 -0
  163. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/wan_video_vae.py +0 -0
  164. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/wantodance.py +0 -0
  165. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/wav2vec.py +0 -0
  166. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/z_image_controlnet.py +0 -0
  167. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/z_image_dit.py +0 -0
  168. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/z_image_image2lora.py +0 -0
  169. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/models/z_image_text_encoder.py +0 -0
  170. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/pipelines/ace_step.py +0 -0
  171. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/pipelines/anima_image.py +0 -0
  172. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/pipelines/boogu_image.py +0 -0
  173. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/pipelines/ernie_image.py +0 -0
  174. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/pipelines/flux2_image.py +0 -0
  175. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/pipelines/flux_image.py +0 -0
  176. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/pipelines/hidream_o1_image.py +0 -0
  177. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/pipelines/ideogram4.py +0 -0
  178. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/pipelines/joyai_image.py +0 -0
  179. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/pipelines/krea2.py +0 -0
  180. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/pipelines/lingbot_video.py +0 -0
  181. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/pipelines/minimax_h3_audio_video.py +0 -0
  182. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/pipelines/minimax_music3.py +0 -0
  183. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/pipelines/mova_audio_video.py +0 -0
  184. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/pipelines/qwen_image.py +0 -0
  185. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/pipelines/stable_diffusion.py +0 -0
  186. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/pipelines/stable_diffusion_xl.py +0 -0
  187. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/pipelines/wan_video.py +0 -0
  188. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/pipelines/z_image.py +0 -0
  189. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/controlnet/__init__.py +0 -0
  190. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/controlnet/annotator.py +0 -0
  191. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/controlnet/controlnet_input.py +0 -0
  192. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/data/__init__.py +0 -0
  193. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/data/audio.py +0 -0
  194. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/data/audio_video.py +0 -0
  195. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/data/media_io_ltx2.py +0 -0
  196. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/data/minimax_h3.py +0 -0
  197. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/demucs/__init__.py +0 -0
  198. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/dequantizer/__init__.py +0 -0
  199. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/lora/__init__.py +0 -0
  200. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/lora/flux.py +0 -0
  201. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/lora/flux_timestep.py +0 -0
  202. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/lora/general.py +0 -0
  203. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/lora/krea2.py +0 -0
  204. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/lora/merge.py +0 -0
  205. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/lora/minimax_h3.py +0 -0
  206. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/lora/reset_rank.py +0 -0
  207. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/lora/sdxl.py +0 -0
  208. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/quant/serialization.py +0 -0
  209. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/ses/__init__.py +0 -0
  210. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/ses/ses.py +0 -0
  211. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/state_dict_converters/__init__.py +0 -0
  212. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/state_dict_converters/ace_step_conditioner.py +0 -0
  213. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/state_dict_converters/ace_step_dit.py +0 -0
  214. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/state_dict_converters/ace_step_text_encoder.py +0 -0
  215. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/state_dict_converters/ace_step_tokenizer.py +0 -0
  216. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/state_dict_converters/anima_dit.py +0 -0
  217. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/state_dict_converters/dino_v3.py +0 -0
  218. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/state_dict_converters/ernie_image_text_encoder.py +0 -0
  219. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/state_dict_converters/flux2_text_encoder.py +0 -0
  220. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/state_dict_converters/flux_controlnet.py +0 -0
  221. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/state_dict_converters/flux_dit.py +0 -0
  222. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/state_dict_converters/flux_infiniteyou.py +0 -0
  223. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/state_dict_converters/flux_ipadapter.py +0 -0
  224. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/state_dict_converters/flux_text_encoder_clip.py +0 -0
  225. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/state_dict_converters/flux_text_encoder_t5.py +0 -0
  226. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/state_dict_converters/flux_vae.py +0 -0
  227. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/state_dict_converters/ideogram4_text_encoder.py +0 -0
  228. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/state_dict_converters/image_metrics.py +0 -0
  229. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/state_dict_converters/joyai_image_text_encoder.py +0 -0
  230. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/state_dict_converters/krea2_dit.py +0 -0
  231. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/state_dict_converters/krea2_text_encoder.py +0 -0
  232. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/state_dict_converters/lingbot_video_dit.py +0 -0
  233. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/state_dict_converters/ltx2_audio_vae.py +0 -0
  234. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/state_dict_converters/ltx2_dit.py +0 -0
  235. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/state_dict_converters/ltx2_text_encoder.py +0 -0
  236. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/state_dict_converters/ltx2_video_vae.py +0 -0
  237. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/state_dict_converters/minimax_h3_audio_vae.py +0 -0
  238. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/state_dict_converters/minimax_h3_text_encoder.py +0 -0
  239. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/state_dict_converters/minimax_h3_video_vae.py +0 -0
  240. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/state_dict_converters/minimax_music3_text_encoder.py +0 -0
  241. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/state_dict_converters/nexus_gen.py +0 -0
  242. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/state_dict_converters/nexus_gen_projector.py +0 -0
  243. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/state_dict_converters/qwen_image_text_encoder.py +0 -0
  244. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/state_dict_converters/sdxl.py +0 -0
  245. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/state_dict_converters/sdxl_text_encoder.py +0 -0
  246. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/state_dict_converters/sdxl_text_encoder_2.py +0 -0
  247. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/state_dict_converters/sdxl_vae.py +0 -0
  248. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/state_dict_converters/stable_diffusion_text_encoder.py +0 -0
  249. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/state_dict_converters/stable_diffusion_vae.py +0 -0
  250. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/state_dict_converters/stable_diffusion_xl_text_encoder.py +0 -0
  251. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/state_dict_converters/step1x_connector.py +0 -0
  252. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/state_dict_converters/wan_video_animate_adapter.py +0 -0
  253. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/state_dict_converters/wan_video_dit.py +0 -0
  254. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/state_dict_converters/wan_video_image_encoder.py +0 -0
  255. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/state_dict_converters/wan_video_mot.py +0 -0
  256. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/state_dict_converters/wan_video_vace.py +0 -0
  257. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/state_dict_converters/wan_video_vae.py +0 -0
  258. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/state_dict_converters/wans2v_audio_encoder.py +0 -0
  259. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/state_dict_converters/z_image_dit.py +0 -0
  260. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/state_dict_converters/z_image_text_encoder.py +0 -0
  261. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/tile/__init__.py +0 -0
  262. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/tile/tile_worker.py +0 -0
  263. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/xfuser/__init__.py +0 -0
  264. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth/utils/xfuser/xdit_context_parallel.py +0 -0
  265. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth.egg-info/SOURCES.txt +0 -0
  266. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth.egg-info/dependency_links.txt +0 -0
  267. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth.egg-info/requires.txt +0 -0
  268. {diffsynth-2.1.3 → diffsynth-2.1.4}/diffsynth.egg-info/top_level.txt +0 -0
  269. {diffsynth-2.1.3 → diffsynth-2.1.4}/pyproject.toml +0 -0
  270. {diffsynth-2.1.3 → diffsynth-2.1.4}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: diffsynth
3
- Version: 2.1.3
3
+ Version: 2.1.4
4
4
  Summary: Enjoy the magic of Diffusion models!
5
5
  Author: ModelScope Team
6
6
  License-Expression: Apache-2.0
@@ -107,6 +107,8 @@ See also:
107
107
 
108
108
  > 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.
109
109
 
110
+ - **August 25, 2026** We have open-sourced [DiffSynth-WebUI](https://github.com/modelscope/DiffSynth-WebUI), enabling one-click private deployment of LoRA training services. Combined with the model quantization feature, you can train large models even with consumer-grade GPUs.
111
+
110
112
  - **August 19, 2026** We have released the model quantization feature. It provides a unified `QuantizeConfig` entry point supporting multiple quantization backends including bitsandbytes, torchao, and comfy-kitchen, with capabilities such as online quantization, loading pre-quantized weights, mixed quantization, saving quantized models, and quantization + LoRA training. For details, please refer to the [documentation](/docs/en/Pipeline_Usage/Quantization.md).
111
113
 
112
114
  - **August 17, 2026** MiniMax-Music3 open-sourced, welcome a new member to the audio model family! Support includes text-to-music generation and low VRAM inference. For details, please refer to the [documentation](/docs/en/Model_Details/MiniMax-Music3.md) and [example code](/examples/minimax_music3/).
@@ -40,6 +40,8 @@ See also:
40
40
 
41
41
  > 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.
42
42
 
43
+ - **August 25, 2026** We have open-sourced [DiffSynth-WebUI](https://github.com/modelscope/DiffSynth-WebUI), enabling one-click private deployment of LoRA training services. Combined with the model quantization feature, you can train large models even with consumer-grade GPUs.
44
+
43
45
  - **August 19, 2026** We have released the model quantization feature. It provides a unified `QuantizeConfig` entry point supporting multiple quantization backends including bitsandbytes, torchao, and comfy-kitchen, with capabilities such as online quantization, loading pre-quantized weights, mixed quantization, saving quantized models, and quantization + LoRA training. For details, please refer to the [documentation](/docs/en/Pipeline_Usage/Quantization.md).
44
46
 
45
47
  - **August 17, 2026** MiniMax-Music3 open-sourced, welcome a new member to the audio model family! Support includes text-to-music generation and low VRAM inference. For details, please refer to the [documentation](/docs/en/Model_Details/MiniMax-Music3.md) and [example code](/examples/minimax_music3/).
@@ -307,8 +307,8 @@ class LoadAudioWithTorchaudio(DataProcessingOperator, FrameSamplerByRateMixin):
307
307
  padding = target_samples - current_samples
308
308
  waveform = torch.nn.functional.pad(waveform, (0, padding))
309
309
  return waveform, sample_rate
310
- except:
311
- warnings.warn(f"Cannot load audio in {data}. The audio will be `None`.")
310
+ except Exception as e:
311
+ warnings.warn(f"Cannot load audio in {data} due to {e}. The audio will be `None`.")
312
312
  return None
313
313
 
314
314
 
@@ -1,5 +1,5 @@
1
1
  from safetensors import safe_open
2
- import torch, hashlib
2
+ import torch, hashlib, json
3
3
 
4
4
 
5
5
  def load_state_dict(file_path, torch_dtype=None, device="cpu", pin_memory=False, verbose=0):
@@ -34,10 +34,26 @@ def load_state_dict_from_safetensors(file_path, torch_dtype=None, device="cpu"):
34
34
 
35
35
 
36
36
  def load_metadata_from_safetensors(file_path):
37
+ if isinstance(file_path, list):
38
+ metadata = {}
39
+ for file_path_ in file_path:
40
+ for key, value in load_metadata_from_safetensors(file_path_).items():
41
+ metadata[key] = merge_metadata_value(metadata[key], value) if key in metadata else value
42
+ return metadata
37
43
  with safe_open(file_path, framework="pt", device="cpu") as f:
38
44
  return f.metadata() or {}
39
45
 
40
46
 
47
+ def merge_metadata_value(old_value, new_value):
48
+ try:
49
+ old_items, new_items = json.loads(old_value), json.loads(new_value)
50
+ except (json.JSONDecodeError, TypeError):
51
+ return new_value
52
+ if isinstance(old_items, list) and isinstance(new_items, list):
53
+ return json.dumps(old_items + [i for i in new_items if i not in old_items])
54
+ return new_value
55
+
56
+
41
57
  def load_state_dict_from_bin(file_path, torch_dtype=None, device="cpu"):
42
58
  state_dict = torch.load(file_path, map_location=device, weights_only=True)
43
59
  if len(state_dict) == 1:
@@ -37,7 +37,7 @@ def load_model(model_class, path, config=None, torch_dtype=torch.bfloat16, devic
37
37
  devices = [vram_config[k] for k in ("offload_device", "onload_device", "preparing_device", "computation_device")]
38
38
  load_device = [d for d in devices if d != "disk"][0]
39
39
  disk_map = DiskMap(path, load_device, torch_dtype=None, state_dict_converter=state_dict_converter)
40
- metadata = load_metadata_from_safetensors(path[0] if isinstance(path, list) else path)
40
+ metadata = load_metadata_from_safetensors(path)
41
41
  model = quantize.prepare_for_prequantized_load(model, compute_dtype=vram_config["computation_dtype"])
42
42
  model = enable_vram_management(model, module_map, vram_config=vram_config, disk_map=disk_map, vram_limit=vram_limit, quantize=quantize, metadata=metadata)
43
43
  else:
@@ -302,7 +302,7 @@ class FlowMatchScheduler():
302
302
  num_train_timesteps = 1000
303
303
  if special_case == "stage2":
304
304
  sigmas = torch.Tensor([0.909375, 0.725, 0.421875])
305
- elif special_case == "ditilled_stage1":
305
+ elif special_case == "distilled_stage1":
306
306
  sigmas = torch.Tensor([1.0, 0.99375, 0.9875, 0.98125, 0.975, 0.909375, 0.725, 0.421875])
307
307
  else:
308
308
  dynamic_shift_len = dynamic_shift_len or 4096
@@ -193,9 +193,25 @@ class DiffusionTrainingModule(torch.nn.Module):
193
193
  quant_config = QuantizeConfig(method=method, exclude_modules=exclude_modules)
194
194
  if not quant_config.backend.capabilities().get("is_differentiable", True):
195
195
  raise ValueError(f"Quantization method `{method}` is not differentiable, so it cannot be used for training (frozen quantized layers must pass gradients through to LoRA branches). Choose a method whose backend declares `is_differentiable=True`.")
196
- quant_map[model_string] = quant_config
196
+ quant_map[self.normalize_quant_key(model_string)] = quant_config
197
197
  return quant_map
198
198
 
199
+ def normalize_quant_key(self, model_string):
200
+ if isinstance(model_string, str) and model_string.startswith("[") and model_string.endswith("]"):
201
+ try:
202
+ model_string = json.loads(model_string)
203
+ except json.JSONDecodeError:
204
+ raise ValueError(f"Failed to parse quant option model string: `{model_string}`. A multi-file model must be written as a JSON list of files, matching its `--model_paths` entry.")
205
+ if isinstance(model_string, list):
206
+ return tuple(model_string)
207
+ return model_string
208
+
209
+ def get_quant_config(self, quant_map, model_string):
210
+ quant_config = quant_map.get(self.normalize_quant_key(model_string))
211
+ if quant_config is None and len(quant_map) > 0:
212
+ print(f"No quant option matches `{model_string}`. This model is loaded without quantization. Parsed quant options: {({key: config.method for key, config in quant_map.items()})}.")
213
+ return quant_config
214
+
199
215
  def parse_model_configs(self, model_paths, model_id_with_origin_paths, fp8_models=None, offload_models=None, quant_options=None, device="cpu"):
200
216
  fp8_models = [] if fp8_models is None else fp8_models.split(",")
201
217
  offload_models = [] if offload_models is None else offload_models.split(",")
@@ -209,7 +225,7 @@ class DiffusionTrainingModule(torch.nn.Module):
209
225
  offload=path in offload_models,
210
226
  device=device
211
227
  )
212
- model_configs.append(ModelConfig(path=path, quantize=quant_map.get(path), **vram_config))
228
+ model_configs.append(ModelConfig(path=path, quantize=self.get_quant_config(quant_map, path), **vram_config))
213
229
  if model_id_with_origin_paths is not None:
214
230
  model_id_with_origin_paths = model_id_with_origin_paths.split(",")
215
231
  for model_id_with_origin_path in model_id_with_origin_paths:
@@ -219,7 +235,7 @@ class DiffusionTrainingModule(torch.nn.Module):
219
235
  device=device
220
236
  )
221
237
  config = self.parse_path_or_model_id(model_id_with_origin_path)
222
- model_configs.append(ModelConfig(model_id=config.model_id, origin_file_pattern=config.origin_file_pattern, quantize=quant_map.get(model_id_with_origin_path), **vram_config))
238
+ model_configs.append(ModelConfig(model_id=config.model_id, origin_file_pattern=config.origin_file_pattern, quantize=self.get_quant_config(quant_map, model_id_with_origin_path), **vram_config))
223
239
  return model_configs
224
240
 
225
241
 
@@ -213,7 +213,7 @@ class LTX2AudioVideoPipeline(BasePipeline):
213
213
  progress_bar_cmd=tqdm,
214
214
  ):
215
215
  # Scheduler
216
- self.scheduler.set_timesteps(num_inference_steps, denoising_strength=denoising_strength, special_case="ditilled_stage1" if use_distilled_pipeline else None)
216
+ self.scheduler.set_timesteps(num_inference_steps, denoising_strength=denoising_strength, special_case="distilled_stage1" if use_distilled_pipeline else None)
217
217
  # Inputs
218
218
  inputs_posi = {
219
219
  "prompt": prompt,
@@ -1,5 +1,5 @@
1
1
  # Make sure to modify __release_datetime__ to release time when making official release.
2
- __version__ = '2.1.3'
2
+ __version__ = '2.1.4'
3
3
  # default release datetime for branches under active development is set
4
4
  # to be a time far-far-away-into-the-future
5
5
  __release_datetime__ = '2099-10-13 08:56:12'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: diffsynth
3
- Version: 2.1.3
3
+ Version: 2.1.4
4
4
  Summary: Enjoy the magic of Diffusion models!
5
5
  Author: ModelScope Team
6
6
  License-Expression: Apache-2.0
@@ -107,6 +107,8 @@ See also:
107
107
 
108
108
  > 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.
109
109
 
110
+ - **August 25, 2026** We have open-sourced [DiffSynth-WebUI](https://github.com/modelscope/DiffSynth-WebUI), enabling one-click private deployment of LoRA training services. Combined with the model quantization feature, you can train large models even with consumer-grade GPUs.
111
+
110
112
  - **August 19, 2026** We have released the model quantization feature. It provides a unified `QuantizeConfig` entry point supporting multiple quantization backends including bitsandbytes, torchao, and comfy-kitchen, with capabilities such as online quantization, loading pre-quantized weights, mixed quantization, saving quantized models, and quantization + LoRA training. For details, please refer to the [documentation](/docs/en/Pipeline_Usage/Quantization.md).
111
113
 
112
114
  - **August 17, 2026** MiniMax-Music3 open-sourced, welcome a new member to the audio model family! Support includes text-to-music generation and low VRAM inference. For details, please refer to the [documentation](/docs/en/Model_Details/MiniMax-Music3.md) and [example code](/examples/minimax_music3/).
File without changes