diffsynth-engine 0.2.6__tar.gz → 0.2.8__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 (157) hide show
  1. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/PKG-INFO +2 -2
  2. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/models/wan/wan_image_encoder.py +1 -25
  3. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/models/wan/wan_text_encoder.py +0 -2
  4. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/pipelines/base.py +8 -8
  5. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/pipelines/flux_image.py +4 -8
  6. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/pipelines/sd_image.py +2 -6
  7. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/pipelines/sdxl_image.py +2 -6
  8. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/pipelines/wan_video.py +3 -7
  9. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/utils/offload.py +13 -21
  10. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/utils/parallel.py +0 -1
  11. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine.egg-info/PKG-INFO +2 -2
  12. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine.egg-info/requires.txt +1 -1
  13. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/pyproject.toml +1 -1
  14. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/.gitignore +0 -0
  15. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/.pre-commit-config.yaml +0 -0
  16. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/LICENSE +0 -0
  17. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/MANIFEST.in +0 -0
  18. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/README.md +0 -0
  19. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/assets/dingtalk.png +0 -0
  20. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/assets/showcase.jpeg +0 -0
  21. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/__init__.py +0 -0
  22. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/algorithm/__init__.py +0 -0
  23. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/algorithm/noise_scheduler/__init__.py +0 -0
  24. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/algorithm/noise_scheduler/base_scheduler.py +0 -0
  25. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/algorithm/noise_scheduler/flow_match/__init__.py +0 -0
  26. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/algorithm/noise_scheduler/flow_match/flow_beta.py +0 -0
  27. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/algorithm/noise_scheduler/flow_match/flow_ddim.py +0 -0
  28. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/algorithm/noise_scheduler/flow_match/recifited_flow.py +0 -0
  29. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/algorithm/noise_scheduler/stable_diffusion/__init__.py +0 -0
  30. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/algorithm/noise_scheduler/stable_diffusion/beta.py +0 -0
  31. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/algorithm/noise_scheduler/stable_diffusion/ddim.py +0 -0
  32. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/algorithm/noise_scheduler/stable_diffusion/exponential.py +0 -0
  33. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/algorithm/noise_scheduler/stable_diffusion/karras.py +0 -0
  34. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/algorithm/noise_scheduler/stable_diffusion/linear.py +0 -0
  35. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/algorithm/noise_scheduler/stable_diffusion/sgm_uniform.py +0 -0
  36. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/algorithm/sampler/__init__.py +0 -0
  37. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/algorithm/sampler/flow_match/__init__.py +0 -0
  38. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/algorithm/sampler/flow_match/flow_match_euler.py +0 -0
  39. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/algorithm/sampler/stable_diffusion/__init__.py +0 -0
  40. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/algorithm/sampler/stable_diffusion/brownian_tree.py +0 -0
  41. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/algorithm/sampler/stable_diffusion/ddpm.py +0 -0
  42. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/algorithm/sampler/stable_diffusion/deis.py +0 -0
  43. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/algorithm/sampler/stable_diffusion/dpmpp_2m.py +0 -0
  44. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/algorithm/sampler/stable_diffusion/dpmpp_2m_sde.py +0 -0
  45. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/algorithm/sampler/stable_diffusion/dpmpp_3m_sde.py +0 -0
  46. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/algorithm/sampler/stable_diffusion/epsilon.py +0 -0
  47. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/algorithm/sampler/stable_diffusion/euler.py +0 -0
  48. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/algorithm/sampler/stable_diffusion/euler_ancestral.py +0 -0
  49. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/conf/models/components/vae.json +0 -0
  50. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/conf/models/flux/flux_dit.json +0 -0
  51. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/conf/models/flux/flux_text_encoder.json +0 -0
  52. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/conf/models/flux/flux_vae.json +0 -0
  53. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/conf/models/sd/sd_text_encoder.json +0 -0
  54. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/conf/models/sd/sd_unet.json +0 -0
  55. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/conf/models/sd3/sd3_dit.json +0 -0
  56. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/conf/models/sd3/sd3_text_encoder.json +0 -0
  57. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/conf/models/sdxl/sdxl_text_encoder.json +0 -0
  58. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/conf/models/sdxl/sdxl_unet.json +0 -0
  59. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/conf/models/wan/dit/1.3b-t2v.json +0 -0
  60. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/conf/models/wan/dit/14b-flf2v.json +0 -0
  61. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/conf/models/wan/dit/14b-i2v.json +0 -0
  62. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/conf/models/wan/dit/14b-t2v.json +0 -0
  63. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/conf/tokenizers/flux/tokenizer_1/merges.txt +0 -0
  64. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/conf/tokenizers/flux/tokenizer_1/special_tokens_map.json +0 -0
  65. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/conf/tokenizers/flux/tokenizer_1/tokenizer_config.json +0 -0
  66. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/conf/tokenizers/flux/tokenizer_1/vocab.json +0 -0
  67. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/conf/tokenizers/flux/tokenizer_2/special_tokens_map.json +0 -0
  68. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/conf/tokenizers/flux/tokenizer_2/spiece.model +0 -0
  69. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/conf/tokenizers/flux/tokenizer_2/tokenizer.json +0 -0
  70. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/conf/tokenizers/flux/tokenizer_2/tokenizer_config.json +0 -0
  71. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/conf/tokenizers/sdxl/tokenizer/merges.txt +0 -0
  72. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/conf/tokenizers/sdxl/tokenizer/special_tokens_map.json +0 -0
  73. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/conf/tokenizers/sdxl/tokenizer/tokenizer_config.json +0 -0
  74. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/conf/tokenizers/sdxl/tokenizer/vocab.json +0 -0
  75. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/conf/tokenizers/sdxl/tokenizer_2/merges.txt +0 -0
  76. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/conf/tokenizers/sdxl/tokenizer_2/special_tokens_map.json +0 -0
  77. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/conf/tokenizers/sdxl/tokenizer_2/tokenizer_config.json +0 -0
  78. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/conf/tokenizers/sdxl/tokenizer_2/vocab.json +0 -0
  79. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/conf/tokenizers/wan/umt5-xxl/special_tokens_map.json +0 -0
  80. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/conf/tokenizers/wan/umt5-xxl/spiece.model +0 -0
  81. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/conf/tokenizers/wan/umt5-xxl/tokenizer.json +0 -0
  82. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/conf/tokenizers/wan/umt5-xxl/tokenizer_config.json +0 -0
  83. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/kernels/__init__.py +0 -0
  84. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/models/__init__.py +0 -0
  85. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/models/base.py +0 -0
  86. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/models/basic/__init__.py +0 -0
  87. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/models/basic/attention.py +0 -0
  88. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/models/basic/lora.py +0 -0
  89. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/models/basic/relative_position_emb.py +0 -0
  90. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/models/basic/timestep.py +0 -0
  91. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/models/basic/transformer_helper.py +0 -0
  92. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/models/basic/unet_helper.py +0 -0
  93. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/models/flux/__init__.py +0 -0
  94. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/models/flux/flux_controlnet.py +0 -0
  95. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/models/flux/flux_dit.py +0 -0
  96. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/models/flux/flux_ipadapter.py +0 -0
  97. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/models/flux/flux_redux.py +0 -0
  98. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/models/flux/flux_text_encoder.py +0 -0
  99. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/models/flux/flux_vae.py +0 -0
  100. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/models/sd/__init__.py +0 -0
  101. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/models/sd/sd_text_encoder.py +0 -0
  102. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/models/sd/sd_unet.py +0 -0
  103. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/models/sd/sd_vae.py +0 -0
  104. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/models/sd3/__init__.py +0 -0
  105. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/models/sd3/sd3_dit.py +0 -0
  106. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/models/sd3/sd3_text_encoder.py +0 -0
  107. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/models/sd3/sd3_vae.py +0 -0
  108. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/models/sdxl/__init__.py +0 -0
  109. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/models/sdxl/sdxl_text_encoder.py +0 -0
  110. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/models/sdxl/sdxl_unet.py +0 -0
  111. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/models/sdxl/sdxl_vae.py +0 -0
  112. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/models/text_encoder/__init__.py +0 -0
  113. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/models/text_encoder/clip.py +0 -0
  114. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/models/text_encoder/siglip.py +0 -0
  115. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/models/text_encoder/t5.py +0 -0
  116. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/models/utils.py +0 -0
  117. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/models/vae/__init__.py +0 -0
  118. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/models/vae/vae.py +0 -0
  119. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/models/wan/__init__.py +0 -0
  120. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/models/wan/wan_dit.py +0 -0
  121. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/models/wan/wan_vae.py +0 -0
  122. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/pipelines/__init__.py +0 -0
  123. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/processor/__init__.py +0 -0
  124. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/processor/canny_processor.py +0 -0
  125. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/processor/depth_processor.py +0 -0
  126. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/tokenizers/__init__.py +0 -0
  127. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/tokenizers/base.py +0 -0
  128. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/tokenizers/clip.py +0 -0
  129. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/tokenizers/t5.py +0 -0
  130. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/tokenizers/wan.py +0 -0
  131. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/tools/__init__.py +0 -0
  132. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/tools/flux_inpainting_tool.py +0 -0
  133. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/tools/flux_outpainting_tool.py +0 -0
  134. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/tools/flux_reference_tool.py +0 -0
  135. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/tools/flux_replace_tool.py +0 -0
  136. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/utils/__init__.py +0 -0
  137. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/utils/constants.py +0 -0
  138. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/utils/download.py +0 -0
  139. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/utils/env.py +0 -0
  140. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/utils/flag.py +0 -0
  141. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/utils/fp8_linear.py +0 -0
  142. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/utils/gguf.py +0 -0
  143. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/utils/image.py +0 -0
  144. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/utils/loader.py +0 -0
  145. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/utils/lock.py +0 -0
  146. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/utils/logging.py +0 -0
  147. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/utils/onnx.py +0 -0
  148. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/utils/platform.py +0 -0
  149. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/utils/prompt.py +0 -0
  150. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine/utils/video.py +0 -0
  151. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine.egg-info/SOURCES.txt +0 -0
  152. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine.egg-info/dependency_links.txt +0 -0
  153. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/diffsynth_engine.egg-info/top_level.txt +0 -0
  154. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/docs/tutorial.md +0 -0
  155. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/docs/tutorial_zh.md +0 -0
  156. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/setup.cfg +0 -0
  157. {diffsynth_engine-0.2.6 → diffsynth_engine-0.2.8}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: diffsynth_engine
3
- Version: 0.2.6
3
+ Version: 0.2.8
4
4
  Author: MuseAI x ModelScope
5
5
  Classifier: Programming Language :: Python :: 3
6
6
  Classifier: Operating System :: OS Independent
@@ -8,7 +8,7 @@ Requires-Python: >=3.10
8
8
  License-File: LICENSE
9
9
  Requires-Dist: torch>=2.6
10
10
  Requires-Dist: torchvision
11
- Requires-Dist: xformers; sys_platform == "linux"
11
+ Requires-Dist: numpy
12
12
  Requires-Dist: safetensors
13
13
  Requires-Dist: gguf
14
14
  Requires-Dist: einops
@@ -349,30 +349,6 @@ class XLMRobertaCLIP(nn.Module):
349
349
  embedding_dropout=embedding_dropout,
350
350
  norm_eps=norm_eps,
351
351
  )
352
- self.textual = None
353
- self.log_scale = nn.Parameter(math.log(1 / 0.07) * torch.ones([]))
354
-
355
- def forward(self, imgs, txt_ids):
356
- """
357
- imgs: [B, 3, H, W] of torch.float32.
358
- - mean: [0.48145466, 0.4578275, 0.40821073]
359
- - std: [0.26862954, 0.26130258, 0.27577711]
360
- txt_ids: [B, L] of torch.long.
361
- Encoded by data.CLIPTokenizer.
362
- """
363
- xi = self.visual(imgs)
364
- xt = self.textual(txt_ids)
365
- return xi, xt
366
-
367
- def param_groups(self):
368
- groups = [
369
- {
370
- "params": [p for n, p in self.named_parameters() if "norm" in n or n.endswith("bias")],
371
- "weight_decay": 0.0,
372
- },
373
- {"params": [p for n, p in self.named_parameters() if not ("norm" in n or n.endswith("bias"))]},
374
- ]
375
- return groups
376
352
 
377
353
 
378
354
  def _clip(
@@ -444,7 +420,7 @@ class WanImageEncoderStateDictConverter(StateDictConverter):
444
420
  def _from_civitai(self, state_dict):
445
421
  state_dict_ = {}
446
422
  for name, param in state_dict.items():
447
- if name.startswith("textual."):
423
+ if name.startswith(("textual.", "log_scale")):
448
424
  continue
449
425
  name = "model." + name
450
426
  state_dict_[name] = param
@@ -147,8 +147,6 @@ class T5RelativeEmbedding(nn.Module):
147
147
 
148
148
  def forward(self, lq, lk):
149
149
  device = self.embedding.weight.device
150
- # rel_pos = torch.arange(lk).unsqueeze(0).to(device) - \
151
- # torch.arange(lq).unsqueeze(1).to(device)
152
150
  rel_pos = torch.arange(lk, device=device).unsqueeze(0) - torch.arange(lq, device=device).unsqueeze(1)
153
151
  rel_pos = self._relative_position_bucket(rel_pos)
154
152
  rel_pos_embeds = self.embedding(rel_pos)
@@ -254,16 +254,19 @@ class BasePipeline:
254
254
  "use_fsdp": use_fsdp,
255
255
  }
256
256
 
257
- @staticmethod
258
- def validate_offload_mode(offload_mode: str | None):
259
- valid_offload_mode = (None, "cpu_offload", "sequential_cpu_offload")
257
+ def enable_cpu_offload(self, offload_mode: str):
258
+ valid_offload_mode = ("cpu_offload", "sequential_cpu_offload")
260
259
  if offload_mode not in valid_offload_mode:
261
260
  raise ValueError(f"offload_mode must be one of {valid_offload_mode}, but got {offload_mode}")
262
-
263
- def enable_cpu_offload(self):
264
261
  if self.device == "cpu":
265
262
  logger.warning("must set an non cpu device for pipeline before calling enable_cpu_offload")
266
263
  return
264
+ if offload_mode == "cpu_offload":
265
+ self.enable_model_cpu_offload()
266
+ elif offload_mode == "sequential_cpu_offload":
267
+ self.enable_sequential_cpu_offload()
268
+
269
+ def enable_model_cpu_offload(self):
267
270
  for model_name in self.model_names:
268
271
  model = getattr(self, model_name)
269
272
  if model is not None:
@@ -271,9 +274,6 @@ class BasePipeline:
271
274
  self.offload_mode = "cpu_offload"
272
275
 
273
276
  def enable_sequential_cpu_offload(self):
274
- if self.device == "cpu":
275
- logger.warning("must set an non cpu device for pipeline before calling enable_sequential_cpu_offload")
276
- return
277
277
  for model_name in self.model_names:
278
278
  model = getattr(self, model_name)
279
279
  if model is not None:
@@ -361,8 +361,6 @@ class FluxImagePipeline(BasePipeline):
361
361
  parallelism: int = 1,
362
362
  use_cfg_parallel: bool = False,
363
363
  ) -> "FluxImagePipeline":
364
- cls.validate_offload_mode(offload_mode)
365
-
366
364
  model_config = (
367
365
  model_path_or_config
368
366
  if isinstance(model_path_or_config, FluxModelConfig)
@@ -460,10 +458,8 @@ class FluxImagePipeline(BasePipeline):
460
458
  device=device,
461
459
  dtype=dtype,
462
460
  )
463
- if offload_mode == "cpu_offload":
464
- pipe.enable_cpu_offload()
465
- elif offload_mode == "sequential_cpu_offload":
466
- pipe.enable_sequential_cpu_offload()
461
+ if offload_mode is not None:
462
+ pipe.enable_cpu_offload(offload_mode)
467
463
  return pipe
468
464
 
469
465
  def load_loras(self, lora_list: List[Tuple[str, float]], fused: bool = True, save_original_weight: bool = False):
@@ -751,7 +747,7 @@ class FluxImagePipeline(BasePipeline):
751
747
  # if current_step is not in the control range
752
748
  # skip thie controlnet
753
749
  continue
754
- if self.offload_mode == "sequential_cpu_offload" or self.offload_mode == "cpu_offload":
750
+ if self.offload_mode is not None:
755
751
  empty_cache()
756
752
  param.model.to(self.device)
757
753
  double_block_output, single_block_output = param.model(
@@ -765,7 +761,7 @@ class FluxImagePipeline(BasePipeline):
765
761
  image_ids,
766
762
  text_ids,
767
763
  )
768
- if self.offload_mode == "sequential_cpu_offload" or self.offload_mode == "cpu_offload":
764
+ if self.offload_mode is not None:
769
765
  empty_cache()
770
766
  param.model.to("cpu")
771
767
  double_block_output_results = accumulate(double_block_output_results, double_block_output)
@@ -190,8 +190,6 @@ class SDImagePipeline(BasePipeline):
190
190
  offload_mode: str | None = None,
191
191
  batch_cfg: bool = True,
192
192
  ) -> "SDImagePipeline":
193
- cls.validate_offload_mode(offload_mode)
194
-
195
193
  if isinstance(model_path_or_config, str):
196
194
  model_config = SDModelConfig(unet_path=model_path_or_config)
197
195
  else:
@@ -237,10 +235,8 @@ class SDImagePipeline(BasePipeline):
237
235
  device=device,
238
236
  dtype=dtype,
239
237
  )
240
- if offload_mode == "cpu_offload":
241
- pipe.enable_cpu_offload()
242
- elif offload_mode == "sequential_cpu_offload":
243
- pipe.enable_sequential_cpu_offload()
238
+ if offload_mode is not None:
239
+ pipe.enable_cpu_offload(offload_mode)
244
240
  return pipe
245
241
 
246
242
  @classmethod
@@ -164,8 +164,6 @@ class SDXLImagePipeline(BasePipeline):
164
164
  offload_mode: str | None = None,
165
165
  batch_cfg: bool = True,
166
166
  ) -> "SDXLImagePipeline":
167
- cls.validate_offload_mode(offload_mode)
168
-
169
167
  if isinstance(model_path_or_config, str):
170
168
  model_config = SDXLModelConfig(
171
169
  unet_path=model_path_or_config, unet_dtype=dtype, clip_l_dtype=dtype, clip_g_dtype=dtype
@@ -225,10 +223,8 @@ class SDXLImagePipeline(BasePipeline):
225
223
  device=device,
226
224
  dtype=dtype,
227
225
  )
228
- if offload_mode == "cpu_offload":
229
- pipe.enable_cpu_offload()
230
- elif offload_mode == "sequential_cpu_offload":
231
- pipe.enable_sequential_cpu_offload()
226
+ if offload_mode is not None:
227
+ pipe.enable_cpu_offload(offload_mode)
232
228
  return pipe
233
229
 
234
230
  @classmethod
@@ -159,7 +159,7 @@ class WanVideoPipeline(BasePipeline):
159
159
  self.vae = vae
160
160
  self.image_encoder = image_encoder
161
161
  self.batch_cfg = batch_cfg
162
- self.model_names = ["text_encoder", "dit", "vae"]
162
+ self.model_names = ["text_encoder", "dit", "vae", "image_encoder"]
163
163
 
164
164
  def load_loras(self, lora_list: List[Tuple[str, float]], fused: bool = True, save_original_weight: bool = False):
165
165
  assert self.config.tp_degree is None, (
@@ -417,8 +417,6 @@ class WanVideoPipeline(BasePipeline):
417
417
  parallelism: int = 1,
418
418
  use_cfg_parallel: bool = False,
419
419
  ) -> "WanVideoPipeline":
420
- cls.validate_offload_mode(offload_mode)
421
-
422
420
  if isinstance(model_path_or_config, str):
423
421
  model_config = WanModelConfig(model_path=model_path_or_config)
424
422
  else:
@@ -523,10 +521,8 @@ class WanVideoPipeline(BasePipeline):
523
521
  dtype=dtype,
524
522
  )
525
523
  pipe.eval()
526
- if offload_mode == "cpu_offload":
527
- pipe.enable_cpu_offload()
528
- elif offload_mode == "sequential_cpu_offload":
529
- pipe.enable_sequential_cpu_offload()
524
+ if offload_mode is not None:
525
+ pipe.enable_cpu_offload(offload_mode)
530
526
  return pipe
531
527
 
532
528
  def __del__(self):
@@ -1,44 +1,36 @@
1
+ import torch
1
2
  import torch.nn as nn
2
3
 
3
- from diffsynth_engine.models.basic.transformer_helper import RMSNorm
4
- from diffsynth_engine.models.basic.relative_position_emb import RelativePositionEmbedding
5
-
6
-
7
- SUPPORTED_OFFLOAD_MODULES = (
8
- nn.Embedding,
9
- nn.Linear,
10
- nn.LayerNorm,
11
- nn.Conv2d,
12
- nn.GroupNorm,
13
- RMSNorm,
14
- RelativePositionEmbedding,
15
- )
16
-
17
4
 
18
5
  def enable_sequential_cpu_offload(module: nn.Module, device: str = "cuda:0"):
19
- if isinstance(module, SUPPORTED_OFFLOAD_MODULES):
20
- add_cpu_offload_hook(module, device)
6
+ if len(list(module.children())) == 0:
7
+ if len(list(module.parameters())) > 0: # leaf module with parameters
8
+ add_cpu_offload_hook(module, device)
21
9
  return
10
+ if len(list(module.parameters(recurse=False))) > 0: # module with direct parameters
11
+ add_cpu_offload_hook(module, device, recurse=False)
22
12
  for submodule in module.children():
23
13
  enable_sequential_cpu_offload(submodule, device)
24
14
 
25
15
 
26
- def add_cpu_offload_hook(module: nn.Module, device: str = "cuda:0"):
16
+ # TODO: supports module buffer
17
+ def add_cpu_offload_hook(module: nn.Module, device: str = "cuda:0", recurse: bool = True):
27
18
  def _forward_pre_hook(module: nn.Module, input):
28
19
  offload_params = {}
29
- for name, param in module.named_parameters():
20
+ for name, param in module.named_parameters(recurse=recurse):
30
21
  offload_params[name] = param.data
31
22
  param.data = param.data.to(device=device)
32
23
  setattr(module, "_offload_params", offload_params)
24
+ return tuple(x.to(device=device) if isinstance(x, torch.Tensor) else x for x in input)
33
25
 
34
26
  def _forward_hook(module: nn.Module, input, output):
35
27
  offload_params = getattr(module, "_offload_params", {})
36
- for name, param in module.named_parameters():
28
+ for name, param in module.named_parameters(recurse=recurse):
37
29
  if name in offload_params:
38
30
  param.data = offload_params[name]
39
31
 
40
- if getattr(module, "_sequential_cpu_offload_enabled", False):
32
+ if getattr(module, "_cpu_offload_enabled", False):
41
33
  return
42
34
  module.register_forward_pre_hook(_forward_pre_hook)
43
35
  module.register_forward_hook(_forward_hook)
44
- setattr(module, "_sequential_cpu_offload_enabled", True)
36
+ setattr(module, "_cpu_offload_enabled", True)
@@ -338,7 +338,6 @@ class ParallelModel(nn.Module):
338
338
  ):
339
339
  super().__init__()
340
340
  self.world_size = cfg_degree * sp_ulysses_degree * sp_ring_degree * tp_degree
341
- self.device = device
342
341
  self.queue_in = mp.Queue()
343
342
  self.queue_out = mp.Queue()
344
343
  self.ctx = mp.spawn(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: diffsynth_engine
3
- Version: 0.2.6
3
+ Version: 0.2.8
4
4
  Author: MuseAI x ModelScope
5
5
  Classifier: Programming Language :: Python :: 3
6
6
  Classifier: Operating System :: OS Independent
@@ -8,7 +8,7 @@ Requires-Python: >=3.10
8
8
  License-File: LICENSE
9
9
  Requires-Dist: torch>=2.6
10
10
  Requires-Dist: torchvision
11
- Requires-Dist: xformers; sys_platform == "linux"
11
+ Requires-Dist: numpy
12
12
  Requires-Dist: safetensors
13
13
  Requires-Dist: gguf
14
14
  Requires-Dist: einops
@@ -1,5 +1,6 @@
1
1
  torch>=2.6
2
2
  torchvision
3
+ numpy
3
4
  safetensors
4
5
  gguf
5
6
  einops
@@ -16,7 +17,6 @@ imageio[ffmpeg]
16
17
  onnxruntime
17
18
 
18
19
  [:sys_platform == "linux"]
19
- xformers
20
20
  yunchang
21
21
 
22
22
  [dev]
@@ -15,7 +15,7 @@ requires-python = ">=3.10"
15
15
  dependencies = [
16
16
  "torch >= 2.6",
17
17
  "torchvision",
18
- "xformers ; sys_platform == 'linux'",
18
+ "numpy",
19
19
  "safetensors",
20
20
  "gguf",
21
21
  "einops",