diffsynth-engine 0.4.2.dev4__tar.gz → 0.4.2.dev6__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.
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/PKG-INFO +1 -1
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/qwen_image/qwen_image_dit.py +4 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/pipelines/base.py +6 -14
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/pipelines/wan_video.py +7 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/utils/offload.py +23 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine.egg-info/PKG-INFO +1 -1
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/docs/tutorial.md +67 -21
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/docs/tutorial_zh.md +64 -19
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/.gitignore +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/.pre-commit-config.yaml +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/LICENSE +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/MANIFEST.in +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/README.md +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/assets/dingtalk.png +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/assets/showcase.jpeg +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/__init__.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/algorithm/__init__.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/algorithm/noise_scheduler/__init__.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/algorithm/noise_scheduler/base_scheduler.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/algorithm/noise_scheduler/flow_match/__init__.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/algorithm/noise_scheduler/flow_match/flow_beta.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/algorithm/noise_scheduler/flow_match/flow_ddim.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/algorithm/noise_scheduler/flow_match/recifited_flow.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/algorithm/noise_scheduler/stable_diffusion/__init__.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/algorithm/noise_scheduler/stable_diffusion/beta.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/algorithm/noise_scheduler/stable_diffusion/ddim.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/algorithm/noise_scheduler/stable_diffusion/exponential.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/algorithm/noise_scheduler/stable_diffusion/karras.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/algorithm/noise_scheduler/stable_diffusion/linear.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/algorithm/noise_scheduler/stable_diffusion/sgm_uniform.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/algorithm/sampler/__init__.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/algorithm/sampler/flow_match/__init__.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/algorithm/sampler/flow_match/flow_match_euler.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/algorithm/sampler/stable_diffusion/__init__.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/algorithm/sampler/stable_diffusion/brownian_tree.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/algorithm/sampler/stable_diffusion/ddpm.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/algorithm/sampler/stable_diffusion/deis.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/algorithm/sampler/stable_diffusion/dpmpp_2m.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/algorithm/sampler/stable_diffusion/dpmpp_2m_sde.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/algorithm/sampler/stable_diffusion/dpmpp_3m_sde.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/algorithm/sampler/stable_diffusion/epsilon.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/algorithm/sampler/stable_diffusion/euler.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/algorithm/sampler/stable_diffusion/euler_ancestral.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/conf/models/components/vae.json +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/conf/models/flux/flux_dit.json +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/conf/models/flux/flux_text_encoder.json +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/conf/models/flux/flux_vae.json +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/conf/models/qwen_image/qwen2_5_vl_config.json +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/conf/models/qwen_image/qwen2_5_vl_vision_config.json +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/conf/models/qwen_image/qwen_image_vae.json +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/conf/models/qwen_image/qwen_image_vae_keymap.json +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/conf/models/sd/sd_text_encoder.json +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/conf/models/sd/sd_unet.json +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/conf/models/sd3/sd3_dit.json +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/conf/models/sd3/sd3_text_encoder.json +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/conf/models/sdxl/sdxl_text_encoder.json +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/conf/models/sdxl/sdxl_unet.json +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/conf/models/wan/dit/wan2.1-flf2v-14b.json +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/conf/models/wan/dit/wan2.1-i2v-14b.json +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/conf/models/wan/dit/wan2.1-t2v-1.3b.json +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/conf/models/wan/dit/wan2.1-t2v-14b.json +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/conf/models/wan/dit/wan2.2-i2v-a14b.json +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/conf/models/wan/dit/wan2.2-t2v-a14b.json +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/conf/models/wan/dit/wan2.2-ti2v-5b.json +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/conf/models/wan/vae/wan-vae-keymap.json +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/conf/models/wan/vae/wan2.1-vae.json +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/conf/models/wan/vae/wan2.2-vae.json +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/conf/tokenizers/flux/tokenizer_1/merges.txt +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/conf/tokenizers/flux/tokenizer_1/special_tokens_map.json +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/conf/tokenizers/flux/tokenizer_1/tokenizer_config.json +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/conf/tokenizers/flux/tokenizer_1/vocab.json +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/conf/tokenizers/flux/tokenizer_2/special_tokens_map.json +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/conf/tokenizers/flux/tokenizer_2/spiece.model +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/conf/tokenizers/flux/tokenizer_2/tokenizer.json +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/conf/tokenizers/flux/tokenizer_2/tokenizer_config.json +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/conf/tokenizers/qwen_image/tokenizer/added_tokens.json +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/conf/tokenizers/qwen_image/tokenizer/merges.txt +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/conf/tokenizers/qwen_image/tokenizer/special_tokens_map.json +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/conf/tokenizers/qwen_image/tokenizer/tokenizer.json +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/conf/tokenizers/qwen_image/tokenizer/tokenizer_config.json +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/conf/tokenizers/qwen_image/tokenizer/vocab.json +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/conf/tokenizers/sdxl/tokenizer/merges.txt +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/conf/tokenizers/sdxl/tokenizer/special_tokens_map.json +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/conf/tokenizers/sdxl/tokenizer/tokenizer_config.json +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/conf/tokenizers/sdxl/tokenizer/vocab.json +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/conf/tokenizers/sdxl/tokenizer_2/merges.txt +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/conf/tokenizers/sdxl/tokenizer_2/special_tokens_map.json +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/conf/tokenizers/sdxl/tokenizer_2/tokenizer_config.json +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/conf/tokenizers/sdxl/tokenizer_2/vocab.json +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/conf/tokenizers/wan/umt5-xxl/special_tokens_map.json +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/conf/tokenizers/wan/umt5-xxl/spiece.model +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/conf/tokenizers/wan/umt5-xxl/tokenizer.json +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/conf/tokenizers/wan/umt5-xxl/tokenizer_config.json +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/configs/__init__.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/configs/controlnet.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/configs/pipeline.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/kernels/__init__.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/__init__.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/base.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/basic/__init__.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/basic/attention.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/basic/lora.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/basic/relative_position_emb.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/basic/timestep.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/basic/transformer_helper.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/basic/unet_helper.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/flux/__init__.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/flux/flux_controlnet.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/flux/flux_dit.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/flux/flux_dit_fbcache.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/flux/flux_ipadapter.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/flux/flux_redux.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/flux/flux_text_encoder.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/flux/flux_vae.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/qwen_image/__init__.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/qwen_image/qwen2_5_vl.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/qwen_image/qwen_image_dit_fbcache.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/qwen_image/qwen_image_vae.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/sd/__init__.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/sd/sd_controlnet.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/sd/sd_text_encoder.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/sd/sd_unet.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/sd/sd_vae.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/sd3/__init__.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/sd3/sd3_dit.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/sd3/sd3_text_encoder.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/sd3/sd3_vae.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/sdxl/__init__.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/sdxl/sdxl_controlnet.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/sdxl/sdxl_text_encoder.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/sdxl/sdxl_unet.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/sdxl/sdxl_vae.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/text_encoder/__init__.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/text_encoder/clip.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/text_encoder/siglip.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/text_encoder/t5.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/utils.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/vae/__init__.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/vae/vae.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/wan/__init__.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/wan/wan_dit.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/wan/wan_image_encoder.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/wan/wan_text_encoder.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/wan/wan_vae.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/pipelines/__init__.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/pipelines/flux_image.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/pipelines/qwen_image.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/pipelines/sd_image.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/pipelines/sdxl_image.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/pipelines/utils.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/processor/__init__.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/processor/canny_processor.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/processor/depth_processor.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/tokenizers/__init__.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/tokenizers/base.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/tokenizers/clip.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/tokenizers/qwen2.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/tokenizers/t5.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/tokenizers/wan.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/tools/__init__.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/tools/flux_inpainting_tool.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/tools/flux_outpainting_tool.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/tools/flux_reference_tool.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/tools/flux_replace_tool.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/utils/__init__.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/utils/cache.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/utils/constants.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/utils/download.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/utils/env.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/utils/flag.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/utils/fp8_linear.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/utils/gguf.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/utils/image.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/utils/loader.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/utils/lock.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/utils/logging.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/utils/onnx.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/utils/parallel.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/utils/platform.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/utils/prompt.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/utils/video.py +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine.egg-info/SOURCES.txt +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine.egg-info/dependency_links.txt +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine.egg-info/requires.txt +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine.egg-info/top_level.txt +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/pyproject.toml +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/setup.cfg +0 -0
- {diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/setup.py +0 -0
|
@@ -315,6 +315,7 @@ class QwenImageTransformerBlock(nn.Module):
|
|
|
315
315
|
|
|
316
316
|
class QwenImageDiT(PreTrainedModel):
|
|
317
317
|
converter = QwenImageDiTStateDictConverter()
|
|
318
|
+
_supports_parallelization = True
|
|
318
319
|
|
|
319
320
|
def __init__(
|
|
320
321
|
self,
|
|
@@ -423,3 +424,6 @@ class QwenImageDiT(PreTrainedModel):
|
|
|
423
424
|
model.load_state_dict(state_dict, assign=True)
|
|
424
425
|
model.to(device=device, dtype=dtype, non_blocking=True)
|
|
425
426
|
return model
|
|
427
|
+
|
|
428
|
+
def get_fsdp_modules(self):
|
|
429
|
+
return ["transformer_blocks"]
|
{diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/pipelines/base.py
RENAMED
|
@@ -6,7 +6,7 @@ from typing import Dict, List, Tuple
|
|
|
6
6
|
from PIL import Image
|
|
7
7
|
|
|
8
8
|
from diffsynth_engine.configs import BaseConfig, BaseStateDicts
|
|
9
|
-
from diffsynth_engine.utils.offload import enable_sequential_cpu_offload
|
|
9
|
+
from diffsynth_engine.utils.offload import enable_sequential_cpu_offload, offload_model_to_dict, restore_model_from_dict
|
|
10
10
|
from diffsynth_engine.utils.fp8_linear import enable_fp8_autocast
|
|
11
11
|
from diffsynth_engine.utils.gguf import load_gguf_checkpoint
|
|
12
12
|
from diffsynth_engine.utils import logging
|
|
@@ -40,6 +40,7 @@ class BasePipeline:
|
|
|
40
40
|
self.dtype = dtype
|
|
41
41
|
self.offload_mode = None
|
|
42
42
|
self.model_names = []
|
|
43
|
+
self._offload_param_dict = {}
|
|
43
44
|
|
|
44
45
|
@classmethod
|
|
45
46
|
def from_pretrained(cls, model_path_or_config: str | BaseConfig) -> "BasePipeline":
|
|
@@ -243,14 +244,13 @@ class BasePipeline:
|
|
|
243
244
|
for model_name in self.model_names:
|
|
244
245
|
model = getattr(self, model_name)
|
|
245
246
|
if model is not None:
|
|
246
|
-
|
|
247
|
+
self._offload_param_dict[model_name] = offload_model_to_dict(model)
|
|
247
248
|
self.offload_mode = "cpu_offload"
|
|
248
249
|
|
|
249
250
|
def _enable_sequential_cpu_offload(self):
|
|
250
251
|
for model_name in self.model_names:
|
|
251
252
|
model = getattr(self, model_name)
|
|
252
253
|
if model is not None:
|
|
253
|
-
model.to("cpu")
|
|
254
254
|
enable_sequential_cpu_offload(model, self.device)
|
|
255
255
|
self.offload_mode = "sequential_cpu_offload"
|
|
256
256
|
|
|
@@ -277,20 +277,12 @@ class BasePipeline:
|
|
|
277
277
|
for model_name in self.model_names:
|
|
278
278
|
if model_name not in load_model_names:
|
|
279
279
|
model = getattr(self, model_name)
|
|
280
|
-
if (
|
|
281
|
-
model
|
|
282
|
-
and (p := next(model.parameters(), None)) is not None
|
|
283
|
-
and p.device != torch.device("cpu")
|
|
284
|
-
):
|
|
285
|
-
model.to("cpu")
|
|
280
|
+
if model is not None and (p := next(model.parameters(), None)) is not None and p.device.type != "cpu":
|
|
281
|
+
restore_model_from_dict(model, self._offload_param_dict[model_name])
|
|
286
282
|
# load the needed models to device
|
|
287
283
|
for model_name in load_model_names:
|
|
288
284
|
model = getattr(self, model_name)
|
|
289
|
-
if (
|
|
290
|
-
model is not None
|
|
291
|
-
and (p := next(model.parameters(), None)) is not None
|
|
292
|
-
and p.device != torch.device(self.device)
|
|
293
|
-
):
|
|
285
|
+
if model is not None and (p := next(model.parameters(), None)) is not None and p.device.type != self.device:
|
|
294
286
|
model.to(self.device)
|
|
295
287
|
# fresh the cuda cache
|
|
296
288
|
empty_cache()
|
{diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/pipelines/wan_video.py
RENAMED
|
@@ -584,4 +584,11 @@ class WanVideoPipeline(BasePipeline):
|
|
|
584
584
|
use_fsdp=config.use_fsdp,
|
|
585
585
|
device="cuda",
|
|
586
586
|
)
|
|
587
|
+
if config.use_torch_compile:
|
|
588
|
+
pipe.compile()
|
|
587
589
|
return pipe
|
|
590
|
+
|
|
591
|
+
def compile(self):
|
|
592
|
+
self.dit.compile()
|
|
593
|
+
if self.dit2 is not None:
|
|
594
|
+
self.dit2.compile()
|
{diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/utils/offload.py
RENAMED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import torch
|
|
2
2
|
import torch.nn as nn
|
|
3
|
+
from typing import Dict
|
|
3
4
|
|
|
4
5
|
|
|
5
6
|
def enable_sequential_cpu_offload(module: nn.Module, device: str = "cuda"):
|
|
7
|
+
module = module.to("cpu")
|
|
6
8
|
if len(list(module.children())) == 0:
|
|
7
9
|
if len(list(module.parameters())) > 0 or len(list(module.buffers())) > 0:
|
|
8
10
|
# leaf module with parameters or buffers
|
|
@@ -50,3 +52,24 @@ def add_cpu_offload_hook(module: nn.Module, device: str = "cuda", recurse: bool
|
|
|
50
52
|
module.register_forward_pre_hook(_forward_pre_hook)
|
|
51
53
|
module.register_forward_hook(_forward_hook)
|
|
52
54
|
setattr(module, "_cpu_offload_enabled", True)
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
def offload_model_to_dict(module: nn.Module) -> Dict[str, torch.Tensor]:
|
|
58
|
+
module = module.to("cpu")
|
|
59
|
+
offload_param_dict = {}
|
|
60
|
+
for name, param in module.named_parameters(recurse=True):
|
|
61
|
+
param.data = param.data.pin_memory()
|
|
62
|
+
offload_param_dict[name] = param.data
|
|
63
|
+
for name, buffer in module.named_buffers(recurse=True):
|
|
64
|
+
buffer.data = buffer.data.pin_memory()
|
|
65
|
+
offload_param_dict[name] = buffer.data
|
|
66
|
+
return offload_param_dict
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
def restore_model_from_dict(module: nn.Module, offload_param_dict: Dict[str, torch.Tensor]):
|
|
70
|
+
for name, param in module.named_parameters(recurse=True):
|
|
71
|
+
if name in offload_param_dict:
|
|
72
|
+
param.data = offload_param_dict[name]
|
|
73
|
+
for name, buffer in module.named_buffers(recurse=True):
|
|
74
|
+
if name in offload_param_dict:
|
|
75
|
+
buffer.data = offload_param_dict[name]
|
|
@@ -88,6 +88,52 @@ We will continuously update DiffSynth-Engine to support more models. (Wan2.2 LoR
|
|
|
88
88
|
|
|
89
89
|
After the model is downloaded, load the model with the corresponding pipeline and perform inference.
|
|
90
90
|
|
|
91
|
+
|
|
92
|
+
### Image Generation(Qwen-Image)
|
|
93
|
+
|
|
94
|
+
The following code calls `QwenImagePipeline` to load the [Qwen-Image](https://www.modelscope.cn/models/Qwen/Qwen-Image) model and generate an image. Recommended resolutions are 928×1664, 1104×1472, 1328×1328, 1472×1104, and 1664×928, with a suggested cfg_scale of 4. If no negative_prompt is provided, it defaults to a single space character (not an empty string). For multi-GPU parallelism, currently only cfg parallelism is supported (parallelism=2), with other optimization efforts underway.
|
|
95
|
+
|
|
96
|
+
```python
|
|
97
|
+
from diffsynth_engine import fetch_model, QwenImagePipeline, QwenImagePipelineConfig
|
|
98
|
+
|
|
99
|
+
config = QwenImagePipelineConfig.basic_config(
|
|
100
|
+
model_path=fetch_model("MusePublic/Qwen-image", revision="v1", path="transformer/*.safetensors"),
|
|
101
|
+
encoder_path=fetch_model("MusePublic/Qwen-image", revision="v1", path="text_encoder/*.safetensors"),
|
|
102
|
+
vae_path=fetch_model("MusePublic/Qwen-image", revision="v1", path="vae/*.safetensors"),
|
|
103
|
+
parallelism=2,
|
|
104
|
+
)
|
|
105
|
+
pipe = QwenImagePipeline.from_pretrained(config)
|
|
106
|
+
|
|
107
|
+
prompt = """
|
|
108
|
+
一副典雅庄重的对联悬挂于厅堂之中,房间是个安静古典的中式布置,桌子上放着一些青花瓷,对联上左书“思涌如泉万类灵感皆可触”,右书“智启于问千机代码自天成”,横批“AI脑洞力”,字体飘逸灵动,兼具传统笔意与未来感。中间挂着一幅中国风的画作,内容是岳阳楼,云雾缭绕间似有数据流光隐现,古今交融,意境深远。
|
|
109
|
+
"""
|
|
110
|
+
negative_prompt = " "
|
|
111
|
+
image = pipe(
|
|
112
|
+
prompt=prompt,
|
|
113
|
+
negative_prompt=negative_prompt,
|
|
114
|
+
cfg_scale=4.0,
|
|
115
|
+
width=1104,
|
|
116
|
+
height=1472,
|
|
117
|
+
num_inference_steps=30,
|
|
118
|
+
seed=42,
|
|
119
|
+
)
|
|
120
|
+
image.save("image.png")
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
Please note that if some necessary modules, like text encoders, are missing from a model repository, the pipeline will automatically download the required files.
|
|
124
|
+
|
|
125
|
+
#### Detailed Parameters(Qwen-Image)
|
|
126
|
+
|
|
127
|
+
In the image generation pipeline `pipe`, we can use the following parameters for fine-grained control:
|
|
128
|
+
|
|
129
|
+
* `prompt`: The prompt, used to describe the content of the generated image, It supports multiple languages (Chinese, English, Japanese, etc.), e.g., “一只猫” (Chinese), "a cat" (English), or "庭を走る猫" (Japanese).
|
|
130
|
+
* `negative_prompt`: The negative prompt, used to describe content you do not want in the image, it defaults to a single space character (not an empty string), e.g., "ugly".
|
|
131
|
+
* `cfg_scale`: The guidance scale for [Classifier-Free Guidance](https://arxiv.org/abs/2207.12598). A larger value usually results in stronger correlation between the text and the image but reduces the diversity of the generated content.
|
|
132
|
+
* `height`: Image height.
|
|
133
|
+
* `width`: Image width.
|
|
134
|
+
* `num_inference_steps`: The number of inference steps. Generally, more steps lead to longer computation time but higher image quality.
|
|
135
|
+
* `seed`: The random seed. A fixed seed ensures reproducible results.
|
|
136
|
+
|
|
91
137
|
### Image Generation
|
|
92
138
|
|
|
93
139
|
The following code calls `FluxImagePipeline` to load the [MajicFlus](https://www.modelscope.cn/models/MAILAND/majicflus_v1/summary?version=v1.0) model and generate an image. To load other types of models, replace `FluxImagePipeline` and `FluxPipelineConfig` in the code with the corresponding pipeline and config.
|
|
@@ -109,16 +155,16 @@ Please note that if some necessary modules, like text encoders, are missing from
|
|
|
109
155
|
|
|
110
156
|
In the image generation pipeline `pipe`, we can use the following parameters for fine-grained control:
|
|
111
157
|
|
|
112
|
-
*
|
|
113
|
-
*
|
|
114
|
-
*
|
|
115
|
-
*
|
|
116
|
-
*
|
|
117
|
-
*
|
|
118
|
-
*
|
|
119
|
-
*
|
|
120
|
-
*
|
|
121
|
-
*
|
|
158
|
+
* `prompt`: The prompt, used to describe the content of the generated image, e.g., "a cat".
|
|
159
|
+
* `negative_prompt`: The negative prompt, used to describe content you do not want in the image, e.g., "ugly".
|
|
160
|
+
* `cfg_scale`: The guidance scale for [Classifier-Free Guidance](https://arxiv.org/abs/2207.12598). A larger value usually results in stronger correlation between the text and the image but reduces the diversity of the generated content.
|
|
161
|
+
* `clip_skip`: The number of layers to skip in the [CLIP](https://arxiv.org/abs/2103.00020) text encoder. The more layers skipped, the lower the text-image correlation, but this can lead to interesting variations in the generated content.
|
|
162
|
+
* `input_image`: Input image, used for image-to-image generation.
|
|
163
|
+
* `denoising_strength`: The denoising strength. When set to 1, a full generation process is performed. When set to a value between 0 and 1, some information from the input image is preserved.
|
|
164
|
+
* `height`: Image height.
|
|
165
|
+
* `width`: Image width.
|
|
166
|
+
* `num_inference_steps`: The number of inference steps. Generally, more steps lead to longer computation time but higher image quality.
|
|
167
|
+
* `seed`: The random seed. A fixed seed ensures reproducible results.
|
|
122
168
|
|
|
123
169
|
#### Loading LoRA
|
|
124
170
|
|
|
@@ -177,17 +223,17 @@ save_video(video, "video.mp4")
|
|
|
177
223
|
|
|
178
224
|
In the video generation pipeline `pipe`, we can use the following parameters for fine-grained control:
|
|
179
225
|
|
|
180
|
-
*
|
|
181
|
-
*
|
|
182
|
-
*
|
|
183
|
-
*
|
|
184
|
-
*
|
|
185
|
-
*
|
|
186
|
-
*
|
|
187
|
-
*
|
|
188
|
-
*
|
|
189
|
-
*
|
|
190
|
-
*
|
|
226
|
+
* `prompt`: The prompt, used to describe the content of the generated video, e.g., "a cat".
|
|
227
|
+
* `negative_prompt`: The negative prompt, used to describe content you do not want in the video, e.g., "ugly".
|
|
228
|
+
* `cfg_scale`: The guidance scale for [Classifier-Free Guidance](https://arxiv.org/abs/2207.12598). A larger value usually results in stronger correlation between the text and the video but reduces the diversity of the generated content.
|
|
229
|
+
* `input_image`: Input image, only effective in image-to-video models, such as [Wan-AI/Wan2.1-I2V-14B-720P](https://modelscope.cn/models/Wan-AI/Wan2.1-I2V-14B-720P).
|
|
230
|
+
* `input_video`: Input video, used for video-to-video generation.
|
|
231
|
+
* `denoising_strength`: The denoising strength. When set to 1, a full generation process is performed. When set to a value between 0 and 1, some information from the input video is preserved.
|
|
232
|
+
* `height`: Video frame height.
|
|
233
|
+
* `width`: Video frame width.
|
|
234
|
+
* `num_frames`: Number of video frames.
|
|
235
|
+
* `num_inference_steps`: The number of inference steps. Generally, more steps lead to longer computation time but higher video quality.
|
|
236
|
+
* `seed`: The random seed. A fixed seed ensures reproducible results.
|
|
191
237
|
|
|
192
238
|
#### Loading LoRA
|
|
193
239
|
|
|
@@ -88,6 +88,51 @@ Diffusion 模型包含多种多样的模型结构,每种模型由对应的流
|
|
|
88
88
|
|
|
89
89
|
模型下载完毕后,我们可以根据对应的模型类型选择流水线加载模型并进行推理。
|
|
90
90
|
|
|
91
|
+
### 图像生成(Qwen-Image)
|
|
92
|
+
|
|
93
|
+
以下代码可以调用 `QwenImagePipeline` 加载[Qwen-Image](https://www.modelscope.cn/models/Qwen/Qwen-Image)模型生成一张图。推荐分辨率为928×1664, 1104×1472, 1328×1328, 1472×1104, 1664×928,cfg_scale为4,如果没有negative_prompt默认为一个空格而不是空字符串。多卡并行目前支持cfg并行(parallelism=2),其他优化工作正在进行中。
|
|
94
|
+
|
|
95
|
+
```python
|
|
96
|
+
from diffsynth_engine import fetch_model, QwenImagePipeline, QwenImagePipelineConfig
|
|
97
|
+
|
|
98
|
+
config = QwenImagePipelineConfig.basic_config(
|
|
99
|
+
model_path=fetch_model("MusePublic/Qwen-image", revision="v1", path="transformer/*.safetensors"),
|
|
100
|
+
encoder_path=fetch_model("MusePublic/Qwen-image", revision="v1", path="text_encoder/*.safetensors"),
|
|
101
|
+
vae_path=fetch_model("MusePublic/Qwen-image", revision="v1", path="vae/*.safetensors"),
|
|
102
|
+
parallelism=2,
|
|
103
|
+
)
|
|
104
|
+
pipe = QwenImagePipeline.from_pretrained(config)
|
|
105
|
+
|
|
106
|
+
prompt = """
|
|
107
|
+
一副典雅庄重的对联悬挂于厅堂之中,房间是个安静古典的中式布置,桌子上放着一些青花瓷,对联上左书“思涌如泉万类灵感皆可触”,右书“智启于问千机代码自天成”,横批“AI脑洞力”,字体飘逸灵动,兼具传统笔意与未来感。中间挂着一幅中国风的画作,内容是岳阳楼,云雾缭绕间似有数据流光隐现,古今交融,意境深远。
|
|
108
|
+
"""
|
|
109
|
+
negative_prompt = " "
|
|
110
|
+
image = pipe(
|
|
111
|
+
prompt=prompt,
|
|
112
|
+
negative_prompt=negative_prompt,
|
|
113
|
+
cfg_scale=4.0,
|
|
114
|
+
width=1104,
|
|
115
|
+
height=1472,
|
|
116
|
+
num_inference_steps=30,
|
|
117
|
+
seed=42,
|
|
118
|
+
)
|
|
119
|
+
image.save("image.png")
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
请注意,某些模型库中缺乏必要的文本编码器等模块,我们的代码会自动补充下载所需的模型文件。
|
|
123
|
+
|
|
124
|
+
#### 详细参数(Qwen-Image)
|
|
125
|
+
|
|
126
|
+
在图像生成流水线 `pipe` 中,我们可以通过以下参数进行精细的控制:
|
|
127
|
+
|
|
128
|
+
* `prompt`: 提示词,用于描述生成图像的内容,支持多种语言(中文/英文/日文等),例如“一只猫”/"a cat"/"庭を走る猫"。
|
|
129
|
+
* `negative_prompt`: 负面提示词,用于描述不希望图像中出现的内容,例如“ugly”,默认为一个空格而不是空字符串, " "。
|
|
130
|
+
* `cfg_scale`: [Classifier-free guidance](https://arxiv.org/abs/2207.12598) 的引导系数,通常更大的引导系数可以达到更强的文图相关性,但会降低生成内容的多样性,推荐值为4。
|
|
131
|
+
* `height`: 图像高度。
|
|
132
|
+
* `width`: 图像宽度。
|
|
133
|
+
* `num_inference_steps`: 推理步数,通常推理步数越多,计算时间越长,图像质量越高。
|
|
134
|
+
* `seed`: 随机种子,固定的随机种子可以使生成的内容固定。
|
|
135
|
+
|
|
91
136
|
### 图像生成
|
|
92
137
|
|
|
93
138
|
以下代码可以调用 `FluxImagePipeline` 加载[麦橘超然](https://www.modelscope.cn/models/MAILAND/majicflus_v1/summary?version=v1.0)模型生成一张图。如果要加载其他结构的模型,请将代码中的 `FluxImagePipeline` 和 `FluxPipelineConfig` 替换成对应的流水线模块及配置。
|
|
@@ -110,15 +155,15 @@ image.save("image.png")
|
|
|
110
155
|
在图像生成流水线 `pipe` 中,我们可以通过以下参数进行精细的控制:
|
|
111
156
|
|
|
112
157
|
* `prompt`: 提示词,用于描述生成图像的内容,例如“a cat”。
|
|
113
|
-
* `negative_prompt
|
|
114
|
-
* `cfg_scale
|
|
115
|
-
* `clip_skip
|
|
116
|
-
* `input_image
|
|
117
|
-
* `denoising_strength
|
|
118
|
-
* `height
|
|
119
|
-
* `width
|
|
120
|
-
* `num_inference_steps
|
|
121
|
-
* `seed
|
|
158
|
+
* `negative_prompt`: 负面提示词,用于描述不希望图像中出现的内容,例如“ugly”。
|
|
159
|
+
* `cfg_scale`: [Classifier-free guidance](https://arxiv.org/abs/2207.12598) 的引导系数,通常更大的引导系数可以达到更强的文图相关性,但会降低生成内容的多样性。
|
|
160
|
+
* `clip_skip`: 跳过 [CLIP](https://arxiv.org/abs/2103.00020) 文本编码器的层数,跳过的层数越多,生成的图像与文本的相关性越低,但生成的图像内容可能会出现奇妙的变化。
|
|
161
|
+
* `input_image`: 输入图像,用于图生图。
|
|
162
|
+
* `denoising_strength`: 去噪力度,当设置为 1 时,执行完整的生成过程,当设置为 0 到 1 之间的值时,会保留输入图像中的部分信息。
|
|
163
|
+
* `height`: 图像高度。
|
|
164
|
+
* `width`: 图像宽度。
|
|
165
|
+
* `num_inference_steps`: 推理步数,通常推理步数越多,计算时间越长,图像质量越高。
|
|
166
|
+
* `seed`: 随机种子,固定的随机种子可以使生成的内容固定。
|
|
122
167
|
|
|
123
168
|
#### LoRA 加载
|
|
124
169
|
|
|
@@ -175,16 +220,16 @@ save_video(video, "video.mp4")
|
|
|
175
220
|
在视频生成流水线 `pipe` 中,我们可以通过以下参数进行精细的控制:
|
|
176
221
|
|
|
177
222
|
* `prompt`: 提示词,用于描述生成图像的内容,例如“a cat”。
|
|
178
|
-
* `negative_prompt
|
|
179
|
-
* `cfg_scale
|
|
180
|
-
* `input_image
|
|
181
|
-
* `input_video
|
|
182
|
-
* `denoising_strength
|
|
183
|
-
* `height
|
|
184
|
-
* `width
|
|
185
|
-
* `num_frames
|
|
186
|
-
* `num_inference_steps
|
|
187
|
-
* `seed
|
|
223
|
+
* `negative_prompt`: 负面提示词,用于描述不希望图像中出现的内容,例如“ugly”。
|
|
224
|
+
* `cfg_scale`: [Classifier-free guidance](https://arxiv.org/abs/2207.12598) 的引导系数,通常更大的引导系数可以达到更强的文图相关性,但会降低生成内容的多样性。
|
|
225
|
+
* `input_image`: 输入图像,只在图生视频模型中有效,例如 [Wan-AI/Wan2.1-I2V-14B-720P](https://modelscope.cn/models/Wan-AI/Wan2.1-I2V-14B-720P)。
|
|
226
|
+
* `input_video`: 输入视频,用于视频生视频。
|
|
227
|
+
* `denoising_strength`: 去噪力度,当设置为 1 时,执行完整的生成过程,当设置为 0 到 1 之间的值时,会保留输入视频中的部分信息。
|
|
228
|
+
* `height`: 视频帧高度。
|
|
229
|
+
* `width`: 视频帧宽度。
|
|
230
|
+
* `num_frames`: 视频帧数。
|
|
231
|
+
* `num_inference_steps`: 推理步数,通常推理步数越多,计算时间越长,图像质量越高。
|
|
232
|
+
* `seed`: 随机种子,固定的随机种子可以使生成的内容固定。
|
|
188
233
|
|
|
189
234
|
#### LoRA 加载
|
|
190
235
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/algorithm/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/configs/__init__.py
RENAMED
|
File without changes
|
{diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/configs/controlnet.py
RENAMED
|
File without changes
|
{diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/configs/pipeline.py
RENAMED
|
File without changes
|
{diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/kernels/__init__.py
RENAMED
|
File without changes
|
{diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/basic/lora.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/flux/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/flux/flux_dit.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/flux/flux_vae.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/sd/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/sd/sd_unet.py
RENAMED
|
File without changes
|
{diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/sd/sd_vae.py
RENAMED
|
File without changes
|
{diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/sd3/__init__.py
RENAMED
|
File without changes
|
{diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/sd3/sd3_dit.py
RENAMED
|
File without changes
|
|
File without changes
|
{diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/sd3/sd3_vae.py
RENAMED
|
File without changes
|
{diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/sdxl/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/sdxl/sdxl_vae.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/utils.py
RENAMED
|
File without changes
|
{diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/vae/__init__.py
RENAMED
|
File without changes
|
{diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/vae/vae.py
RENAMED
|
File without changes
|
{diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/wan/__init__.py
RENAMED
|
File without changes
|
{diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/wan/wan_dit.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/models/wan/wan_vae.py
RENAMED
|
File without changes
|
{diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/pipelines/__init__.py
RENAMED
|
File without changes
|
{diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/pipelines/flux_image.py
RENAMED
|
File without changes
|
{diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/pipelines/qwen_image.py
RENAMED
|
File without changes
|
{diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/pipelines/sd_image.py
RENAMED
|
File without changes
|
{diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/pipelines/sdxl_image.py
RENAMED
|
File without changes
|
{diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/pipelines/utils.py
RENAMED
|
File without changes
|
{diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/processor/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/tokenizers/__init__.py
RENAMED
|
File without changes
|
{diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/tokenizers/base.py
RENAMED
|
File without changes
|
{diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/tokenizers/clip.py
RENAMED
|
File without changes
|
{diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/tokenizers/qwen2.py
RENAMED
|
File without changes
|
{diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/tokenizers/t5.py
RENAMED
|
File without changes
|
{diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/tokenizers/wan.py
RENAMED
|
File without changes
|
{diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/tools/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/utils/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/utils/constants.py
RENAMED
|
File without changes
|
{diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/utils/download.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/utils/fp8_linear.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/utils/loader.py
RENAMED
|
File without changes
|
|
File without changes
|
{diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/utils/logging.py
RENAMED
|
File without changes
|
|
File without changes
|
{diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/utils/parallel.py
RENAMED
|
File without changes
|
{diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/utils/platform.py
RENAMED
|
File without changes
|
{diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine/utils/prompt.py
RENAMED
|
File without changes
|
|
File without changes
|
{diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
{diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine.egg-info/requires.txt
RENAMED
|
File without changes
|
{diffsynth_engine-0.4.2.dev4 → diffsynth_engine-0.4.2.dev6}/diffsynth_engine.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|