diffsynth-engine 0.4.4.dev2__tar.gz → 0.4.4.dev4__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 (203) hide show
  1. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/.gitignore +2 -1
  2. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/PKG-INFO +1 -1
  3. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/__init__.py +20 -16
  4. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/configs/__init__.py +6 -2
  5. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/configs/pipeline.py +43 -28
  6. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/models/base.py +3 -5
  7. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/models/basic/lora.py +26 -22
  8. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/models/flux/flux_controlnet.py +8 -6
  9. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/models/flux/flux_dit.py +11 -10
  10. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/models/flux/flux_dit_fbcache.py +8 -11
  11. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/models/flux/flux_ipadapter.py +4 -7
  12. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/models/flux/flux_redux.py +2 -8
  13. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/models/flux/flux_text_encoder.py +4 -5
  14. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/models/flux/flux_vae.py +4 -5
  15. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/models/qwen_image/qwen2_5_vl.py +2 -3
  16. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/models/qwen_image/qwen_image_dit.py +33 -30
  17. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/models/qwen_image/qwen_image_dit_fbcache.py +8 -11
  18. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/models/qwen_image/qwen_image_vae.py +2 -3
  19. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/models/sd/sd_controlnet.py +3 -4
  20. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/models/sd/sd_text_encoder.py +12 -13
  21. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/models/sd/sd_unet.py +2 -3
  22. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/models/sd/sd_vae.py +8 -7
  23. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/models/sd3/sd3_dit.py +2 -3
  24. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/models/sd3/sd3_text_encoder.py +4 -4
  25. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/models/sd3/sd3_vae.py +8 -7
  26. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/models/sdxl/sdxl_text_encoder.py +24 -25
  27. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/models/sdxl/sdxl_unet.py +2 -3
  28. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/models/sdxl/sdxl_vae.py +8 -7
  29. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/models/text_encoder/t5.py +2 -4
  30. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/models/vae/vae.py +37 -38
  31. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/models/wan/wan_dit.py +10 -5
  32. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/models/wan/wan_image_encoder.py +2 -3
  33. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/models/wan/wan_text_encoder.py +2 -4
  34. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/models/wan/wan_vae.py +2 -3
  35. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/pipelines/flux_image.py +47 -45
  36. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/pipelines/qwen_image.py +54 -50
  37. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/pipelines/sd_image.py +21 -24
  38. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/pipelines/sdxl_image.py +27 -34
  39. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/pipelines/wan_video.py +105 -62
  40. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/tools/flux_inpainting_tool.py +8 -16
  41. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/tools/flux_outpainting_tool.py +10 -18
  42. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/tools/flux_reference_tool.py +8 -16
  43. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/tools/flux_replace_tool.py +9 -19
  44. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/utils/memory/memory_predcit_model.py +3 -4
  45. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/utils/offload.py +6 -9
  46. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/utils/parallel.py +86 -44
  47. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/utils/platform.py +6 -1
  48. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine.egg-info/PKG-INFO +1 -1
  49. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine.egg-info/SOURCES.txt +0 -1
  50. diffsynth_engine-0.4.4.dev2/diffsynth_engine/models/utils.py +0 -53
  51. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/.gitattributes +0 -0
  52. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/.pre-commit-config.yaml +0 -0
  53. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/LICENSE +0 -0
  54. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/MANIFEST.in +0 -0
  55. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/README.md +0 -0
  56. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/assets/dingtalk.png +0 -0
  57. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/assets/showcase.jpeg +0 -0
  58. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/algorithm/__init__.py +0 -0
  59. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/algorithm/noise_scheduler/__init__.py +0 -0
  60. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/algorithm/noise_scheduler/base_scheduler.py +0 -0
  61. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/algorithm/noise_scheduler/flow_match/__init__.py +0 -0
  62. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/algorithm/noise_scheduler/flow_match/flow_beta.py +0 -0
  63. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/algorithm/noise_scheduler/flow_match/flow_ddim.py +0 -0
  64. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/algorithm/noise_scheduler/flow_match/recifited_flow.py +0 -0
  65. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/algorithm/noise_scheduler/stable_diffusion/__init__.py +0 -0
  66. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/algorithm/noise_scheduler/stable_diffusion/beta.py +0 -0
  67. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/algorithm/noise_scheduler/stable_diffusion/ddim.py +0 -0
  68. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/algorithm/noise_scheduler/stable_diffusion/exponential.py +0 -0
  69. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/algorithm/noise_scheduler/stable_diffusion/karras.py +0 -0
  70. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/algorithm/noise_scheduler/stable_diffusion/linear.py +0 -0
  71. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/algorithm/noise_scheduler/stable_diffusion/sgm_uniform.py +0 -0
  72. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/algorithm/sampler/__init__.py +0 -0
  73. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/algorithm/sampler/flow_match/__init__.py +0 -0
  74. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/algorithm/sampler/flow_match/flow_match_euler.py +0 -0
  75. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/algorithm/sampler/stable_diffusion/__init__.py +0 -0
  76. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/algorithm/sampler/stable_diffusion/brownian_tree.py +0 -0
  77. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/algorithm/sampler/stable_diffusion/ddpm.py +0 -0
  78. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/algorithm/sampler/stable_diffusion/deis.py +0 -0
  79. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/algorithm/sampler/stable_diffusion/dpmpp_2m.py +0 -0
  80. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/algorithm/sampler/stable_diffusion/dpmpp_2m_sde.py +0 -0
  81. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/algorithm/sampler/stable_diffusion/dpmpp_3m_sde.py +0 -0
  82. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/algorithm/sampler/stable_diffusion/epsilon.py +0 -0
  83. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/algorithm/sampler/stable_diffusion/euler.py +0 -0
  84. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/algorithm/sampler/stable_diffusion/euler_ancestral.py +0 -0
  85. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/conf/models/components/vae.json +0 -0
  86. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/conf/models/flux/flux_dit.json +0 -0
  87. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/conf/models/flux/flux_text_encoder.json +0 -0
  88. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/conf/models/flux/flux_vae.json +0 -0
  89. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/conf/models/qwen_image/qwen2_5_vl_config.json +0 -0
  90. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/conf/models/qwen_image/qwen2_5_vl_vision_config.json +0 -0
  91. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/conf/models/qwen_image/qwen_image_vae.json +0 -0
  92. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/conf/models/qwen_image/qwen_image_vae_keymap.json +0 -0
  93. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/conf/models/sd/sd_text_encoder.json +0 -0
  94. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/conf/models/sd/sd_unet.json +0 -0
  95. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/conf/models/sd3/sd3_dit.json +0 -0
  96. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/conf/models/sd3/sd3_text_encoder.json +0 -0
  97. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/conf/models/sdxl/sdxl_text_encoder.json +0 -0
  98. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/conf/models/sdxl/sdxl_unet.json +0 -0
  99. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/conf/models/wan/dit/wan2.1-flf2v-14b.json +0 -0
  100. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/conf/models/wan/dit/wan2.1-i2v-14b.json +0 -0
  101. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/conf/models/wan/dit/wan2.1-t2v-1.3b.json +0 -0
  102. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/conf/models/wan/dit/wan2.1-t2v-14b.json +0 -0
  103. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/conf/models/wan/dit/wan2.2-i2v-a14b.json +0 -0
  104. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/conf/models/wan/dit/wan2.2-t2v-a14b.json +0 -0
  105. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/conf/models/wan/dit/wan2.2-ti2v-5b.json +0 -0
  106. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/conf/models/wan/vae/wan-vae-keymap.json +0 -0
  107. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/conf/models/wan/vae/wan2.1-vae.json +0 -0
  108. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/conf/models/wan/vae/wan2.2-vae.json +0 -0
  109. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/conf/tokenizers/flux/tokenizer_1/merges.txt +0 -0
  110. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/conf/tokenizers/flux/tokenizer_1/special_tokens_map.json +0 -0
  111. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/conf/tokenizers/flux/tokenizer_1/tokenizer_config.json +0 -0
  112. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/conf/tokenizers/flux/tokenizer_1/vocab.json +0 -0
  113. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/conf/tokenizers/flux/tokenizer_2/special_tokens_map.json +0 -0
  114. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/conf/tokenizers/flux/tokenizer_2/spiece.model +0 -0
  115. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/conf/tokenizers/flux/tokenizer_2/tokenizer.json +0 -0
  116. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/conf/tokenizers/flux/tokenizer_2/tokenizer_config.json +0 -0
  117. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/conf/tokenizers/qwen_image/qwen2_vl_image_processor.json +0 -0
  118. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/conf/tokenizers/qwen_image/tokenizer/added_tokens.json +0 -0
  119. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/conf/tokenizers/qwen_image/tokenizer/merges.txt +0 -0
  120. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/conf/tokenizers/qwen_image/tokenizer/special_tokens_map.json +0 -0
  121. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/conf/tokenizers/qwen_image/tokenizer/tokenizer.json +0 -0
  122. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/conf/tokenizers/qwen_image/tokenizer/tokenizer_config.json +0 -0
  123. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/conf/tokenizers/qwen_image/tokenizer/vocab.json +0 -0
  124. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/conf/tokenizers/sdxl/tokenizer/merges.txt +0 -0
  125. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/conf/tokenizers/sdxl/tokenizer/special_tokens_map.json +0 -0
  126. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/conf/tokenizers/sdxl/tokenizer/tokenizer_config.json +0 -0
  127. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/conf/tokenizers/sdxl/tokenizer/vocab.json +0 -0
  128. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/conf/tokenizers/sdxl/tokenizer_2/merges.txt +0 -0
  129. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/conf/tokenizers/sdxl/tokenizer_2/special_tokens_map.json +0 -0
  130. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/conf/tokenizers/sdxl/tokenizer_2/tokenizer_config.json +0 -0
  131. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/conf/tokenizers/sdxl/tokenizer_2/vocab.json +0 -0
  132. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/conf/tokenizers/wan/umt5-xxl/special_tokens_map.json +0 -0
  133. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/conf/tokenizers/wan/umt5-xxl/spiece.model +0 -0
  134. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/conf/tokenizers/wan/umt5-xxl/tokenizer.json +0 -0
  135. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/conf/tokenizers/wan/umt5-xxl/tokenizer_config.json +0 -0
  136. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/configs/controlnet.py +0 -0
  137. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/kernels/__init__.py +0 -0
  138. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/models/__init__.py +0 -0
  139. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/models/basic/__init__.py +0 -0
  140. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/models/basic/attention.py +0 -0
  141. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/models/basic/relative_position_emb.py +0 -0
  142. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/models/basic/timestep.py +0 -0
  143. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/models/basic/transformer_helper.py +0 -0
  144. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/models/basic/unet_helper.py +0 -0
  145. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/models/flux/__init__.py +0 -0
  146. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/models/hunyuan3d/__init__.py +0 -0
  147. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/models/hunyuan3d/dino_image_encoder.py +0 -0
  148. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/models/hunyuan3d/hunyuan3d_dit.py +0 -0
  149. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/models/hunyuan3d/hunyuan3d_vae.py +0 -0
  150. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/models/hunyuan3d/moe.py +0 -0
  151. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/models/hunyuan3d/surface_extractor.py +0 -0
  152. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/models/hunyuan3d/volume_decoder.py +0 -0
  153. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/models/qwen_image/__init__.py +0 -0
  154. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/models/sd/__init__.py +0 -0
  155. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/models/sd3/__init__.py +0 -0
  156. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/models/sdxl/__init__.py +0 -0
  157. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/models/sdxl/sdxl_controlnet.py +0 -0
  158. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/models/text_encoder/__init__.py +0 -0
  159. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/models/text_encoder/clip.py +0 -0
  160. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/models/text_encoder/siglip.py +0 -0
  161. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/models/vae/__init__.py +0 -0
  162. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/models/wan/__init__.py +0 -0
  163. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/pipelines/__init__.py +0 -0
  164. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/pipelines/base.py +0 -0
  165. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/pipelines/hunyuan3d_shape.py +0 -0
  166. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/pipelines/utils.py +0 -0
  167. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/processor/__init__.py +0 -0
  168. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/processor/canny_processor.py +0 -0
  169. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/processor/depth_processor.py +0 -0
  170. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/tokenizers/__init__.py +0 -0
  171. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/tokenizers/base.py +0 -0
  172. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/tokenizers/clip.py +0 -0
  173. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/tokenizers/qwen2.py +0 -0
  174. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/tokenizers/qwen2_vl_image_processor.py +0 -0
  175. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/tokenizers/qwen2_vl_processor.py +0 -0
  176. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/tokenizers/t5.py +0 -0
  177. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/tokenizers/wan.py +0 -0
  178. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/tools/__init__.py +0 -0
  179. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/utils/__init__.py +0 -0
  180. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/utils/cache.py +0 -0
  181. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/utils/constants.py +0 -0
  182. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/utils/download.py +0 -0
  183. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/utils/env.py +0 -0
  184. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/utils/flag.py +0 -0
  185. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/utils/fp8_linear.py +0 -0
  186. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/utils/gguf.py +0 -0
  187. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/utils/image.py +0 -0
  188. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/utils/loader.py +0 -0
  189. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/utils/lock.py +0 -0
  190. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/utils/logging.py +0 -0
  191. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/utils/memory/__init__.py +0 -0
  192. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/utils/memory/linear_regression.py +0 -0
  193. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/utils/onnx.py +0 -0
  194. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/utils/prompt.py +0 -0
  195. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine/utils/video.py +0 -0
  196. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine.egg-info/dependency_links.txt +0 -0
  197. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine.egg-info/requires.txt +0 -0
  198. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/diffsynth_engine.egg-info/top_level.txt +0 -0
  199. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/docs/tutorial.md +0 -0
  200. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/docs/tutorial_zh.md +0 -0
  201. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/pyproject.toml +0 -0
  202. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/setup.cfg +0 -0
  203. {diffsynth_engine-0.4.4.dev2 → diffsynth_engine-0.4.4.dev4}/setup.py +0 -0
@@ -9,4 +9,5 @@ dist/
9
9
  .DS_Store/
10
10
  .pytest_cache/
11
11
  .ruff_cache/
12
- CLAUDE.md
12
+ CLAUDE.md
13
+ .claude/
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: diffsynth_engine
3
- Version: 0.4.4.dev2
3
+ Version: 0.4.4.dev4
4
4
  Author: MuseAI x ModelScope
5
5
  Classifier: Programming Language :: Python :: 3
6
6
  Classifier: Operating System :: OS Independent
@@ -4,17 +4,19 @@ from .configs import (
4
4
  FluxPipelineConfig,
5
5
  WanPipelineConfig,
6
6
  QwenImagePipelineConfig,
7
+ HunyuanPipelineConfig,
7
8
  SDStateDicts,
8
9
  SDXLStateDicts,
9
10
  FluxStateDicts,
11
+ WanStateDicts,
10
12
  QwenImageStateDicts,
11
13
  ControlNetParams,
12
14
  ControlType,
13
15
  )
14
16
  from .pipelines import (
15
- FluxImagePipeline,
16
- SDXLImagePipeline,
17
17
  SDImagePipeline,
18
+ SDXLImagePipeline,
19
+ FluxImagePipeline,
18
20
  WanVideoPipeline,
19
21
  QwenImagePipeline,
20
22
  Hunyuan3DShapePipeline,
@@ -22,6 +24,13 @@ from .pipelines import (
22
24
  from .models.flux import FluxControlNet, FluxIPAdapter, FluxRedux
23
25
  from .models.sd import SDControlNet
24
26
  from .models.sdxl import SDXLControlNetUnion
27
+ from .tools import (
28
+ FluxInpaintingTool,
29
+ FluxOutpaintingTool,
30
+ FluxIPAdapterRefTool,
31
+ FluxReduxRefTool,
32
+ FluxReplaceByControlTool,
33
+ )
25
34
  from .utils.download import (
26
35
  fetch_model,
27
36
  fetch_modelscope_model,
@@ -30,32 +39,29 @@ from .utils.download import (
30
39
  reset_fetch_modelscope_model,
31
40
  )
32
41
  from .utils.video import load_video, save_video
33
- from .tools import (
34
- FluxInpaintingTool,
35
- FluxOutpaintingTool,
36
- FluxIPAdapterRefTool,
37
- FluxReduxRefTool,
38
- FluxReplaceByControlTool,
39
- )
40
42
 
41
43
  __all__ = [
42
44
  "SDPipelineConfig",
43
45
  "SDXLPipelineConfig",
44
46
  "FluxPipelineConfig",
45
47
  "WanPipelineConfig",
48
+ "QwenImagePipelineConfig",
49
+ "HunyuanPipelineConfig",
46
50
  "SDStateDicts",
47
51
  "SDXLStateDicts",
48
52
  "FluxStateDicts",
53
+ "WanStateDicts",
49
54
  "QwenImageStateDicts",
55
+ "ControlNetParams",
56
+ "ControlType",
57
+ "SDImagePipeline",
58
+ "SDControlNet",
59
+ "SDXLImagePipeline",
60
+ "SDXLControlNetUnion",
50
61
  "FluxImagePipeline",
51
- "QwenImagePipelineConfig",
52
62
  "FluxControlNet",
53
63
  "FluxIPAdapter",
54
64
  "FluxRedux",
55
- "SDControlNet",
56
- "SDXLControlNetUnion",
57
- "SDXLImagePipeline",
58
- "SDImagePipeline",
59
65
  "WanVideoPipeline",
60
66
  "QwenImagePipeline",
61
67
  "Hunyuan3DShapePipeline",
@@ -64,8 +70,6 @@ __all__ = [
64
70
  "FluxIPAdapterRefTool",
65
71
  "FluxReplaceByControlTool",
66
72
  "FluxReduxRefTool",
67
- "ControlNetParams",
68
- "ControlType",
69
73
  "fetch_model",
70
74
  "fetch_modelscope_model",
71
75
  "register_fetch_modelscope_model",
@@ -8,10 +8,12 @@ from .pipeline import (
8
8
  FluxPipelineConfig,
9
9
  WanPipelineConfig,
10
10
  QwenImagePipelineConfig,
11
+ HunyuanPipelineConfig,
11
12
  BaseStateDicts,
12
13
  SDStateDicts,
13
14
  SDXLStateDicts,
14
15
  FluxStateDicts,
16
+ WanStateDicts,
15
17
  QwenImageStateDicts,
16
18
  )
17
19
  from .controlnet import ControlType, ControlNetParams
@@ -26,11 +28,13 @@ __all__ = [
26
28
  "FluxPipelineConfig",
27
29
  "WanPipelineConfig",
28
30
  "QwenImagePipelineConfig",
29
- "ControlType",
30
- "ControlNetParams",
31
+ "HunyuanPipelineConfig",
31
32
  "BaseStateDicts",
32
33
  "SDStateDicts",
33
34
  "SDXLStateDicts",
34
35
  "FluxStateDicts",
36
+ "WanStateDicts",
35
37
  "QwenImageStateDicts",
38
+ "ControlType",
39
+ "ControlNetParams",
36
40
  ]
@@ -1,7 +1,7 @@
1
1
  import os
2
2
  import torch
3
3
  from dataclasses import dataclass, field
4
- from typing import List, Tuple, Optional, Dict
4
+ from typing import List, Dict, Tuple, Optional
5
5
 
6
6
  from diffsynth_engine.configs.controlnet import ControlType
7
7
 
@@ -127,7 +127,7 @@ class FluxPipelineConfig(AttentionConfig, OptimizationConfig, ParallelConfig, Ba
127
127
  model_path=model_path,
128
128
  device=device,
129
129
  parallelism=parallelism,
130
- use_fsdp=True,
130
+ use_fsdp=True if parallelism > 1 else False,
131
131
  offload_mode=offload_mode,
132
132
  offload_to_disk=offload_to_disk,
133
133
  )
@@ -174,8 +174,8 @@ class WanPipelineConfig(AttentionConfig, OptimizationConfig, ParallelConfig, Bas
174
174
  image_encoder_path=image_encoder_path,
175
175
  device=device,
176
176
  parallelism=parallelism,
177
- use_cfg_parallel=True,
178
- use_fsdp=True,
177
+ use_cfg_parallel=True if parallelism > 1 else False,
178
+ use_fsdp=True if parallelism > 1 else False,
179
179
  offload_mode=offload_mode,
180
180
  offload_to_disk=offload_to_disk,
181
181
  )
@@ -184,16 +184,6 @@ class WanPipelineConfig(AttentionConfig, OptimizationConfig, ParallelConfig, Bas
184
184
  init_parallel_config(self)
185
185
 
186
186
 
187
- @dataclass
188
- class HunyuanPipelineConfig(BaseConfig):
189
- model_path: str | os.PathLike | List[str | os.PathLike]
190
- model_dtype: torch.dtype = torch.float16
191
- vae_path: Optional[str | os.PathLike | List[str | os.PathLike]] = None
192
- vae_dtype: torch.dtype = torch.float16
193
- image_encoder_path: Optional[str | os.PathLike | List[str | os.PathLike]] = None
194
- image_encoder_dtype: torch.dtype = torch.float16
195
-
196
-
197
187
  @dataclass
198
188
  class QwenImagePipelineConfig(AttentionConfig, OptimizationConfig, ParallelConfig, BaseConfig):
199
189
  model_path: str | os.PathLike | List[str | os.PathLike]
@@ -228,8 +218,8 @@ class QwenImagePipelineConfig(AttentionConfig, OptimizationConfig, ParallelConfi
228
218
  encoder_path=encoder_path,
229
219
  vae_path=vae_path,
230
220
  parallelism=parallelism,
231
- use_cfg_parallel=True,
232
- use_fsdp=True,
221
+ use_cfg_parallel=True if parallelism > 1 else False,
222
+ use_fsdp=True if parallelism > 1 else False,
233
223
  offload_mode=offload_mode,
234
224
  offload_to_disk=offload_to_disk,
235
225
  )
@@ -238,32 +228,57 @@ class QwenImagePipelineConfig(AttentionConfig, OptimizationConfig, ParallelConfi
238
228
  init_parallel_config(self)
239
229
 
240
230
 
231
+ @dataclass
232
+ class HunyuanPipelineConfig(BaseConfig):
233
+ model_path: str | os.PathLike | List[str | os.PathLike]
234
+ model_dtype: torch.dtype = torch.float16
235
+ vae_path: Optional[str | os.PathLike | List[str | os.PathLike]] = None
236
+ vae_dtype: torch.dtype = torch.float16
237
+ image_encoder_path: Optional[str | os.PathLike | List[str | os.PathLike]] = None
238
+ image_encoder_dtype: torch.dtype = torch.float16
239
+
240
+
241
241
  @dataclass
242
242
  class BaseStateDicts:
243
- model: Optional[Dict[str, torch.Tensor]] = None
244
- vae: Optional[Dict[str, torch.Tensor]] = None
243
+ pass
244
+
245
+
246
+ @dataclass
247
+ class SDStateDicts:
248
+ model: Dict[str, torch.Tensor]
249
+ clip: Dict[str, torch.Tensor]
250
+ vae: Dict[str, torch.Tensor]
245
251
 
246
252
 
247
253
  @dataclass
248
- class SDStateDicts(BaseStateDicts):
249
- clip: Optional[Dict[str, torch.Tensor]] = None
254
+ class SDXLStateDicts:
255
+ model: Dict[str, torch.Tensor]
256
+ clip_l: Dict[str, torch.Tensor]
257
+ clip_g: Dict[str, torch.Tensor]
258
+ vae: Dict[str, torch.Tensor]
250
259
 
251
260
 
252
261
  @dataclass
253
- class SDXLStateDicts(BaseStateDicts):
254
- clip_l: Optional[Dict[str, torch.Tensor]] = None
255
- clip_g: Optional[Dict[str, torch.Tensor]] = None
262
+ class FluxStateDicts:
263
+ model: Dict[str, torch.Tensor]
264
+ t5: Dict[str, torch.Tensor]
265
+ clip: Dict[str, torch.Tensor]
266
+ vae: Dict[str, torch.Tensor]
256
267
 
257
268
 
258
269
  @dataclass
259
- class FluxStateDicts(BaseStateDicts):
260
- t5: Optional[Dict[str, torch.Tensor]] = None
261
- clip: Optional[Dict[str, torch.Tensor]] = None
270
+ class WanStateDicts:
271
+ model: Dict[str, torch.Tensor] | Dict[str, Dict[str, torch.Tensor]]
272
+ t5: Dict[str, torch.Tensor]
273
+ vae: Dict[str, torch.Tensor]
274
+ image_encoder: Optional[Dict[str, torch.Tensor]] = None
262
275
 
263
276
 
264
277
  @dataclass
265
- class QwenImageStateDicts(BaseStateDicts):
266
- encoder: Optional[Dict[str, torch.Tensor]] = None
278
+ class QwenImageStateDicts:
279
+ model: Dict[str, torch.Tensor]
280
+ encoder: Dict[str, torch.Tensor]
281
+ vae: Dict[str, torch.Tensor]
267
282
 
268
283
 
269
284
  def init_parallel_config(config: FluxPipelineConfig | QwenImagePipelineConfig | WanPipelineConfig):
@@ -4,7 +4,6 @@ import torch.nn as nn
4
4
  from typing import Dict, Union, List, Any
5
5
  from diffsynth_engine.utils.loader import load_file
6
6
  from diffsynth_engine.models.basic.lora import LoRALinear, LoRAConv2d
7
- from diffsynth_engine.models.utils import no_init_weights
8
7
 
9
8
 
10
9
  class StateDictConverter:
@@ -33,10 +32,9 @@ class PreTrainedModel(nn.Module):
33
32
 
34
33
  @classmethod
35
34
  def from_state_dict(cls, state_dict: Dict[str, torch.Tensor], device: str, dtype: torch.dtype, **kwargs):
36
- with no_init_weights():
37
- model = torch.nn.utils.skip_init(cls, device=device, dtype=dtype, **kwargs)
38
- model.to_empty(device=device)
39
- model.load_state_dict(state_dict)
35
+ model = cls(device="meta", dtype=dtype, **kwargs)
36
+ model.requires_grad_(False)
37
+ model.load_state_dict(state_dict, assign=True)
40
38
  model.to(device=device, dtype=dtype, non_blocking=True)
41
39
  return model
42
40
 
@@ -74,14 +74,13 @@ class LoRALinear(nn.Linear):
74
74
 
75
75
  @staticmethod
76
76
  def from_linear(linear: nn.Linear):
77
- lora_linear = torch.nn.utils.skip_init(
78
- LoRALinear,
77
+ lora_linear = LoRALinear(
79
78
  linear.in_features,
80
79
  linear.out_features,
81
80
  linear.bias is not None,
82
- device=linear.weight.device,
81
+ device="meta",
83
82
  dtype=linear.weight.dtype,
84
- )
83
+ ).to_empty(device=linear.weight.device)
85
84
  lora_linear.weight = linear.weight
86
85
  lora_linear.bias = linear.bias
87
86
  return lora_linear
@@ -98,12 +97,20 @@ class LoRALinear(nn.Linear):
98
97
  dtype: torch.dtype,
99
98
  **kwargs,
100
99
  ):
101
- up_linear = torch.nn.utils.skip_init(
102
- nn.Linear, up.shape[1], up.shape[0], bias=False, device=device, dtype=dtype
103
- )
104
- down_linear = torch.nn.utils.skip_init(
105
- nn.Linear, down.shape[0], down.shape[1], bias=False, device=device, dtype=dtype
106
- )
100
+ up_linear = nn.Linear(
101
+ up.shape[1],
102
+ up.shape[0],
103
+ bias=False,
104
+ device="meta",
105
+ dtype=dtype,
106
+ ).to_empty(device=device)
107
+ down_linear = nn.Linear(
108
+ down.shape[0],
109
+ down.shape[1],
110
+ bias=False,
111
+ device="meta",
112
+ dtype=dtype,
113
+ ).to_empty(device=device)
107
114
  up_linear.weight.data = up
108
115
  down_linear.weight.data = down
109
116
  lora = LoRA(scale, rank, alpha, up_linear, down_linear, device, dtype)
@@ -182,8 +189,7 @@ class LoRAConv2d(nn.Conv2d):
182
189
 
183
190
  @staticmethod
184
191
  def from_conv2d(conv2d: nn.Conv2d):
185
- lora_conv2d = torch.nn.utils.skip_init(
186
- LoRAConv2d,
192
+ lora_conv2d = LoRAConv2d(
187
193
  conv2d.in_channels,
188
194
  conv2d.out_channels,
189
195
  conv2d.kernel_size,
@@ -193,9 +199,9 @@ class LoRAConv2d(nn.Conv2d):
193
199
  conv2d.groups,
194
200
  conv2d.bias is not None,
195
201
  conv2d.padding_mode,
196
- device=conv2d.weight.device,
202
+ device="meta",
197
203
  dtype=conv2d.weight.dtype,
198
- )
204
+ ).to_empty(device=conv2d.weight.device)
199
205
  lora_conv2d.weight = conv2d.weight
200
206
  lora_conv2d.bias = conv2d.bias
201
207
  return lora_conv2d
@@ -211,31 +217,29 @@ class LoRAConv2d(nn.Conv2d):
211
217
  device: str,
212
218
  dtype: torch.dtype,
213
219
  ):
214
- down_conv = torch.nn.utils.skip_init(
215
- nn.Conv2d,
220
+ down_conv = nn.Conv2d(
216
221
  self.in_channels,
217
222
  rank,
218
223
  kernel_size=self.kernel_size,
219
224
  stride=self.stride,
220
225
  padding=self.padding,
221
226
  bias=False,
222
- device=device,
227
+ device="meta",
223
228
  dtype=dtype,
224
- )
229
+ ).to_empty(device=device)
225
230
  down_conv.weight.data = down
226
231
  # according to the official kohya_ss trainer kernel_size are always fixed for the up layer
227
232
  # see: https://github.com/bmaltais/kohya_ss/blob/2accb1305979ba62f5077a23aabac23b4c37e935/networks/lora_diffusers.py#L129
228
233
  # refer from diffusers
229
- up_conv = torch.nn.utils.skip_init(
230
- nn.Conv2d,
234
+ up_conv = nn.Conv2d(
231
235
  rank,
232
236
  self.out_channels,
233
237
  kernel_size=(1, 1),
234
238
  stride=(1, 1),
235
239
  bias=False,
236
- device=device,
240
+ device="meta",
237
241
  dtype=dtype,
238
- )
242
+ ).to_empty(device=device)
239
243
  up_conv.weight.data = up
240
244
 
241
245
  lora = LoRA(scale, rank, alpha, up_conv, down_conv, device, dtype)
@@ -8,7 +8,6 @@ from diffsynth_engine.models.flux.flux_dit import (
8
8
  RoPEEmbedding,
9
9
  TimestepEmbeddings,
10
10
  )
11
- from diffsynth_engine.models.utils import no_init_weights
12
11
 
13
12
 
14
13
  class FluxControlNetStateDictConverter(StateDictConverter):
@@ -164,10 +163,13 @@ class FluxControlNet(PreTrainedModel):
164
163
  else:
165
164
  condition_channels = 64
166
165
 
167
- with no_init_weights():
168
- model = torch.nn.utils.skip_init(
169
- cls, condition_channels=condition_channels, attn_kwargs=attn_kwargs, device=device, dtype=dtype
170
- )
171
- model.load_state_dict(state_dict)
166
+ model = cls(
167
+ condition_channels=condition_channels,
168
+ attn_kwargs=attn_kwargs,
169
+ device="meta",
170
+ dtype=dtype,
171
+ )
172
+ model.requires_grad_(False)
173
+ model.load_state_dict(state_dict, assign=True)
172
174
  model.to(device=device, dtype=dtype, non_blocking=True)
173
175
  return model
@@ -14,7 +14,6 @@ from diffsynth_engine.models.basic.transformer_helper import (
14
14
  from diffsynth_engine.models.basic.timestep import TimestepEmbeddings
15
15
  from diffsynth_engine.models.base import PreTrainedModel, StateDictConverter
16
16
  from diffsynth_engine.models.basic import attention as attention_ops
17
- from diffsynth_engine.models.utils import no_init_weights
18
17
  from diffsynth_engine.utils.gguf import gguf_inference
19
18
  from diffsynth_engine.utils.fp8_linear import fp8_inference
20
19
  from diffsynth_engine.utils.constants import FLUX_DIT_CONFIG_FILE
@@ -503,18 +502,20 @@ class FluxDiT(PreTrainedModel):
503
502
  in_channel: int = 64,
504
503
  attn_kwargs: Optional[Dict[str, Any]] = None,
505
504
  ):
506
- with no_init_weights():
507
- model = torch.nn.utils.skip_init(
508
- cls,
509
- device=device,
510
- dtype=dtype,
511
- in_channel=in_channel,
512
- attn_kwargs=attn_kwargs,
513
- )
514
- model = model.requires_grad_(False) # for loading gguf
505
+ model = cls(
506
+ device="meta",
507
+ dtype=dtype,
508
+ in_channel=in_channel,
509
+ attn_kwargs=attn_kwargs,
510
+ )
511
+ model = model.requires_grad_(False)
515
512
  model.load_state_dict(state_dict, assign=True)
516
513
  model.to(device=device, dtype=dtype, non_blocking=True)
517
514
  return model
518
515
 
516
+ def compile_repeated_blocks(self, *args, **kwargs):
517
+ for block in self.blocks:
518
+ block.compile(*args, **kwargs)
519
+
519
520
  def get_fsdp_modules(self):
520
521
  return ["blocks", "single_blocks"]
@@ -2,7 +2,6 @@ import torch
2
2
  import numpy as np
3
3
  from typing import Any, Dict, Optional
4
4
 
5
- from diffsynth_engine.models.utils import no_init_weights
6
5
  from diffsynth_engine.utils.gguf import gguf_inference
7
6
  from diffsynth_engine.utils.fp8_linear import fp8_inference
8
7
  from diffsynth_engine.utils.parallel import (
@@ -190,16 +189,14 @@ class FluxDiTFBCache(FluxDiT):
190
189
  attn_kwargs: Optional[Dict[str, Any]] = None,
191
190
  relative_l1_threshold: float = 0.05,
192
191
  ):
193
- with no_init_weights():
194
- model = torch.nn.utils.skip_init(
195
- cls,
196
- device=device,
197
- dtype=dtype,
198
- in_channel=in_channel,
199
- attn_kwargs=attn_kwargs,
200
- relative_l1_threshold=relative_l1_threshold,
201
- )
202
- model = model.requires_grad_(False) # for loading gguf
192
+ model = cls(
193
+ device="meta",
194
+ dtype=dtype,
195
+ in_channel=in_channel,
196
+ attn_kwargs=attn_kwargs,
197
+ relative_l1_threshold=relative_l1_threshold,
198
+ )
199
+ model = model.requires_grad_(False)
203
200
  model.load_state_dict(state_dict, assign=True)
204
201
  model.to(device=device, dtype=dtype, non_blocking=True)
205
202
  return model
@@ -4,7 +4,6 @@ from torch import nn
4
4
  from PIL import Image
5
5
  from typing import Any, Dict, List, Optional
6
6
  from functools import partial
7
- from diffsynth_engine.models.utils import no_init_weights
8
7
  from diffsynth_engine.models.text_encoder.siglip import SiglipImageEncoder
9
8
  from diffsynth_engine.models.basic.transformer_helper import RMSNorm
10
9
  from diffsynth_engine.models.basic.attention import attention
@@ -39,9 +38,8 @@ class FluxIPAdapterAttention(nn.Module):
39
38
 
40
39
  @classmethod
41
40
  def from_state_dict(cls, state_dict: Dict[str, torch.Tensor], device: str, dtype: torch.dtype, **kwargs):
42
- with no_init_weights():
43
- model = torch.nn.utils.skip_init(cls, device=device, dtype=dtype, **kwargs)
44
- model.to_empty(device=device)
41
+ model = cls(device="meta", dtype=dtype, **kwargs)
42
+ model.requires_grad_(False)
45
43
  model.load_state_dict(state_dict, assign=True)
46
44
  model.to(device=device, dtype=dtype, non_blocking=True)
47
45
  return model
@@ -74,9 +72,8 @@ class FluxIPAdapterMLP(torch.nn.Module):
74
72
 
75
73
  @classmethod
76
74
  def from_state_dict(cls, state_dict: Dict[str, torch.Tensor], device: str, dtype: torch.dtype, **kwargs):
77
- with no_init_weights():
78
- model = torch.nn.utils.skip_init(cls, device=device, dtype=dtype, **kwargs)
79
- model.to_empty(device=device)
75
+ model = cls(device="meta", dtype=dtype, **kwargs)
76
+ model.requires_grad_(False)
80
77
  model.load_state_dict(state_dict, assign=True)
81
78
  model.to(device=device, dtype=dtype, non_blocking=True)
82
79
  return model
@@ -4,7 +4,6 @@ import torch.nn as nn
4
4
  from typing import Dict
5
5
  from diffsynth_engine.utils.download import fetch_model
6
6
  from diffsynth_engine.models.base import PreTrainedModel
7
- from diffsynth_engine.models.utils import no_init_weights
8
7
  from diffsynth_engine.models.text_encoder.siglip import SiglipImageEncoder
9
8
 
10
9
 
@@ -30,13 +29,8 @@ class FluxReduxImageEmbedder(nn.Module):
30
29
  device: str,
31
30
  dtype: torch.dtype,
32
31
  ):
33
- with no_init_weights():
34
- model = torch.nn.utils.skip_init(
35
- cls,
36
- device=device,
37
- dtype=dtype,
38
- )
39
- model = model.requires_grad_(False) # for loading gguf
32
+ model = cls(device="meta", dtype=dtype)
33
+ model = model.requires_grad_(False)
40
34
  model.load_state_dict(state_dict, assign=True)
41
35
  model.to(device=device, dtype=dtype, non_blocking=True)
42
36
  return model
@@ -5,7 +5,6 @@ from typing import Dict
5
5
  from diffsynth_engine.models.sd import SDTextEncoder
6
6
  from diffsynth_engine.models.text_encoder.t5 import T5EncoderModel
7
7
  from diffsynth_engine.models.base import StateDictConverter
8
- from diffsynth_engine.models.utils import no_init_weights
9
8
  from diffsynth_engine.utils.constants import FLUX_TEXT_ENCODER_CONFIG_FILE
10
9
  from diffsynth_engine.utils import logging
11
10
 
@@ -61,10 +60,10 @@ class FluxTextEncoder1(SDTextEncoder):
61
60
  def from_state_dict(
62
61
  cls, state_dict: Dict[str, torch.Tensor], device: str, dtype: torch.dtype, vocab_size: int = 49408
63
62
  ):
64
- with no_init_weights():
65
- model = torch.nn.utils.skip_init(cls, device=device, dtype=dtype, vocab_size=vocab_size)
66
- model.load_state_dict(state_dict)
67
- model.to(device=device, dtype=dtype)
63
+ model = cls(device="meta", dtype=dtype, vocab_size=vocab_size)
64
+ model.requires_grad_(False)
65
+ model.load_state_dict(state_dict, assign=True)
66
+ model.to(device=device, dtype=dtype, non_blocking=True)
68
67
  return model
69
68
 
70
69
 
@@ -3,7 +3,6 @@ import torch
3
3
  from typing import Dict
4
4
 
5
5
  from diffsynth_engine.models.vae import VAEDecoder, VAEEncoder, VAEStateDictConverter
6
- from diffsynth_engine.models.utils import no_init_weights
7
6
  from diffsynth_engine.utils.constants import FLUX_VAE_CONFIG_FILE
8
7
  from diffsynth_engine.utils import logging
9
8
 
@@ -51,8 +50,8 @@ class FluxVAEEncoder(VAEEncoder):
51
50
 
52
51
  @classmethod
53
52
  def from_state_dict(cls, state_dict: Dict[str, torch.Tensor], device: str, dtype: torch.dtype):
54
- with no_init_weights():
55
- model = torch.nn.utils.skip_init(cls, device=device, dtype=dtype)
53
+ model = cls(device="meta", dtype=dtype)
54
+ model.requires_grad_(False)
56
55
  model.load_state_dict(state_dict, assign=True)
57
56
  model.to(device=device, dtype=dtype, non_blocking=True)
58
57
  return model
@@ -73,8 +72,8 @@ class FluxVAEDecoder(VAEDecoder):
73
72
 
74
73
  @classmethod
75
74
  def from_state_dict(cls, state_dict: Dict[str, torch.Tensor], device: str, dtype: torch.dtype):
76
- with no_init_weights():
77
- model = torch.nn.utils.skip_init(cls, device=device, dtype=dtype)
75
+ model = cls(device="meta", dtype=dtype)
76
+ model.requires_grad_(False)
78
77
  model.load_state_dict(state_dict, assign=True)
79
78
  model.to(device=device, dtype=dtype, non_blocking=True)
80
79
  return model
@@ -8,7 +8,6 @@ from typing import Any, Dict, List, Tuple, Optional
8
8
  from diffsynth_engine.models.base import PreTrainedModel
9
9
  from diffsynth_engine.models.basic.transformer_helper import RMSNorm
10
10
  from diffsynth_engine.models.basic import attention as attention_ops
11
- from diffsynth_engine.models.utils import no_init_weights
12
11
  from diffsynth_engine.utils.cache import Cache, DynamicCache
13
12
  from diffsynth_engine.utils import logging
14
13
 
@@ -968,8 +967,8 @@ class Qwen2_5_VLForConditionalGeneration(PreTrainedModel):
968
967
  device: str = "cuda:0",
969
968
  dtype: torch.dtype = torch.bfloat16,
970
969
  ):
971
- with torch.device("meta"), no_init_weights():
972
- model = cls(vision_config=vision_config, config=config, device=device, dtype=dtype)
970
+ model = cls(vision_config=vision_config, config=config, device="meta", dtype=dtype)
971
+ model.requires_grad_(False)
973
972
  model.load_state_dict(state_dict, assign=True)
974
973
  model.to(device=device, dtype=dtype, non_blocking=True)
975
974
  return model