diffsynth-engine 0.6.1.dev28__tar.gz → 0.6.1.dev29__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 (212) hide show
  1. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/PKG-INFO +1 -1
  2. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/models/basic/video_sparse_attention.py +15 -3
  3. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/pipelines/wan_video.py +25 -1
  4. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/utils/parallel.py +23 -107
  5. diffsynth_engine-0.6.1.dev29/diffsynth_engine/utils/process_group.py +149 -0
  6. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine.egg-info/PKG-INFO +1 -1
  7. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine.egg-info/SOURCES.txt +1 -0
  8. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/.gitattributes +0 -0
  9. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/.gitignore +0 -0
  10. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/.pre-commit-config.yaml +0 -0
  11. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/LICENSE +0 -0
  12. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/MANIFEST.in +0 -0
  13. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/README.md +0 -0
  14. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/assets/dingtalk.png +0 -0
  15. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/assets/showcase.jpeg +0 -0
  16. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/assets/tongyi.svg +0 -0
  17. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/__init__.py +0 -0
  18. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/algorithm/__init__.py +0 -0
  19. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/algorithm/noise_scheduler/__init__.py +0 -0
  20. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/algorithm/noise_scheduler/base_scheduler.py +0 -0
  21. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/algorithm/noise_scheduler/flow_match/__init__.py +0 -0
  22. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/algorithm/noise_scheduler/flow_match/flow_beta.py +0 -0
  23. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/algorithm/noise_scheduler/flow_match/flow_ddim.py +0 -0
  24. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/algorithm/noise_scheduler/flow_match/recifited_flow.py +0 -0
  25. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/algorithm/noise_scheduler/stable_diffusion/__init__.py +0 -0
  26. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/algorithm/noise_scheduler/stable_diffusion/beta.py +0 -0
  27. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/algorithm/noise_scheduler/stable_diffusion/ddim.py +0 -0
  28. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/algorithm/noise_scheduler/stable_diffusion/exponential.py +0 -0
  29. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/algorithm/noise_scheduler/stable_diffusion/karras.py +0 -0
  30. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/algorithm/noise_scheduler/stable_diffusion/linear.py +0 -0
  31. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/algorithm/noise_scheduler/stable_diffusion/sgm_uniform.py +0 -0
  32. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/algorithm/sampler/__init__.py +0 -0
  33. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/algorithm/sampler/flow_match/__init__.py +0 -0
  34. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/algorithm/sampler/flow_match/flow_match_euler.py +0 -0
  35. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/algorithm/sampler/stable_diffusion/__init__.py +0 -0
  36. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/algorithm/sampler/stable_diffusion/brownian_tree.py +0 -0
  37. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/algorithm/sampler/stable_diffusion/ddpm.py +0 -0
  38. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/algorithm/sampler/stable_diffusion/deis.py +0 -0
  39. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/algorithm/sampler/stable_diffusion/dpmpp_2m.py +0 -0
  40. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/algorithm/sampler/stable_diffusion/dpmpp_2m_sde.py +0 -0
  41. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/algorithm/sampler/stable_diffusion/dpmpp_3m_sde.py +0 -0
  42. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/algorithm/sampler/stable_diffusion/epsilon.py +0 -0
  43. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/algorithm/sampler/stable_diffusion/euler.py +0 -0
  44. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/algorithm/sampler/stable_diffusion/euler_ancestral.py +0 -0
  45. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/conf/models/components/vae.json +0 -0
  46. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/conf/models/flux/flux_dit.json +0 -0
  47. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/conf/models/flux/flux_text_encoder.json +0 -0
  48. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/conf/models/flux/flux_vae.json +0 -0
  49. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/conf/models/qwen_image/qwen2_5_vl_config.json +0 -0
  50. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/conf/models/qwen_image/qwen2_5_vl_vision_config.json +0 -0
  51. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/conf/models/qwen_image/qwen_image_vae.json +0 -0
  52. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/conf/models/qwen_image/qwen_image_vae_keymap.json +0 -0
  53. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/conf/models/sd/sd_text_encoder.json +0 -0
  54. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/conf/models/sd/sd_unet.json +0 -0
  55. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/conf/models/sd3/sd3_dit.json +0 -0
  56. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/conf/models/sd3/sd3_text_encoder.json +0 -0
  57. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/conf/models/sdxl/sdxl_text_encoder.json +0 -0
  58. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/conf/models/sdxl/sdxl_unet.json +0 -0
  59. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/conf/models/wan/dit/wan2.1_flf2v_14b.json +0 -0
  60. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/conf/models/wan/dit/wan2.1_i2v_14b.json +0 -0
  61. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/conf/models/wan/dit/wan2.1_t2v_1.3b.json +0 -0
  62. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/conf/models/wan/dit/wan2.1_t2v_14b.json +0 -0
  63. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/conf/models/wan/dit/wan2.2_i2v_a14b.json +0 -0
  64. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/conf/models/wan/dit/wan2.2_s2v_14b.json +0 -0
  65. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/conf/models/wan/dit/wan2.2_t2v_a14b.json +0 -0
  66. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/conf/models/wan/dit/wan2.2_ti2v_5b.json +0 -0
  67. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/conf/models/wan/dit/wan_dit_keymap.json +0 -0
  68. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/conf/models/wan/vae/wan2.1_vae.json +0 -0
  69. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/conf/models/wan/vae/wan2.2_vae.json +0 -0
  70. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/conf/models/wan/vae/wan_vae_keymap.json +0 -0
  71. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/conf/tokenizers/flux/tokenizer_1/merges.txt +0 -0
  72. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/conf/tokenizers/flux/tokenizer_1/special_tokens_map.json +0 -0
  73. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/conf/tokenizers/flux/tokenizer_1/tokenizer_config.json +0 -0
  74. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/conf/tokenizers/flux/tokenizer_1/vocab.json +0 -0
  75. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/conf/tokenizers/flux/tokenizer_2/special_tokens_map.json +0 -0
  76. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/conf/tokenizers/flux/tokenizer_2/spiece.model +0 -0
  77. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/conf/tokenizers/flux/tokenizer_2/tokenizer.json +0 -0
  78. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/conf/tokenizers/flux/tokenizer_2/tokenizer_config.json +0 -0
  79. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/conf/tokenizers/qwen_image/qwen2_vl_image_processor.json +0 -0
  80. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/conf/tokenizers/qwen_image/tokenizer/added_tokens.json +0 -0
  81. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/conf/tokenizers/qwen_image/tokenizer/merges.txt +0 -0
  82. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/conf/tokenizers/qwen_image/tokenizer/special_tokens_map.json +0 -0
  83. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/conf/tokenizers/qwen_image/tokenizer/tokenizer.json +0 -0
  84. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/conf/tokenizers/qwen_image/tokenizer/tokenizer_config.json +0 -0
  85. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/conf/tokenizers/qwen_image/tokenizer/vocab.json +0 -0
  86. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/conf/tokenizers/sdxl/tokenizer/merges.txt +0 -0
  87. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/conf/tokenizers/sdxl/tokenizer/special_tokens_map.json +0 -0
  88. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/conf/tokenizers/sdxl/tokenizer/tokenizer_config.json +0 -0
  89. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/conf/tokenizers/sdxl/tokenizer/vocab.json +0 -0
  90. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/conf/tokenizers/sdxl/tokenizer_2/merges.txt +0 -0
  91. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/conf/tokenizers/sdxl/tokenizer_2/special_tokens_map.json +0 -0
  92. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/conf/tokenizers/sdxl/tokenizer_2/tokenizer_config.json +0 -0
  93. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/conf/tokenizers/sdxl/tokenizer_2/vocab.json +0 -0
  94. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/conf/tokenizers/wan/umt5-xxl/special_tokens_map.json +0 -0
  95. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/conf/tokenizers/wan/umt5-xxl/spiece.model +0 -0
  96. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/conf/tokenizers/wan/umt5-xxl/tokenizer.json +0 -0
  97. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/conf/tokenizers/wan/umt5-xxl/tokenizer_config.json +0 -0
  98. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/configs/__init__.py +0 -0
  99. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/configs/controlnet.py +0 -0
  100. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/configs/pipeline.py +0 -0
  101. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/kernels/__init__.py +0 -0
  102. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/models/__init__.py +0 -0
  103. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/models/base.py +0 -0
  104. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/models/basic/__init__.py +0 -0
  105. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/models/basic/attention.py +0 -0
  106. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/models/basic/lora.py +0 -0
  107. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/models/basic/lora_nunchaku.py +0 -0
  108. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/models/basic/relative_position_emb.py +0 -0
  109. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/models/basic/timestep.py +0 -0
  110. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/models/basic/transformer_helper.py +0 -0
  111. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/models/basic/unet_helper.py +0 -0
  112. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/models/flux/__init__.py +0 -0
  113. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/models/flux/flux_controlnet.py +0 -0
  114. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/models/flux/flux_dit.py +0 -0
  115. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/models/flux/flux_dit_fbcache.py +0 -0
  116. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/models/flux/flux_ipadapter.py +0 -0
  117. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/models/flux/flux_redux.py +0 -0
  118. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/models/flux/flux_text_encoder.py +0 -0
  119. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/models/flux/flux_vae.py +0 -0
  120. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/models/hunyuan3d/__init__.py +0 -0
  121. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/models/hunyuan3d/dino_image_encoder.py +0 -0
  122. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/models/hunyuan3d/hunyuan3d_dit.py +0 -0
  123. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/models/hunyuan3d/hunyuan3d_vae.py +0 -0
  124. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/models/hunyuan3d/moe.py +0 -0
  125. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/models/hunyuan3d/surface_extractor.py +0 -0
  126. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/models/hunyuan3d/volume_decoder.py +0 -0
  127. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/models/qwen_image/__init__.py +0 -0
  128. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/models/qwen_image/qwen2_5_vl.py +0 -0
  129. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/models/qwen_image/qwen_image_dit.py +0 -0
  130. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/models/qwen_image/qwen_image_dit_fbcache.py +0 -0
  131. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/models/qwen_image/qwen_image_dit_nunchaku.py +0 -0
  132. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/models/qwen_image/qwen_image_vae.py +0 -0
  133. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/models/sd/__init__.py +0 -0
  134. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/models/sd/sd_controlnet.py +0 -0
  135. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/models/sd/sd_text_encoder.py +0 -0
  136. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/models/sd/sd_unet.py +0 -0
  137. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/models/sd/sd_vae.py +0 -0
  138. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/models/sd3/__init__.py +0 -0
  139. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/models/sd3/sd3_dit.py +0 -0
  140. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/models/sd3/sd3_text_encoder.py +0 -0
  141. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/models/sd3/sd3_vae.py +0 -0
  142. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/models/sdxl/__init__.py +0 -0
  143. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/models/sdxl/sdxl_controlnet.py +0 -0
  144. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/models/sdxl/sdxl_text_encoder.py +0 -0
  145. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/models/sdxl/sdxl_unet.py +0 -0
  146. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/models/sdxl/sdxl_vae.py +0 -0
  147. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/models/text_encoder/__init__.py +0 -0
  148. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/models/text_encoder/clip.py +0 -0
  149. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/models/text_encoder/siglip.py +0 -0
  150. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/models/text_encoder/t5.py +0 -0
  151. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/models/vae/__init__.py +0 -0
  152. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/models/vae/vae.py +0 -0
  153. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/models/wan/__init__.py +0 -0
  154. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/models/wan/wan_audio_encoder.py +0 -0
  155. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/models/wan/wan_dit.py +0 -0
  156. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/models/wan/wan_image_encoder.py +0 -0
  157. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/models/wan/wan_s2v_dit.py +0 -0
  158. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/models/wan/wan_text_encoder.py +0 -0
  159. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/models/wan/wan_vae.py +0 -0
  160. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/pipelines/__init__.py +0 -0
  161. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/pipelines/base.py +0 -0
  162. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/pipelines/flux_image.py +0 -0
  163. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/pipelines/hunyuan3d_shape.py +0 -0
  164. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/pipelines/qwen_image.py +0 -0
  165. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/pipelines/sd_image.py +0 -0
  166. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/pipelines/sdxl_image.py +0 -0
  167. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/pipelines/utils.py +0 -0
  168. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/pipelines/wan_s2v.py +0 -0
  169. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/processor/__init__.py +0 -0
  170. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/processor/canny_processor.py +0 -0
  171. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/processor/depth_processor.py +0 -0
  172. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/tokenizers/__init__.py +0 -0
  173. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/tokenizers/base.py +0 -0
  174. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/tokenizers/clip.py +0 -0
  175. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/tokenizers/qwen2.py +0 -0
  176. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/tokenizers/qwen2_vl_image_processor.py +0 -0
  177. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/tokenizers/qwen2_vl_processor.py +0 -0
  178. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/tokenizers/t5.py +0 -0
  179. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/tokenizers/wan.py +0 -0
  180. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/tools/__init__.py +0 -0
  181. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/tools/flux_inpainting_tool.py +0 -0
  182. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/tools/flux_outpainting_tool.py +0 -0
  183. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/tools/flux_reference_tool.py +0 -0
  184. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/tools/flux_replace_tool.py +0 -0
  185. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/utils/__init__.py +0 -0
  186. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/utils/cache.py +0 -0
  187. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/utils/constants.py +0 -0
  188. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/utils/download.py +0 -0
  189. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/utils/env.py +0 -0
  190. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/utils/flag.py +0 -0
  191. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/utils/fp8_linear.py +0 -0
  192. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/utils/gguf.py +0 -0
  193. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/utils/image.py +0 -0
  194. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/utils/loader.py +0 -0
  195. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/utils/lock.py +0 -0
  196. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/utils/logging.py +0 -0
  197. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/utils/memory/__init__.py +0 -0
  198. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/utils/memory/linear_regression.py +0 -0
  199. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/utils/memory/memory_predcit_model.py +0 -0
  200. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/utils/offload.py +0 -0
  201. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/utils/onnx.py +0 -0
  202. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/utils/platform.py +0 -0
  203. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/utils/prompt.py +0 -0
  204. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine/utils/video.py +0 -0
  205. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine.egg-info/dependency_links.txt +0 -0
  206. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine.egg-info/requires.txt +0 -0
  207. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/diffsynth_engine.egg-info/top_level.txt +0 -0
  208. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/docs/tutorial.md +0 -0
  209. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/docs/tutorial_zh.md +0 -0
  210. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/pyproject.toml +0 -0
  211. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/setup.cfg +0 -0
  212. {diffsynth_engine-0.6.1.dev28 → diffsynth_engine-0.6.1.dev29}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: diffsynth_engine
3
- Version: 0.6.1.dev28
3
+ Version: 0.6.1.dev29
4
4
  Author: MuseAI x ModelScope
5
5
  Classifier: Programming Language :: Python :: 3
6
6
  Classifier: Operating System :: OS Independent
@@ -3,10 +3,15 @@ import math
3
3
  import functools
4
4
 
5
5
  from diffsynth_engine.utils.flag import VIDEO_SPARSE_ATTN_AVAILABLE
6
- from diffsynth_engine.utils.parallel import get_sp_ulysses_group, get_sp_ring_world_size
6
+ from diffsynth_engine.utils.process_group import get_sp_ulysses_group, get_sp_ring_world_size
7
7
 
8
+
9
+ vsa_core = None
8
10
  if VIDEO_SPARSE_ATTN_AVAILABLE:
9
- from vsa import video_sparse_attn as vsa_core
11
+ try:
12
+ from vsa import video_sparse_attn as vsa_core
13
+ except Exception:
14
+ vsa_core = None
10
15
 
11
16
  VSA_TILE_SIZE = (4, 4, 4)
12
17
 
@@ -171,6 +176,12 @@ def video_sparse_attn(
171
176
  variable_block_sizes: torch.LongTensor,
172
177
  non_pad_index: torch.LongTensor,
173
178
  ):
179
+ if vsa_core is None:
180
+ raise RuntimeError(
181
+ "Video sparse attention (VSA) is not available. "
182
+ "Please install the 'vsa' package and ensure all its dependencies (including pytest) are installed."
183
+ )
184
+
174
185
  q = tile(q, num_tiles, tile_partition_indices, non_pad_index)
175
186
  k = tile(k, num_tiles, tile_partition_indices, non_pad_index)
176
187
  v = tile(v, num_tiles, tile_partition_indices, non_pad_index)
@@ -212,7 +223,8 @@ def distributed_video_sparse_attn(
212
223
  ):
213
224
  from yunchang.comm.all_to_all import SeqAllToAll4D
214
225
 
215
- assert get_sp_ring_world_size() == 1, "distributed video sparse attention requires ring degree to be 1"
226
+ ring_world_size = get_sp_ring_world_size()
227
+ assert ring_world_size == 1, "distributed video sparse attention requires ring degree to be 1"
216
228
  sp_ulysses_group = get_sp_ulysses_group()
217
229
 
218
230
  q = SeqAllToAll4D.apply(sp_ulysses_group, q, scatter_idx, gather_idx)
@@ -650,7 +650,7 @@ class WanVideoPipeline(BasePipeline):
650
650
  dit_type = "wan2.2-i2v-a14b"
651
651
  elif model_state_dict["high_noise_model"]["patch_embedding.weight"].shape[1] == 16:
652
652
  dit_type = "wan2.2-t2v-a14b"
653
- elif model_state_dict["patch_embedding.weight"].shape[1] == 48:
653
+ elif has_any_key("patch_embedding.weight") and model_state_dict["patch_embedding.weight"].shape[1] == 48:
654
654
  dit_type = "wan2.2-ti2v-5b"
655
655
  elif has_any_key("img_emb.emb_pos", "condition_embedder.image_embedder.pos_embed"):
656
656
  dit_type = "wan2.1-flf2v-14b"
@@ -680,6 +680,30 @@ class WanVideoPipeline(BasePipeline):
680
680
  if config.attn_params is None:
681
681
  config.attn_params = VideoSparseAttentionParams(sparsity=0.9)
682
682
 
683
+ def update_weights(self, state_dicts: WanStateDicts) -> None:
684
+ is_dual_model_state_dict = (isinstance(state_dicts.model, dict) and
685
+ ("high_noise_model" in state_dicts.model or "low_noise_model" in state_dicts.model))
686
+ is_dual_model_pipeline = self.dit2 is not None
687
+
688
+ if is_dual_model_state_dict != is_dual_model_pipeline:
689
+ raise ValueError(
690
+ f"Model structure mismatch: pipeline has {'dual' if is_dual_model_pipeline else 'single'} model "
691
+ f"but state_dict is for {'dual' if is_dual_model_state_dict else 'single'} model. "
692
+ f"Cannot update weights between WAN 2.1 (single model) and WAN 2.2 (dual model)."
693
+ )
694
+
695
+ if is_dual_model_state_dict:
696
+ if "high_noise_model" in state_dicts.model:
697
+ self.update_component(self.dit, state_dicts.model["high_noise_model"], self.config.device, self.config.model_dtype)
698
+ if "low_noise_model" in state_dicts.model:
699
+ self.update_component(self.dit2, state_dicts.model["low_noise_model"], self.config.device, self.config.model_dtype)
700
+ else:
701
+ self.update_component(self.dit, state_dicts.model, self.config.device, self.config.model_dtype)
702
+
703
+ self.update_component(self.text_encoder, state_dicts.t5, self.config.device, self.config.t5_dtype)
704
+ self.update_component(self.vae, state_dicts.vae, self.config.device, self.config.vae_dtype)
705
+ self.update_component(self.image_encoder, state_dicts.image_encoder, self.config.device, self.config.image_encoder_dtype)
706
+
683
707
  def compile(self):
684
708
  self.dit.compile_repeated_blocks()
685
709
  if self.dit2 is not None:
@@ -21,117 +21,33 @@ from queue import Empty
21
21
  import diffsynth_engine.models.basic.attention as attention_ops
22
22
  from diffsynth_engine.utils.platform import empty_cache
23
23
  from diffsynth_engine.utils import logging
24
+ from diffsynth_engine.utils.process_group import (
25
+ PROCESS_GROUP,
26
+ get_cfg_group,
27
+ get_cfg_world_size,
28
+ get_cfg_rank,
29
+ get_cfg_ranks,
30
+ get_sp_group,
31
+ get_sp_world_size,
32
+ get_sp_rank,
33
+ get_sp_ranks,
34
+ get_sp_ulysses_group,
35
+ get_sp_ulysses_world_size,
36
+ get_sp_ulysses_rank,
37
+ get_sp_ulysses_ranks,
38
+ get_sp_ring_group,
39
+ get_sp_ring_world_size,
40
+ get_sp_ring_rank,
41
+ get_sp_ring_ranks,
42
+ get_tp_group,
43
+ get_tp_world_size,
44
+ get_tp_rank,
45
+ get_tp_ranks,
46
+ )
24
47
 
25
48
  logger = logging.get_logger(__name__)
26
49
 
27
50
 
28
- class Singleton:
29
- _instance = None
30
-
31
- def __new__(cls, *args, **kwargs):
32
- if not cls._instance:
33
- cls._instance = super(Singleton, cls).__new__(cls, *args, **kwargs)
34
- return cls._instance
35
-
36
-
37
- class ProcessGroupSingleton(Singleton):
38
- def __init__(self):
39
- self.CFG_GROUP: Optional[dist.ProcessGroup] = None
40
- self.SP_GROUP: Optional[dist.ProcessGroup] = None
41
- self.SP_ULYSSUES_GROUP: Optional[dist.ProcessGroup] = None
42
- self.SP_RING_GROUP: Optional[dist.ProcessGroup] = None
43
- self.TP_GROUP: Optional[dist.ProcessGroup] = None
44
-
45
- self.CFG_RANKS: List[int] = []
46
- self.SP_RANKS: List[int] = []
47
- self.SP_ULYSSUES_RANKS: List[int] = []
48
- self.SP_RING_RANKS: List[int] = []
49
- self.TP_RANKS: List[int] = []
50
-
51
-
52
- PROCESS_GROUP = ProcessGroupSingleton()
53
-
54
-
55
- def get_cfg_group():
56
- return PROCESS_GROUP.CFG_GROUP
57
-
58
-
59
- def get_cfg_world_size():
60
- return PROCESS_GROUP.CFG_GROUP.size() if PROCESS_GROUP.CFG_GROUP is not None else 1
61
-
62
-
63
- def get_cfg_rank():
64
- return PROCESS_GROUP.CFG_GROUP.rank() if PROCESS_GROUP.CFG_GROUP is not None else 0
65
-
66
-
67
- def get_cfg_ranks():
68
- return PROCESS_GROUP.CFG_RANKS
69
-
70
-
71
- def get_sp_group():
72
- return PROCESS_GROUP.SP_GROUP
73
-
74
-
75
- def get_sp_world_size():
76
- return PROCESS_GROUP.SP_GROUP.size() if PROCESS_GROUP.SP_GROUP is not None else 1
77
-
78
-
79
- def get_sp_rank():
80
- return PROCESS_GROUP.SP_GROUP.rank() if PROCESS_GROUP.SP_GROUP is not None else 0
81
-
82
-
83
- def get_sp_ranks():
84
- return PROCESS_GROUP.SP_RANKS
85
-
86
-
87
- def get_sp_ulysses_group():
88
- return PROCESS_GROUP.SP_ULYSSUES_GROUP
89
-
90
-
91
- def get_sp_ulysses_world_size():
92
- return PROCESS_GROUP.SP_ULYSSUES_GROUP.size() if PROCESS_GROUP.SP_ULYSSUES_GROUP is not None else 1
93
-
94
-
95
- def get_sp_ulysses_rank():
96
- return PROCESS_GROUP.SP_ULYSSUES_GROUP.rank() if PROCESS_GROUP.SP_ULYSSUES_GROUP is not None else 0
97
-
98
-
99
- def get_sp_ulysses_ranks():
100
- return PROCESS_GROUP.SP_ULYSSUES_RANKS
101
-
102
-
103
- def get_sp_ring_group():
104
- return PROCESS_GROUP.SP_RING_GROUP
105
-
106
-
107
- def get_sp_ring_world_size():
108
- return PROCESS_GROUP.SP_RING_GROUP.size() if PROCESS_GROUP.SP_RING_GROUP is not None else 1
109
-
110
-
111
- def get_sp_ring_rank():
112
- return PROCESS_GROUP.SP_RING_GROUP.rank() if PROCESS_GROUP.SP_RING_GROUP is not None else 0
113
-
114
-
115
- def get_sp_ring_ranks():
116
- return PROCESS_GROUP.SP_RING_RANKS
117
-
118
-
119
- def get_tp_group():
120
- return PROCESS_GROUP.TP_GROUP
121
-
122
-
123
- def get_tp_world_size():
124
- return PROCESS_GROUP.TP_GROUP.size() if PROCESS_GROUP.TP_GROUP is not None else 1
125
-
126
-
127
- def get_tp_rank():
128
- return PROCESS_GROUP.TP_GROUP.rank() if PROCESS_GROUP.TP_GROUP is not None else 0
129
-
130
-
131
- def get_tp_ranks():
132
- return PROCESS_GROUP.TP_RANKS
133
-
134
-
135
51
  def init_parallel_pgs(
136
52
  cfg_degree: int = 1,
137
53
  sp_ulysses_degree: int = 1,
@@ -0,0 +1,149 @@
1
+ """
2
+ Process group management for distributed training.
3
+
4
+ This module provides singleton-based process group management for distributed training,
5
+ including support for CFG parallelism, sequence parallelism (Ulysses + Ring), and tensor parallelism.
6
+ """
7
+
8
+ import torch.distributed as dist
9
+ from typing import Optional, List
10
+
11
+
12
+ class Singleton:
13
+ _instance = None
14
+
15
+ def __new__(cls, *args, **kwargs):
16
+ if not cls._instance:
17
+ cls._instance = super(Singleton, cls).__new__(cls, *args, **kwargs)
18
+ return cls._instance
19
+
20
+
21
+ class ProcessGroupSingleton(Singleton):
22
+ def __init__(self):
23
+ if not hasattr(self, 'initialized'):
24
+ self.CFG_GROUP: Optional[dist.ProcessGroup] = None
25
+ self.SP_GROUP: Optional[dist.ProcessGroup] = None
26
+ self.SP_ULYSSUES_GROUP: Optional[dist.ProcessGroup] = None
27
+ self.SP_RING_GROUP: Optional[dist.ProcessGroup] = None
28
+ self.TP_GROUP: Optional[dist.ProcessGroup] = None
29
+
30
+ self.CFG_RANKS: List[int] = []
31
+ self.SP_RANKS: List[int] = []
32
+ self.SP_ULYSSUES_RANKS: List[int] = []
33
+ self.SP_RING_RANKS: List[int] = []
34
+ self.TP_RANKS: List[int] = []
35
+
36
+ self.initialized = True
37
+
38
+
39
+ PROCESS_GROUP = ProcessGroupSingleton()
40
+
41
+
42
+ # CFG parallel group functions
43
+ def get_cfg_group():
44
+ return PROCESS_GROUP.CFG_GROUP
45
+
46
+
47
+ def get_cfg_world_size():
48
+ return PROCESS_GROUP.CFG_GROUP.size() if PROCESS_GROUP.CFG_GROUP is not None else 1
49
+
50
+
51
+ def get_cfg_rank():
52
+ return PROCESS_GROUP.CFG_GROUP.rank() if PROCESS_GROUP.CFG_GROUP is not None else 0
53
+
54
+
55
+ def get_cfg_ranks():
56
+ return PROCESS_GROUP.CFG_RANKS
57
+
58
+
59
+ # Sequence parallel group functions
60
+ def get_sp_group():
61
+ return PROCESS_GROUP.SP_GROUP
62
+
63
+
64
+ def get_sp_world_size():
65
+ return PROCESS_GROUP.SP_GROUP.size() if PROCESS_GROUP.SP_GROUP is not None else 1
66
+
67
+
68
+ def get_sp_rank():
69
+ return PROCESS_GROUP.SP_GROUP.rank() if PROCESS_GROUP.SP_GROUP is not None else 0
70
+
71
+
72
+ def get_sp_ranks():
73
+ return PROCESS_GROUP.SP_RANKS
74
+
75
+
76
+ # Sequence parallel Ulysses group functions
77
+ def get_sp_ulysses_group():
78
+ return PROCESS_GROUP.SP_ULYSSUES_GROUP
79
+
80
+
81
+ def get_sp_ulysses_world_size():
82
+ return PROCESS_GROUP.SP_ULYSSUES_GROUP.size() if PROCESS_GROUP.SP_ULYSSUES_GROUP is not None else 1
83
+
84
+
85
+ def get_sp_ulysses_rank():
86
+ return PROCESS_GROUP.SP_ULYSSUES_GROUP.rank() if PROCESS_GROUP.SP_ULYSSUES_GROUP is not None else 0
87
+
88
+
89
+ def get_sp_ulysses_ranks():
90
+ return PROCESS_GROUP.SP_ULYSSUES_RANKS
91
+
92
+
93
+ # Sequence parallel Ring group functions
94
+ def get_sp_ring_group():
95
+ return PROCESS_GROUP.SP_RING_GROUP
96
+
97
+
98
+ def get_sp_ring_world_size():
99
+ return PROCESS_GROUP.SP_RING_GROUP.size() if PROCESS_GROUP.SP_RING_GROUP is not None else 1
100
+
101
+
102
+ def get_sp_ring_rank():
103
+ return PROCESS_GROUP.SP_RING_GROUP.rank() if PROCESS_GROUP.SP_RING_GROUP is not None else 0
104
+
105
+
106
+ def get_sp_ring_ranks():
107
+ return PROCESS_GROUP.SP_RING_RANKS
108
+
109
+
110
+ # Tensor parallel group functions
111
+ def get_tp_group():
112
+ return PROCESS_GROUP.TP_GROUP
113
+
114
+
115
+ def get_tp_world_size():
116
+ return PROCESS_GROUP.TP_GROUP.size() if PROCESS_GROUP.TP_GROUP is not None else 1
117
+
118
+
119
+ def get_tp_rank():
120
+ return PROCESS_GROUP.TP_GROUP.rank() if PROCESS_GROUP.TP_GROUP is not None else 0
121
+
122
+
123
+ def get_tp_ranks():
124
+ return PROCESS_GROUP.TP_RANKS
125
+
126
+
127
+ __all__ = [
128
+ "PROCESS_GROUP",
129
+ "get_cfg_group",
130
+ "get_cfg_world_size",
131
+ "get_cfg_rank",
132
+ "get_cfg_ranks",
133
+ "get_sp_group",
134
+ "get_sp_world_size",
135
+ "get_sp_rank",
136
+ "get_sp_ranks",
137
+ "get_sp_ulysses_group",
138
+ "get_sp_ulysses_world_size",
139
+ "get_sp_ulysses_rank",
140
+ "get_sp_ulysses_ranks",
141
+ "get_sp_ring_group",
142
+ "get_sp_ring_world_size",
143
+ "get_sp_ring_rank",
144
+ "get_sp_ring_ranks",
145
+ "get_tp_group",
146
+ "get_tp_world_size",
147
+ "get_tp_rank",
148
+ "get_tp_ranks",
149
+ ]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: diffsynth_engine
3
- Version: 0.6.1.dev28
3
+ Version: 0.6.1.dev29
4
4
  Author: MuseAI x ModelScope
5
5
  Classifier: Programming Language :: Python :: 3
6
6
  Classifier: Operating System :: OS Independent
@@ -200,6 +200,7 @@ diffsynth_engine/utils/offload.py
200
200
  diffsynth_engine/utils/onnx.py
201
201
  diffsynth_engine/utils/parallel.py
202
202
  diffsynth_engine/utils/platform.py
203
+ diffsynth_engine/utils/process_group.py
203
204
  diffsynth_engine/utils/prompt.py
204
205
  diffsynth_engine/utils/video.py
205
206
  diffsynth_engine/utils/memory/__init__.py