diffsynth 2.1.4__tar.gz → 2.1.5__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.4 → diffsynth-2.1.5}/PKG-INFO +4 -1
  2. {diffsynth-2.1.4 → diffsynth-2.1.5}/README.md +3 -0
  3. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/core/loader/config.py +2 -2
  4. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/core/loader/model.py +3 -0
  5. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/core/quant/backends/bitsandbytes.py +24 -24
  6. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/core/vram/layers.py +5 -2
  7. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/diffusion/base_pipeline.py +9 -1
  8. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/diffusion/loss.py +24 -1
  9. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/diffusion/training_module.py +1 -1
  10. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/pipelines/ace_step.py +2 -1
  11. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/pipelines/minimax_h3_audio_video.py +14 -0
  12. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/pipelines/minimax_music3.py +15 -1
  13. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/version.py +1 -1
  14. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth.egg-info/PKG-INFO +4 -1
  15. {diffsynth-2.1.4 → diffsynth-2.1.5}/LICENSE +0 -0
  16. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/__init__.py +0 -0
  17. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/configs/__init__.py +0 -0
  18. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/configs/model_configs.py +0 -0
  19. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/configs/vram_management_module_maps.py +0 -0
  20. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/core/__init__.py +0 -0
  21. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/core/attention/__init__.py +0 -0
  22. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/core/attention/attention.py +0 -0
  23. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/core/data/__init__.py +0 -0
  24. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/core/data/operators.py +0 -0
  25. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/core/data/unified_dataset.py +0 -0
  26. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/core/device/__init__.py +0 -0
  27. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/core/device/npu_compatible_device.py +0 -0
  28. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/core/gradient/__init__.py +0 -0
  29. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/core/gradient/gradient_checkpoint.py +0 -0
  30. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/core/loader/__init__.py +0 -0
  31. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/core/loader/file.py +0 -0
  32. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/core/npu_patch/npu_fused_operator.py +0 -0
  33. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/core/offload_training/__init__.py +0 -0
  34. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/core/offload_training/manager.py +0 -0
  35. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/core/offload_training/memory_buffer.py +0 -0
  36. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/core/offload_training/offloader.py +0 -0
  37. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/core/quant/__init__.py +0 -0
  38. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/core/quant/backends/__init__.py +0 -0
  39. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/core/quant/backends/comfy_kitchen.py +0 -0
  40. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/core/quant/backends/torchao.py +0 -0
  41. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/core/quant/base.py +0 -0
  42. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/core/quant/config.py +0 -0
  43. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/core/vram/__init__.py +0 -0
  44. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/core/vram/disk_map.py +0 -0
  45. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/core/vram/initialization.py +0 -0
  46. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/diffusion/__init__.py +0 -0
  47. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/diffusion/ddim_scheduler.py +0 -0
  48. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/diffusion/dmd2.py +0 -0
  49. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/diffusion/flow_match.py +0 -0
  50. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/diffusion/logger.py +0 -0
  51. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/diffusion/parsers.py +0 -0
  52. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/diffusion/runner.py +0 -0
  53. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/diffusion/template.py +0 -0
  54. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/metrics/__init__.py +0 -0
  55. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/metrics/aesthetic.py +0 -0
  56. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/metrics/base.py +0 -0
  57. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/metrics/bioclip.py +0 -0
  58. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/metrics/clip.py +0 -0
  59. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/metrics/fid.py +0 -0
  60. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/metrics/hpsv2.py +0 -0
  61. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/metrics/hpsv3.py +0 -0
  62. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/metrics/image_reward.py +0 -0
  63. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/metrics/lpips.py +0 -0
  64. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/metrics/pickscore.py +0 -0
  65. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/metrics/qwen_image_bench.py +0 -0
  66. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/metrics/unified_reward_2.py +0 -0
  67. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/metrics/unified_reward_edit.py +0 -0
  68. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/ace_step_conditioner.py +0 -0
  69. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/ace_step_dit.py +0 -0
  70. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/ace_step_residual_fsq.py +0 -0
  71. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/ace_step_text_encoder.py +0 -0
  72. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/ace_step_tokenizer.py +0 -0
  73. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/ace_step_vae.py +0 -0
  74. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/aesthetic.py +0 -0
  75. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/anima_dit.py +0 -0
  76. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/bioclip.py +0 -0
  77. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/boogu_image_dit.py +0 -0
  78. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/clip.py +0 -0
  79. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/demucs.py +0 -0
  80. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/dinov3_image_encoder.py +0 -0
  81. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/ernie_image_dit.py +0 -0
  82. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/ernie_image_text_encoder.py +0 -0
  83. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/fid.py +0 -0
  84. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/flux2_dit.py +0 -0
  85. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/flux2_text_encoder.py +0 -0
  86. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/flux2_vae.py +0 -0
  87. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/flux_controlnet.py +0 -0
  88. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/flux_dit.py +0 -0
  89. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/flux_infiniteyou.py +0 -0
  90. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/flux_ipadapter.py +0 -0
  91. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/flux_lora_encoder.py +0 -0
  92. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/flux_lora_patcher.py +0 -0
  93. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/flux_redux.py +0 -0
  94. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/flux_text_encoder_clip.py +0 -0
  95. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/flux_text_encoder_t5.py +0 -0
  96. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/flux_vae.py +0 -0
  97. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/flux_value_control.py +0 -0
  98. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/general_modules.py +0 -0
  99. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/hidream_common.py +0 -0
  100. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/hidream_o1_image_dit.py +0 -0
  101. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/hpsv2.py +0 -0
  102. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/hpsv3.py +0 -0
  103. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/ideogram4_dit.py +0 -0
  104. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/ideogram4_text_encoder.py +0 -0
  105. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/ideogram4_vae.py +0 -0
  106. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/image_reward.py +0 -0
  107. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/joyai_image_dit.py +0 -0
  108. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/joyai_image_text_encoder.py +0 -0
  109. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/krea2_dit.py +0 -0
  110. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/krea2_text_encoder.py +0 -0
  111. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/lingbot_video_dit.py +0 -0
  112. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/longcat_video_dit.py +0 -0
  113. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/lpips.py +0 -0
  114. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/ltx2_audio_vae.py +0 -0
  115. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/ltx2_common.py +0 -0
  116. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/ltx2_dit.py +0 -0
  117. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/ltx2_text_encoder.py +0 -0
  118. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/ltx2_upsampler.py +0 -0
  119. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/ltx2_video_vae.py +0 -0
  120. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/minimax_h3_audio_vae.py +0 -0
  121. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/minimax_h3_dit.py +0 -0
  122. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/minimax_h3_dit_comfy.py +0 -0
  123. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/minimax_h3_text_encoder.py +0 -0
  124. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/minimax_h3_video_vae.py +0 -0
  125. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/minimax_music3_condition_encoder.py +0 -0
  126. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/minimax_music3_dit.py +0 -0
  127. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/minimax_music3_rvq_depth_decoder.py +0 -0
  128. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/minimax_music3_text_encoder.py +0 -0
  129. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/minimax_music3_vocoder.py +0 -0
  130. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/model_loader.py +0 -0
  131. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/mova_audio_dit.py +0 -0
  132. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/mova_audio_vae.py +0 -0
  133. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/mova_dual_tower_bridge.py +0 -0
  134. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/nexus_gen.py +0 -0
  135. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/nexus_gen_ar_model.py +0 -0
  136. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/nexus_gen_projector.py +0 -0
  137. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/pickscore.py +0 -0
  138. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/qwen_image_bench.py +0 -0
  139. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/qwen_image_controlnet.py +0 -0
  140. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/qwen_image_dit.py +0 -0
  141. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/qwen_image_image2lora.py +0 -0
  142. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/qwen_image_text_encoder.py +0 -0
  143. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/qwen_image_vae.py +0 -0
  144. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/sd_text_encoder.py +0 -0
  145. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/siglip2_image_encoder.py +0 -0
  146. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/stable_diffusion_text_encoder.py +0 -0
  147. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/stable_diffusion_unet.py +0 -0
  148. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/stable_diffusion_vae.py +0 -0
  149. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/stable_diffusion_xl_text_encoder.py +0 -0
  150. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/stable_diffusion_xl_unet.py +0 -0
  151. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/step1x_connector.py +0 -0
  152. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/step1x_text_encoder.py +0 -0
  153. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/unified_reward_2.py +0 -0
  154. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/unified_reward_edit.py +0 -0
  155. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/wan_animate_2_dit.py +0 -0
  156. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/wan_video_animate_adapter.py +0 -0
  157. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/wan_video_camera_controller.py +0 -0
  158. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/wan_video_dit.py +0 -0
  159. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/wan_video_dit_s2v.py +0 -0
  160. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/wan_video_image_encoder.py +0 -0
  161. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/wan_video_mot.py +0 -0
  162. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/wan_video_motion_controller.py +0 -0
  163. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/wan_video_text_encoder.py +0 -0
  164. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/wan_video_vace.py +0 -0
  165. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/wan_video_vae.py +0 -0
  166. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/wantodance.py +0 -0
  167. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/wav2vec.py +0 -0
  168. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/z_image_controlnet.py +0 -0
  169. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/z_image_dit.py +0 -0
  170. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/z_image_image2lora.py +0 -0
  171. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/z_image_text_encoder.py +0 -0
  172. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/pipelines/anima_image.py +0 -0
  173. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/pipelines/boogu_image.py +0 -0
  174. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/pipelines/ernie_image.py +0 -0
  175. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/pipelines/flux2_image.py +0 -0
  176. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/pipelines/flux_image.py +0 -0
  177. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/pipelines/hidream_o1_image.py +0 -0
  178. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/pipelines/ideogram4.py +0 -0
  179. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/pipelines/joyai_image.py +0 -0
  180. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/pipelines/krea2.py +0 -0
  181. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/pipelines/lingbot_video.py +0 -0
  182. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/pipelines/ltx2_audio_video.py +0 -0
  183. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/pipelines/mova_audio_video.py +0 -0
  184. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/pipelines/qwen_image.py +0 -0
  185. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/pipelines/stable_diffusion.py +0 -0
  186. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/pipelines/stable_diffusion_xl.py +0 -0
  187. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/pipelines/wan_video.py +0 -0
  188. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/pipelines/z_image.py +0 -0
  189. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/controlnet/__init__.py +0 -0
  190. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/controlnet/annotator.py +0 -0
  191. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/controlnet/controlnet_input.py +0 -0
  192. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/data/__init__.py +0 -0
  193. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/data/audio.py +0 -0
  194. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/data/audio_video.py +0 -0
  195. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/data/media_io_ltx2.py +0 -0
  196. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/data/minimax_h3.py +0 -0
  197. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/demucs/__init__.py +0 -0
  198. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/dequantizer/__init__.py +0 -0
  199. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/lora/__init__.py +0 -0
  200. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/lora/flux.py +0 -0
  201. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/lora/flux_timestep.py +0 -0
  202. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/lora/general.py +0 -0
  203. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/lora/krea2.py +0 -0
  204. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/lora/merge.py +0 -0
  205. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/lora/minimax_h3.py +0 -0
  206. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/lora/reset_rank.py +0 -0
  207. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/lora/sdxl.py +0 -0
  208. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/quant/serialization.py +0 -0
  209. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/ses/__init__.py +0 -0
  210. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/ses/ses.py +0 -0
  211. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/__init__.py +0 -0
  212. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/ace_step_conditioner.py +0 -0
  213. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/ace_step_dit.py +0 -0
  214. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/ace_step_text_encoder.py +0 -0
  215. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/ace_step_tokenizer.py +0 -0
  216. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/anima_dit.py +0 -0
  217. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/dino_v3.py +0 -0
  218. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/ernie_image_text_encoder.py +0 -0
  219. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/flux2_text_encoder.py +0 -0
  220. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/flux_controlnet.py +0 -0
  221. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/flux_dit.py +0 -0
  222. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/flux_infiniteyou.py +0 -0
  223. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/flux_ipadapter.py +0 -0
  224. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/flux_text_encoder_clip.py +0 -0
  225. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/flux_text_encoder_t5.py +0 -0
  226. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/flux_vae.py +0 -0
  227. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/ideogram4_text_encoder.py +0 -0
  228. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/image_metrics.py +0 -0
  229. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/joyai_image_text_encoder.py +0 -0
  230. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/krea2_dit.py +0 -0
  231. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/krea2_text_encoder.py +0 -0
  232. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/lingbot_video_dit.py +0 -0
  233. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/ltx2_audio_vae.py +0 -0
  234. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/ltx2_dit.py +0 -0
  235. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/ltx2_text_encoder.py +0 -0
  236. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/ltx2_video_vae.py +0 -0
  237. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/minimax_h3_audio_vae.py +0 -0
  238. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/minimax_h3_text_encoder.py +0 -0
  239. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/minimax_h3_video_vae.py +0 -0
  240. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/minimax_music3_text_encoder.py +0 -0
  241. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/nexus_gen.py +0 -0
  242. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/nexus_gen_projector.py +0 -0
  243. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/qwen_image_text_encoder.py +0 -0
  244. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/sdxl.py +0 -0
  245. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/sdxl_text_encoder.py +0 -0
  246. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/sdxl_text_encoder_2.py +0 -0
  247. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/sdxl_vae.py +0 -0
  248. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/stable_diffusion_text_encoder.py +0 -0
  249. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/stable_diffusion_vae.py +0 -0
  250. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/stable_diffusion_xl_text_encoder.py +0 -0
  251. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/step1x_connector.py +0 -0
  252. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/wan_video_animate_adapter.py +0 -0
  253. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/wan_video_dit.py +0 -0
  254. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/wan_video_image_encoder.py +0 -0
  255. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/wan_video_mot.py +0 -0
  256. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/wan_video_vace.py +0 -0
  257. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/wan_video_vae.py +0 -0
  258. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/wans2v_audio_encoder.py +0 -0
  259. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/z_image_dit.py +0 -0
  260. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/z_image_text_encoder.py +0 -0
  261. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/tile/__init__.py +0 -0
  262. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/tile/tile_worker.py +0 -0
  263. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/xfuser/__init__.py +0 -0
  264. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/xfuser/xdit_context_parallel.py +0 -0
  265. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth.egg-info/SOURCES.txt +0 -0
  266. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth.egg-info/dependency_links.txt +0 -0
  267. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth.egg-info/requires.txt +0 -0
  268. {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth.egg-info/top_level.txt +0 -0
  269. {diffsynth-2.1.4 → diffsynth-2.1.5}/pyproject.toml +0 -0
  270. {diffsynth-2.1.4 → diffsynth-2.1.5}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: diffsynth
3
- Version: 2.1.4
3
+ Version: 2.1.5
4
4
  Summary: Enjoy the magic of Diffusion models!
5
5
  Author: ModelScope Team
6
6
  License-Expression: Apache-2.0
@@ -804,6 +804,9 @@ https://github.com/Artiprocher/DiffSynth-Studio/assets/35051019/59fb2f7b-8de0-44
804
804
  | FLUX.1 | [black-forest-labs/FLUX.1-dev](https://www.modelscope.cn/models/black-forest-labs/FLUX.1-dev) | [code](/examples/flux/model_inference/FLUX.1-dev.py) | [code](/examples/flux/model_inference_low_vram/FLUX.1-dev.py) | [code](/examples/flux/model_training/full/FLUX.1-dev.sh) | [code](/examples/flux/model_training/validate_full/FLUX.1-dev.py) | [code](/examples/flux/model_training/lora/FLUX.1-dev.sh) | [code](/examples/flux/model_training/validate_lora/FLUX.1-dev.py) |
805
805
  | FLUX.1 | [black-forest-labs/FLUX.1-Krea-dev](https://www.modelscope.cn/models/black-forest-labs/FLUX.1-Krea-dev) | [code](/examples/flux/model_inference/FLUX.1-Krea-dev.py) | [code](/examples/flux/model_inference_low_vram/FLUX.1-Krea-dev.py) | [code](/examples/flux/model_training/full/FLUX.1-Krea-dev.sh) | [code](/examples/flux/model_training/validate_full/FLUX.1-Krea-dev.py) | [code](/examples/flux/model_training/lora/FLUX.1-Krea-dev.sh) | [code](/examples/flux/model_training/validate_lora/FLUX.1-Krea-dev.py) |
806
806
  | FLUX.1 | [black-forest-labs/FLUX.1-Kontext-dev](https://www.modelscope.cn/models/black-forest-labs/FLUX.1-Kontext-dev) | [code](/examples/flux/model_inference/FLUX.1-Kontext-dev.py) | [code](/examples/flux/model_inference_low_vram/FLUX.1-Kontext-dev.py) | [code](/examples/flux/model_training/full/FLUX.1-Kontext-dev.sh) | [code](/examples/flux/model_training/validate_full/FLUX.1-Kontext-dev.py) | [code](/examples/flux/model_training/lora/FLUX.1-Kontext-dev.sh) | [code](/examples/flux/model_training/validate_lora/FLUX.1-Kontext-dev.py) |
807
+ | FLUX.1 | [black-forest-labs/FLUX.1-Fill-dev](https://www.modelscope.cn/models/black-forest-labs/FLUX.1-Fill-dev) | [code](/examples/flux/model_inference/FLUX.1-Fill-dev.py) | [code](/examples/flux/model_inference_low_vram/FLUX.1-Fill-dev.py) | [code](/examples/flux/model_training/full/FLUX.1-Fill-dev.sh) | [code](/examples/flux/model_training/validate_full/FLUX.1-Fill-dev.py) | [code](/examples/flux/model_training/lora/FLUX.1-Fill-dev.sh) | [code](/examples/flux/model_training/validate_lora/FLUX.1-Fill-dev.py) |
808
+ | FLUX.1 | [black-forest-labs/FLUX.1-Redux-dev](https://www.modelscope.cn/models/black-forest-labs/FLUX.1-Redux-dev) | [code](/examples/flux/model_inference/FLUX.1-Redux-dev.py) | [code](/examples/flux/model_inference_low_vram/FLUX.1-Redux-dev.py) | [code](/examples/flux/model_training/full/FLUX.1-Redux-dev.sh) | [code](/examples/flux/model_training/validate_full/FLUX.1-Redux-dev.py) | [code](/examples/flux/model_training/lora/FLUX.1-Redux-dev.sh) | [code](/examples/flux/model_training/validate_lora/FLUX.1-Redux-dev.py) |
809
+ | FLUX.1 | [HuanJue/Insert-Anything](https://www.modelscope.cn/models/HuanJue/Insert-Anything) | [code](/examples/flux/model_inference/Insert-Anything.py) | [code](/examples/flux/model_inference_low_vram/Insert-Anything.py) | - | - | [code](/examples/flux/model_training/lora/Insert-Anything.sh) | [code](/examples/flux/model_training/validate_lora/Insert-Anything.py) |
807
810
  | FLUX.1 | [alimama-creative/FLUX.1-dev-Controlnet-Inpainting-Beta](https://www.modelscope.cn/models/alimama-creative/FLUX.1-dev-Controlnet-Inpainting-Beta) | [code](/examples/flux/model_inference/FLUX.1-dev-Controlnet-Inpainting-Beta.py) | [code](/examples/flux/model_inference_low_vram/FLUX.1-dev-Controlnet-Inpainting-Beta.py) | [code](/examples/flux/model_training/full/FLUX.1-dev-Controlnet-Inpainting-Beta.sh) | [code](/examples/flux/model_training/validate_full/FLUX.1-dev-Controlnet-Inpainting-Beta.py) | [code](/examples/flux/model_training/lora/FLUX.1-dev-Controlnet-Inpainting-Beta.sh) | [code](/examples/flux/model_training/validate_lora/FLUX.1-dev-Controlnet-Inpainting-Beta.py) |
808
811
  | FLUX.1 | [InstantX/FLUX.1-dev-Controlnet-Union-alpha](https://www.modelscope.cn/models/InstantX/FLUX.1-dev-Controlnet-Union-alpha) | [code](/examples/flux/model_inference/FLUX.1-dev-Controlnet-Union-alpha.py) | [code](/examples/flux/model_inference_low_vram/FLUX.1-dev-Controlnet-Union-alpha.py) | [code](/examples/flux/model_training/full/FLUX.1-dev-Controlnet-Union-alpha.sh) | [code](/examples/flux/model_training/validate_full/FLUX.1-dev-Controlnet-Union-alpha.py) | [code](/examples/flux/model_training/lora/FLUX.1-dev-Controlnet-Union-alpha.sh) | [code](/examples/flux/model_training/validate_lora/FLUX.1-dev-Controlnet-Union-alpha.py) |
809
812
  | FLUX.1 | [jasperai/Flux.1-dev-Controlnet-Upscaler](https://www.modelscope.cn/models/jasperai/Flux.1-dev-Controlnet-Upscaler) | [code](/examples/flux/model_inference/FLUX.1-dev-Controlnet-Upscaler.py) | [code](/examples/flux/model_inference_low_vram/FLUX.1-dev-Controlnet-Upscaler.py) | [code](/examples/flux/model_training/full/FLUX.1-dev-Controlnet-Upscaler.sh) | [code](/examples/flux/model_training/validate_full/FLUX.1-dev-Controlnet-Upscaler.py) | [code](/examples/flux/model_training/lora/FLUX.1-dev-Controlnet-Upscaler.sh) | [code](/examples/flux/model_training/validate_lora/FLUX.1-dev-Controlnet-Upscaler.py) |
@@ -737,6 +737,9 @@ https://github.com/Artiprocher/DiffSynth-Studio/assets/35051019/59fb2f7b-8de0-44
737
737
  | FLUX.1 | [black-forest-labs/FLUX.1-dev](https://www.modelscope.cn/models/black-forest-labs/FLUX.1-dev) | [code](/examples/flux/model_inference/FLUX.1-dev.py) | [code](/examples/flux/model_inference_low_vram/FLUX.1-dev.py) | [code](/examples/flux/model_training/full/FLUX.1-dev.sh) | [code](/examples/flux/model_training/validate_full/FLUX.1-dev.py) | [code](/examples/flux/model_training/lora/FLUX.1-dev.sh) | [code](/examples/flux/model_training/validate_lora/FLUX.1-dev.py) |
738
738
  | FLUX.1 | [black-forest-labs/FLUX.1-Krea-dev](https://www.modelscope.cn/models/black-forest-labs/FLUX.1-Krea-dev) | [code](/examples/flux/model_inference/FLUX.1-Krea-dev.py) | [code](/examples/flux/model_inference_low_vram/FLUX.1-Krea-dev.py) | [code](/examples/flux/model_training/full/FLUX.1-Krea-dev.sh) | [code](/examples/flux/model_training/validate_full/FLUX.1-Krea-dev.py) | [code](/examples/flux/model_training/lora/FLUX.1-Krea-dev.sh) | [code](/examples/flux/model_training/validate_lora/FLUX.1-Krea-dev.py) |
739
739
  | FLUX.1 | [black-forest-labs/FLUX.1-Kontext-dev](https://www.modelscope.cn/models/black-forest-labs/FLUX.1-Kontext-dev) | [code](/examples/flux/model_inference/FLUX.1-Kontext-dev.py) | [code](/examples/flux/model_inference_low_vram/FLUX.1-Kontext-dev.py) | [code](/examples/flux/model_training/full/FLUX.1-Kontext-dev.sh) | [code](/examples/flux/model_training/validate_full/FLUX.1-Kontext-dev.py) | [code](/examples/flux/model_training/lora/FLUX.1-Kontext-dev.sh) | [code](/examples/flux/model_training/validate_lora/FLUX.1-Kontext-dev.py) |
740
+ | FLUX.1 | [black-forest-labs/FLUX.1-Fill-dev](https://www.modelscope.cn/models/black-forest-labs/FLUX.1-Fill-dev) | [code](/examples/flux/model_inference/FLUX.1-Fill-dev.py) | [code](/examples/flux/model_inference_low_vram/FLUX.1-Fill-dev.py) | [code](/examples/flux/model_training/full/FLUX.1-Fill-dev.sh) | [code](/examples/flux/model_training/validate_full/FLUX.1-Fill-dev.py) | [code](/examples/flux/model_training/lora/FLUX.1-Fill-dev.sh) | [code](/examples/flux/model_training/validate_lora/FLUX.1-Fill-dev.py) |
741
+ | FLUX.1 | [black-forest-labs/FLUX.1-Redux-dev](https://www.modelscope.cn/models/black-forest-labs/FLUX.1-Redux-dev) | [code](/examples/flux/model_inference/FLUX.1-Redux-dev.py) | [code](/examples/flux/model_inference_low_vram/FLUX.1-Redux-dev.py) | [code](/examples/flux/model_training/full/FLUX.1-Redux-dev.sh) | [code](/examples/flux/model_training/validate_full/FLUX.1-Redux-dev.py) | [code](/examples/flux/model_training/lora/FLUX.1-Redux-dev.sh) | [code](/examples/flux/model_training/validate_lora/FLUX.1-Redux-dev.py) |
742
+ | FLUX.1 | [HuanJue/Insert-Anything](https://www.modelscope.cn/models/HuanJue/Insert-Anything) | [code](/examples/flux/model_inference/Insert-Anything.py) | [code](/examples/flux/model_inference_low_vram/Insert-Anything.py) | - | - | [code](/examples/flux/model_training/lora/Insert-Anything.sh) | [code](/examples/flux/model_training/validate_lora/Insert-Anything.py) |
740
743
  | FLUX.1 | [alimama-creative/FLUX.1-dev-Controlnet-Inpainting-Beta](https://www.modelscope.cn/models/alimama-creative/FLUX.1-dev-Controlnet-Inpainting-Beta) | [code](/examples/flux/model_inference/FLUX.1-dev-Controlnet-Inpainting-Beta.py) | [code](/examples/flux/model_inference_low_vram/FLUX.1-dev-Controlnet-Inpainting-Beta.py) | [code](/examples/flux/model_training/full/FLUX.1-dev-Controlnet-Inpainting-Beta.sh) | [code](/examples/flux/model_training/validate_full/FLUX.1-dev-Controlnet-Inpainting-Beta.py) | [code](/examples/flux/model_training/lora/FLUX.1-dev-Controlnet-Inpainting-Beta.sh) | [code](/examples/flux/model_training/validate_lora/FLUX.1-dev-Controlnet-Inpainting-Beta.py) |
741
744
  | FLUX.1 | [InstantX/FLUX.1-dev-Controlnet-Union-alpha](https://www.modelscope.cn/models/InstantX/FLUX.1-dev-Controlnet-Union-alpha) | [code](/examples/flux/model_inference/FLUX.1-dev-Controlnet-Union-alpha.py) | [code](/examples/flux/model_inference_low_vram/FLUX.1-dev-Controlnet-Union-alpha.py) | [code](/examples/flux/model_training/full/FLUX.1-dev-Controlnet-Union-alpha.sh) | [code](/examples/flux/model_training/validate_full/FLUX.1-dev-Controlnet-Union-alpha.py) | [code](/examples/flux/model_training/lora/FLUX.1-dev-Controlnet-Union-alpha.sh) | [code](/examples/flux/model_training/validate_lora/FLUX.1-dev-Controlnet-Union-alpha.py) |
742
745
  | FLUX.1 | [jasperai/Flux.1-dev-Controlnet-Upscaler](https://www.modelscope.cn/models/jasperai/Flux.1-dev-Controlnet-Upscaler) | [code](/examples/flux/model_inference/FLUX.1-dev-Controlnet-Upscaler.py) | [code](/examples/flux/model_inference_low_vram/FLUX.1-dev-Controlnet-Upscaler.py) | [code](/examples/flux/model_training/full/FLUX.1-dev-Controlnet-Upscaler.sh) | [code](/examples/flux/model_training/validate_full/FLUX.1-dev-Controlnet-Upscaler.py) | [code](/examples/flux/model_training/lora/FLUX.1-dev-Controlnet-Upscaler.sh) | [code](/examples/flux/model_training/validate_lora/FLUX.1-dev-Controlnet-Upscaler.py) |
@@ -75,11 +75,11 @@ class ModelConfig:
75
75
  def parse_download_source(self):
76
76
  if self.download_source is None:
77
77
  if os.environ.get('DIFFSYNTH_DOWNLOAD_SOURCE') is not None:
78
- return os.environ.get('DIFFSYNTH_DOWNLOAD_SOURCE')
78
+ return os.environ.get('DIFFSYNTH_DOWNLOAD_SOURCE').lower()
79
79
  else:
80
80
  return "modelscope"
81
81
  else:
82
- return self.download_source
82
+ return self.download_source.lower()
83
83
 
84
84
  def parse_skip_download(self):
85
85
  if self.skip_download is None:
@@ -119,6 +119,9 @@ def load_model(model_class, path, config=None, torch_dtype=torch.bfloat16, devic
119
119
  # Because some models override the behavior of `to()`,
120
120
  # especially those from libraries like Transformers.
121
121
  model = model.to(dtype=torch_dtype, device=device)
122
+ if quantize is not None:
123
+ # Downstream steps (e.g. LoRA hot-loading) need the config to handle the quantized layers.
124
+ model.quantize_config = quantize
122
125
  if hasattr(model, "eval"):
123
126
  model = model.eval()
124
127
  return model
@@ -11,26 +11,27 @@ except ImportError:
11
11
  BITSANDBYTES_AVAILABLE = False
12
12
 
13
13
 
14
- def _assign_params_from_state_dict(self, state_dict, prefix, local_metadata, strict, missing_keys, unexpected_keys, error_msgs):
15
- """`_load_from_state_dict` replacement for shells: assigns tensors as-is, since packed weights do not pass the standard shape check."""
16
- local_names = set()
17
- for name, current in list(self._parameters.items()) + list(self._buffers.items()):
18
- if current is None:
19
- continue
20
- local_names.add(name)
21
- key = prefix + name
22
- if key in state_dict:
23
- value = state_dict[key]
24
- if name in self._parameters:
25
- self._parameters[name] = value if isinstance(value, torch.nn.Parameter) else torch.nn.Parameter(value, requires_grad=False)
26
- else:
27
- self._buffers[name] = value
28
- elif strict:
29
- missing_keys.append(key)
30
- if strict:
31
- for key in state_dict:
32
- if key.startswith(prefix) and key[len(prefix):].split(".", 1)[0] not in local_names:
33
- unexpected_keys.append(key)
14
+ if BITSANDBYTES_AVAILABLE:
15
+ class BitsAndBytesLinear4bit(bnb.nn.Linear4bit):
16
+ def _load_from_state_dict(self, state_dict, prefix, local_metadata, strict, missing_keys, unexpected_keys, error_msgs):
17
+ local_names = set()
18
+ for name, current in list(self._parameters.items()) + list(self._buffers.items()):
19
+ if current is None:
20
+ continue
21
+ local_names.add(name)
22
+ key = prefix + name
23
+ if key in state_dict:
24
+ value = state_dict[key]
25
+ if name in self._parameters:
26
+ self._parameters[name] = value if isinstance(value, torch.nn.Parameter) else torch.nn.Parameter(value, requires_grad=False)
27
+ else:
28
+ self._buffers[name] = value
29
+ elif strict:
30
+ missing_keys.append(key)
31
+ if strict:
32
+ for key in state_dict:
33
+ if key.startswith(prefix) and key[len(prefix):].split(".", 1)[0] not in local_names:
34
+ unexpected_keys.append(key)
34
35
 
35
36
 
36
37
  @register_quant_backend("bitsandbytes")
@@ -55,7 +56,7 @@ class BitsAndBytesQuantBackend(QuantBackend):
55
56
  }
56
57
 
57
58
  def quantized_linear_classes(self):
58
- return (bnb.nn.Linear4bit,)
59
+ return (BitsAndBytesLinear4bit,)
59
60
 
60
61
  def create_quantized_linear(self, linear, compute_device=None, model_device=None):
61
62
  """The `meta` shell avoids allocating an fp weight; bnb quantizes while `Params4bit` moves to `compute_device`."""
@@ -65,7 +66,7 @@ class BitsAndBytesQuantBackend(QuantBackend):
65
66
  compute_device = linear.weight.device
66
67
 
67
68
  with torch.device("meta"):
68
- quant_linear = bnb.nn.Linear4bit(
69
+ quant_linear = BitsAndBytesLinear4bit(
69
70
  linear.in_features,
70
71
  linear.out_features,
71
72
  bias=linear.bias is not None,
@@ -89,7 +90,7 @@ class BitsAndBytesQuantBackend(QuantBackend):
89
90
 
90
91
  def create_quantized_linear_shell(self, linear, compute_dtype):
91
92
  with torch.device("meta"):
92
- shell = bnb.nn.Linear4bit(
93
+ shell = BitsAndBytesLinear4bit(
93
94
  linear.in_features,
94
95
  linear.out_features,
95
96
  bias=linear.bias is not None,
@@ -98,7 +99,6 @@ class BitsAndBytesQuantBackend(QuantBackend):
98
99
  quant_type=self.config.quant_type,
99
100
  quant_storage=self.config.quant_storage,
100
101
  )
101
- shell._load_from_state_dict = _assign_params_from_state_dict.__get__(shell)
102
102
  return shell
103
103
 
104
104
  def unflatten_state_dict(self, state_dict, metadata):
@@ -442,7 +442,7 @@ class AutoWrappedLinear(torch.nn.Linear, AutoTorchModule, LoRAHotLoadMixin):
442
442
  return out
443
443
 
444
444
 
445
- class AutoWrappedQuantizedModule(AutoTorchModule, LoRAHotLoadMixin):
445
+ class AutoWrappedQuantizedModule(torch.nn.Linear, AutoTorchModule, LoRAHotLoadMixin):
446
446
  def __init__(
447
447
  self,
448
448
  module: torch.nn.Module,
@@ -467,7 +467,8 @@ class AutoWrappedQuantizedModule(AutoTorchModule, LoRAHotLoadMixin):
467
467
  "Disk offload for quantized layers requires both `disk_map` and `quantize`, "
468
468
  "so each layer can rebuild its packed weight and quant state lazily."
469
469
  )
470
- super().__init__(
470
+ AutoTorchModule.__init__(
471
+ self,
471
472
  offload_dtype,
472
473
  offload_device,
473
474
  onload_dtype,
@@ -478,6 +479,8 @@ class AutoWrappedQuantizedModule(AutoTorchModule, LoRAHotLoadMixin):
478
479
  computation_device,
479
480
  vram_limit,
480
481
  )
482
+ self.in_features = module.in_features
483
+ self.out_features = module.out_features
481
484
  self.module = module
482
485
  self.name = name
483
486
  self.disk_offload = disk_offload
@@ -240,6 +240,13 @@ class BasePipeline(torch.nn.Module):
240
240
  module.computation_device = device
241
241
 
242
242
 
243
+ def check_quant_hot_load(self, module: torch.nn.Module):
244
+ # A quantized weight cannot absorb a fused LoRA, so hot-loading is the only option for it.
245
+ if getattr(module, "quantize_config", None) is None:
246
+ return module
247
+ return self.enable_lora_hot_loading(module)
248
+
249
+
243
250
  def load_lora(
244
251
  self,
245
252
  module: torch.nn.Module,
@@ -249,6 +256,7 @@ class BasePipeline(torch.nn.Module):
249
256
  state_dict=None,
250
257
  verbose=1,
251
258
  ):
259
+ module = self.check_quant_hot_load(module)
252
260
  if state_dict is None:
253
261
  if isinstance(lora_config, str):
254
262
  lora = load_state_dict(lora_config, torch_dtype=self.torch_dtype, device=self.device)
@@ -370,7 +378,7 @@ class BasePipeline(torch.nn.Module):
370
378
  "computation_dtype": self.torch_dtype,
371
379
  "computation_device": self.device,
372
380
  }
373
- model = enable_vram_management(model, module_map, vram_config=vram_config)
381
+ model = enable_vram_management(model, module_map, vram_config=vram_config, quantize=getattr(model, "quantize_config", None))
374
382
  return model
375
383
 
376
384
  def compile_pipeline(self, mode: str = "default", dynamic: bool = True, fullgraph: bool = False, compile_models: list = None, **kwargs):
@@ -63,7 +63,7 @@ def FlowMatchSFTAudioVideoLoss(pipe: BasePipeline, **inputs):
63
63
  return loss
64
64
 
65
65
 
66
- def FlowMatchSFTMiniMaxH3AudioVideoLoss(pipe: BasePipeline, **inputs):
66
+ def FlowMatchSFTMiniMaxH3AudioVideoLoss(pipe: BasePipeline, training_cfg_scale: float = 1.0, inputs_nega: dict | None = None, **inputs):
67
67
  max_timestep_boundary = int(inputs.get("max_timestep_boundary", 1) * len(pipe.scheduler.timesteps))
68
68
  min_timestep_boundary = int(inputs.get("min_timestep_boundary", 0) * len(pipe.scheduler.timesteps))
69
69
 
@@ -81,11 +81,34 @@ def FlowMatchSFTMiniMaxH3AudioVideoLoss(pipe: BasePipeline, **inputs):
81
81
  training_target_audio = pipe.scheduler_audio.training_target(inputs["audio_input_latents"], audio_noise, timestep_audio)
82
82
 
83
83
  models = {name: getattr(pipe, name) for name in pipe.in_iteration_models}
84
+ if training_cfg_scale > 1.0:
85
+ if not inputs_nega:
86
+ raise ValueError(
87
+ "MiniMax-H3 CFG-aware training requires unconditional inputs. "
88
+ "When using split training, rebuild the data cache with the same "
89
+ "--training_cfg_scale value."
90
+ )
91
+ inputs_uncond = {**inputs, **inputs_nega}
92
+ inputs_uncond["use_gradient_checkpointing"] = False
93
+ inputs_uncond["use_gradient_checkpointing_offload"] = False
94
+ with torch.no_grad():
95
+ noise_pred_uncond, noise_pred_audio_uncond = pipe.model_fn(
96
+ **models, **inputs_uncond,
97
+ timestep_video=timestep_video, timestep_audio=timestep_audio,
98
+ )
99
+
84
100
  noise_pred, noise_pred_audio = pipe.model_fn(
85
101
  **models, **inputs,
86
102
  timestep_video=timestep_video, timestep_audio=timestep_audio,
87
103
  )
88
104
 
105
+ if training_cfg_scale > 1.0:
106
+ # The checkpoint's conditional prediction has CFG distilled into it.
107
+ # Rearrange the CFG equation to recover the raw velocity fitted to the
108
+ # standard flow-matching target, using the current model as the teacher.
109
+ noise_pred = (noise_pred + (training_cfg_scale - 1.0) * noise_pred_uncond) / training_cfg_scale
110
+ noise_pred_audio = (noise_pred_audio + (training_cfg_scale - 1.0) * noise_pred_audio_uncond) / training_cfg_scale
111
+
89
112
  loss = torch.nn.functional.mse_loss(noise_pred.float(), training_target.float())
90
113
  loss = loss * pipe.scheduler.training_weight(timestep_video)
91
114
  if "audio_input_latents" in inputs:
@@ -359,7 +359,7 @@ class DiffusionTrainingModule(torch.nn.Module):
359
359
  # TODO: set `remove_unnecessary_params` to `True` by default
360
360
  remove_unnecessary_params=False,
361
361
  # TODO: move `loss_required_params` to `loss.py`
362
- loss_required_params=("input_latents", "max_timestep_boundary", "min_timestep_boundary", "first_frame_latents", "video_latents", "audio_input_latents", "num_inference_steps"),
362
+ loss_required_params=("input_latents", "max_timestep_boundary", "min_timestep_boundary", "first_frame_latents", "video_latents", "audio_input_latents", "num_inference_steps", "cfg_scale"),
363
363
  force_remove_params_shared=tuple(),
364
364
  force_remove_params_posi=tuple(),
365
365
  force_remove_params_nega=tuple(),
@@ -70,7 +70,8 @@ class AceStepPipeline(BasePipeline):
70
70
  pipe.conditioner = model_pool.fetch_model("ace_step_conditioner")
71
71
  pipe.dit = model_pool.fetch_model("ace_step_dit")
72
72
  pipe.vae = model_pool.fetch_model("ace_step_vae")
73
- pipe.vae.remove_weight_norm()
73
+ if pipe.vae is not None:
74
+ pipe.vae.remove_weight_norm()
74
75
  pipe.tokenizer_model = model_pool.fetch_model("ace_step_tokenizer")
75
76
 
76
77
  if text_tokenizer_config is not None:
@@ -58,7 +58,21 @@ class MiniMaxH3Pipeline(BasePipeline):
58
58
  model_configs: list[ModelConfig] = [],
59
59
  processor_config: ModelConfig = ModelConfig(model_id="MiniMax/MiniMax-H3", origin_file_pattern="FL2VA/processor/"),
60
60
  vram_limit: float = None,
61
+ redirect_common_files: bool = True,
61
62
  ):
63
+ if redirect_common_files:
64
+ redirect_dict = {
65
+ "MiniMax/MiniMax-H3": "MiniMaxAI/MiniMax-H3",
66
+ }
67
+ for model_config in model_configs:
68
+ if model_config.require_downloading() and model_config.parse_download_source() == "huggingface":
69
+ if model_config.model_id is not None and model_config.model_id in redirect_dict:
70
+ print(f"The model is detected to be downloading from HuggingFace. {model_config.model_id} is redirected to {redirect_dict[model_config.model_id]}. You can use `redirect_common_files=False` to disable file redirection.")
71
+ model_config.model_id = redirect_dict[model_config.model_id]
72
+ if processor_config is not None and processor_config.require_downloading() and processor_config.parse_download_source() == "huggingface":
73
+ if processor_config.model_id is not None and processor_config.model_id in redirect_dict:
74
+ print(f"The model is detected to be downloading from HuggingFace. {processor_config.model_id} is redirected to {redirect_dict[processor_config.model_id]}. You can use `redirect_common_files=False` to disable file redirection.")
75
+ processor_config.model_id = redirect_dict[processor_config.model_id]
62
76
  pipe = MiniMaxH3Pipeline(device=device, torch_dtype=torch_dtype)
63
77
  model_pool = pipe.download_and_load_models(model_configs, vram_limit)
64
78
  pipe.text_encoder = model_pool.fetch_model("minimax_h3_text_encoder")
@@ -45,7 +45,21 @@ class MiniMaxMusic3Pipeline(BasePipeline):
45
45
  model_configs: list[ModelConfig] = [],
46
46
  tokenizer_config: ModelConfig = None,
47
47
  vram_limit: float = None,
48
+ redirect_common_files: bool = True,
48
49
  ):
50
+ if redirect_common_files:
51
+ redirect_dict = {
52
+ "MiniMax/MiniMax-Music3": "MiniMaxAI/MiniMax-Music3",
53
+ }
54
+ for model_config in model_configs:
55
+ if model_config.require_downloading() and model_config.parse_download_source() == "huggingface":
56
+ if model_config.model_id is not None and model_config.model_id in redirect_dict:
57
+ print(f"The model is detected to be downloading from HuggingFace. {model_config.model_id} is redirected to {redirect_dict[model_config.model_id]}. You can use `redirect_common_files=False` to disable file redirection.")
58
+ model_config.model_id = redirect_dict[model_config.model_id]
59
+ if tokenizer_config is not None and tokenizer_config.require_downloading() and tokenizer_config.parse_download_source() == "huggingface":
60
+ if tokenizer_config.model_id is not None and tokenizer_config.model_id in redirect_dict:
61
+ print(f"The model is detected to be downloading from HuggingFace. {tokenizer_config.model_id} is redirected to {redirect_dict[tokenizer_config.model_id]}. You can use `redirect_common_files=False` to disable file redirection.")
62
+ tokenizer_config.model_id = redirect_dict[tokenizer_config.model_id]
49
63
  pipe = MiniMaxMusic3Pipeline(device=device, torch_dtype=torch_dtype)
50
64
  model_pool = pipe.download_and_load_models(model_configs, vram_limit)
51
65
  pipe.text_encoder = model_pool.fetch_model("minimax_music3_text_encoder")
@@ -348,4 +362,4 @@ class MiniMaxMusic3Unit_Vocoder(PipelineUnit):
348
362
  waveform_chunks.append(waveform[...,
349
363
  left:waveform.shape[-1] - right])
350
364
  song = torch.cat(waveform_chunks, dim=-1)[0]
351
- return {"audio": song.float().clamp(-1.0, 1.0)}
365
+ return {"audio": song.float().clamp(-1.0, 1.0).cpu()}
@@ -1,5 +1,5 @@
1
1
  # Make sure to modify __release_datetime__ to release time when making official release.
2
- __version__ = '2.1.4'
2
+ __version__ = '2.1.5'
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.4
3
+ Version: 2.1.5
4
4
  Summary: Enjoy the magic of Diffusion models!
5
5
  Author: ModelScope Team
6
6
  License-Expression: Apache-2.0
@@ -804,6 +804,9 @@ https://github.com/Artiprocher/DiffSynth-Studio/assets/35051019/59fb2f7b-8de0-44
804
804
  | FLUX.1 | [black-forest-labs/FLUX.1-dev](https://www.modelscope.cn/models/black-forest-labs/FLUX.1-dev) | [code](/examples/flux/model_inference/FLUX.1-dev.py) | [code](/examples/flux/model_inference_low_vram/FLUX.1-dev.py) | [code](/examples/flux/model_training/full/FLUX.1-dev.sh) | [code](/examples/flux/model_training/validate_full/FLUX.1-dev.py) | [code](/examples/flux/model_training/lora/FLUX.1-dev.sh) | [code](/examples/flux/model_training/validate_lora/FLUX.1-dev.py) |
805
805
  | FLUX.1 | [black-forest-labs/FLUX.1-Krea-dev](https://www.modelscope.cn/models/black-forest-labs/FLUX.1-Krea-dev) | [code](/examples/flux/model_inference/FLUX.1-Krea-dev.py) | [code](/examples/flux/model_inference_low_vram/FLUX.1-Krea-dev.py) | [code](/examples/flux/model_training/full/FLUX.1-Krea-dev.sh) | [code](/examples/flux/model_training/validate_full/FLUX.1-Krea-dev.py) | [code](/examples/flux/model_training/lora/FLUX.1-Krea-dev.sh) | [code](/examples/flux/model_training/validate_lora/FLUX.1-Krea-dev.py) |
806
806
  | FLUX.1 | [black-forest-labs/FLUX.1-Kontext-dev](https://www.modelscope.cn/models/black-forest-labs/FLUX.1-Kontext-dev) | [code](/examples/flux/model_inference/FLUX.1-Kontext-dev.py) | [code](/examples/flux/model_inference_low_vram/FLUX.1-Kontext-dev.py) | [code](/examples/flux/model_training/full/FLUX.1-Kontext-dev.sh) | [code](/examples/flux/model_training/validate_full/FLUX.1-Kontext-dev.py) | [code](/examples/flux/model_training/lora/FLUX.1-Kontext-dev.sh) | [code](/examples/flux/model_training/validate_lora/FLUX.1-Kontext-dev.py) |
807
+ | FLUX.1 | [black-forest-labs/FLUX.1-Fill-dev](https://www.modelscope.cn/models/black-forest-labs/FLUX.1-Fill-dev) | [code](/examples/flux/model_inference/FLUX.1-Fill-dev.py) | [code](/examples/flux/model_inference_low_vram/FLUX.1-Fill-dev.py) | [code](/examples/flux/model_training/full/FLUX.1-Fill-dev.sh) | [code](/examples/flux/model_training/validate_full/FLUX.1-Fill-dev.py) | [code](/examples/flux/model_training/lora/FLUX.1-Fill-dev.sh) | [code](/examples/flux/model_training/validate_lora/FLUX.1-Fill-dev.py) |
808
+ | FLUX.1 | [black-forest-labs/FLUX.1-Redux-dev](https://www.modelscope.cn/models/black-forest-labs/FLUX.1-Redux-dev) | [code](/examples/flux/model_inference/FLUX.1-Redux-dev.py) | [code](/examples/flux/model_inference_low_vram/FLUX.1-Redux-dev.py) | [code](/examples/flux/model_training/full/FLUX.1-Redux-dev.sh) | [code](/examples/flux/model_training/validate_full/FLUX.1-Redux-dev.py) | [code](/examples/flux/model_training/lora/FLUX.1-Redux-dev.sh) | [code](/examples/flux/model_training/validate_lora/FLUX.1-Redux-dev.py) |
809
+ | FLUX.1 | [HuanJue/Insert-Anything](https://www.modelscope.cn/models/HuanJue/Insert-Anything) | [code](/examples/flux/model_inference/Insert-Anything.py) | [code](/examples/flux/model_inference_low_vram/Insert-Anything.py) | - | - | [code](/examples/flux/model_training/lora/Insert-Anything.sh) | [code](/examples/flux/model_training/validate_lora/Insert-Anything.py) |
807
810
  | FLUX.1 | [alimama-creative/FLUX.1-dev-Controlnet-Inpainting-Beta](https://www.modelscope.cn/models/alimama-creative/FLUX.1-dev-Controlnet-Inpainting-Beta) | [code](/examples/flux/model_inference/FLUX.1-dev-Controlnet-Inpainting-Beta.py) | [code](/examples/flux/model_inference_low_vram/FLUX.1-dev-Controlnet-Inpainting-Beta.py) | [code](/examples/flux/model_training/full/FLUX.1-dev-Controlnet-Inpainting-Beta.sh) | [code](/examples/flux/model_training/validate_full/FLUX.1-dev-Controlnet-Inpainting-Beta.py) | [code](/examples/flux/model_training/lora/FLUX.1-dev-Controlnet-Inpainting-Beta.sh) | [code](/examples/flux/model_training/validate_lora/FLUX.1-dev-Controlnet-Inpainting-Beta.py) |
808
811
  | FLUX.1 | [InstantX/FLUX.1-dev-Controlnet-Union-alpha](https://www.modelscope.cn/models/InstantX/FLUX.1-dev-Controlnet-Union-alpha) | [code](/examples/flux/model_inference/FLUX.1-dev-Controlnet-Union-alpha.py) | [code](/examples/flux/model_inference_low_vram/FLUX.1-dev-Controlnet-Union-alpha.py) | [code](/examples/flux/model_training/full/FLUX.1-dev-Controlnet-Union-alpha.sh) | [code](/examples/flux/model_training/validate_full/FLUX.1-dev-Controlnet-Union-alpha.py) | [code](/examples/flux/model_training/lora/FLUX.1-dev-Controlnet-Union-alpha.sh) | [code](/examples/flux/model_training/validate_lora/FLUX.1-dev-Controlnet-Union-alpha.py) |
809
812
  | FLUX.1 | [jasperai/Flux.1-dev-Controlnet-Upscaler](https://www.modelscope.cn/models/jasperai/Flux.1-dev-Controlnet-Upscaler) | [code](/examples/flux/model_inference/FLUX.1-dev-Controlnet-Upscaler.py) | [code](/examples/flux/model_inference_low_vram/FLUX.1-dev-Controlnet-Upscaler.py) | [code](/examples/flux/model_training/full/FLUX.1-dev-Controlnet-Upscaler.sh) | [code](/examples/flux/model_training/validate_full/FLUX.1-dev-Controlnet-Upscaler.py) | [code](/examples/flux/model_training/lora/FLUX.1-dev-Controlnet-Upscaler.sh) | [code](/examples/flux/model_training/validate_lora/FLUX.1-dev-Controlnet-Upscaler.py) |
File without changes