diffsynth 2.0.15__tar.gz → 2.0.17__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-2.0.15 → diffsynth-2.0.17}/PKG-INFO +1 -1
- {diffsynth-2.0.15 → diffsynth-2.0.17}/README.md +124 -3
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/configs/model_configs.py +155 -4
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/configs/vram_management_module_maps.py +18 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/core/data/operators.py +34 -4
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/diffusion/__init__.py +1 -0
- diffsynth-2.0.17/diffsynth/diffusion/dmd2.py +601 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/diffusion/flow_match.py +40 -1
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/diffusion/parsers.py +21 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/diffusion/runner.py +18 -1
- diffsynth-2.0.17/diffsynth/models/boogu_image_dit.py +3282 -0
- diffsynth-2.0.17/diffsynth/models/krea2_dit.py +419 -0
- diffsynth-2.0.17/diffsynth/models/krea2_text_encoder.py +79 -0
- diffsynth-2.0.17/diffsynth/pipelines/boogu_image.py +291 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/pipelines/flux2_image.py +1 -1
- diffsynth-2.0.17/diffsynth/pipelines/krea2.py +280 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/pipelines/stable_diffusion_xl.py +10 -7
- diffsynth-2.0.17/diffsynth/utils/lora/krea2.py +131 -0
- diffsynth-2.0.17/diffsynth/utils/state_dict_converters/krea2_dit.py +92 -0
- diffsynth-2.0.17/diffsynth/utils/state_dict_converters/krea2_text_encoder.py +19 -0
- diffsynth-2.0.17/diffsynth/utils/state_dict_converters/sdxl_text_encoder.py +206 -0
- diffsynth-2.0.17/diffsynth/utils/state_dict_converters/sdxl_text_encoder_2.py +345 -0
- diffsynth-2.0.17/diffsynth/utils/state_dict_converters/sdxl_vae.py +265 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth.egg-info/PKG-INFO +1 -1
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth.egg-info/SOURCES.txt +12 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/pyproject.toml +1 -1
- {diffsynth-2.0.15 → diffsynth-2.0.17}/LICENSE +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/__init__.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/configs/__init__.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/core/__init__.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/core/attention/__init__.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/core/attention/attention.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/core/data/__init__.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/core/data/unified_dataset.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/core/device/__init__.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/core/device/npu_compatible_device.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/core/gradient/__init__.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/core/gradient/gradient_checkpoint.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/core/loader/__init__.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/core/loader/config.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/core/loader/file.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/core/loader/model.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/core/npu_patch/npu_fused_operator.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/core/offload_training/__init__.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/core/offload_training/manager.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/core/offload_training/memory_buffer.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/core/offload_training/offloader.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/core/vram/__init__.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/core/vram/disk_map.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/core/vram/initialization.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/core/vram/layers.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/diffusion/base_pipeline.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/diffusion/ddim_scheduler.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/diffusion/logger.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/diffusion/loss.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/diffusion/template.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/diffusion/training_module.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/metrics/__init__.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/metrics/aesthetic.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/metrics/base.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/metrics/bioclip.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/metrics/clip.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/metrics/fid.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/metrics/hpsv2.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/metrics/hpsv3.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/metrics/image_reward.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/metrics/lpips.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/metrics/pickscore.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/metrics/qwen_image_bench.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/metrics/unified_reward_2.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/metrics/unified_reward_edit.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/ace_step_conditioner.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/ace_step_dit.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/ace_step_residual_fsq.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/ace_step_text_encoder.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/ace_step_tokenizer.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/ace_step_vae.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/aesthetic.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/anima_dit.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/bioclip.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/clip.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/demucs.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/dinov3_image_encoder.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/ernie_image_dit.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/ernie_image_text_encoder.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/fid.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/flux2_dit.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/flux2_text_encoder.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/flux2_vae.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/flux_controlnet.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/flux_dit.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/flux_infiniteyou.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/flux_ipadapter.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/flux_lora_encoder.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/flux_lora_patcher.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/flux_text_encoder_clip.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/flux_text_encoder_t5.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/flux_vae.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/flux_value_control.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/general_modules.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/hidream_common.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/hidream_o1_image_dit.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/hpsv2.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/hpsv3.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/ideogram4_dit.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/ideogram4_text_encoder.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/ideogram4_vae.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/image_reward.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/joyai_image_dit.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/joyai_image_text_encoder.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/longcat_video_dit.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/lpips.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/ltx2_audio_vae.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/ltx2_common.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/ltx2_dit.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/ltx2_text_encoder.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/ltx2_upsampler.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/ltx2_video_vae.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/model_loader.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/mova_audio_dit.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/mova_audio_vae.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/mova_dual_tower_bridge.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/nexus_gen.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/nexus_gen_ar_model.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/nexus_gen_projector.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/pickscore.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/qwen_image_bench.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/qwen_image_controlnet.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/qwen_image_dit.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/qwen_image_image2lora.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/qwen_image_text_encoder.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/qwen_image_vae.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/sd_text_encoder.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/siglip2_image_encoder.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/stable_diffusion_text_encoder.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/stable_diffusion_unet.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/stable_diffusion_vae.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/stable_diffusion_xl_text_encoder.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/stable_diffusion_xl_unet.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/step1x_connector.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/step1x_text_encoder.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/unified_reward_2.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/unified_reward_edit.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/wan_video_animate_adapter.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/wan_video_camera_controller.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/wan_video_dit.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/wan_video_dit_s2v.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/wan_video_image_encoder.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/wan_video_mot.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/wan_video_motion_controller.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/wan_video_text_encoder.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/wan_video_vace.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/wan_video_vae.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/wantodance.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/wav2vec.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/z_image_controlnet.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/z_image_dit.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/z_image_image2lora.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/models/z_image_text_encoder.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/pipelines/ace_step.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/pipelines/anima_image.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/pipelines/ernie_image.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/pipelines/flux_image.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/pipelines/hidream_o1_image.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/pipelines/ideogram4.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/pipelines/joyai_image.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/pipelines/ltx2_audio_video.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/pipelines/mova_audio_video.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/pipelines/qwen_image.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/pipelines/stable_diffusion.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/pipelines/wan_video.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/pipelines/z_image.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/controlnet/__init__.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/controlnet/annotator.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/controlnet/controlnet_input.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/data/__init__.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/data/audio.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/data/audio_video.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/data/media_io_ltx2.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/demucs/__init__.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/dequantizer/__init__.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/lora/__init__.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/lora/flux.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/lora/general.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/lora/merge.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/lora/reset_rank.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/lora/sdxl.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/ses/__init__.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/ses/ses.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/__init__.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/ace_step_conditioner.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/ace_step_dit.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/ace_step_text_encoder.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/ace_step_tokenizer.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/anima_dit.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/dino_v3.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/ernie_image_text_encoder.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/flux2_text_encoder.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/flux_controlnet.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/flux_dit.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/flux_infiniteyou.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/flux_ipadapter.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/flux_text_encoder_clip.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/flux_text_encoder_t5.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/flux_vae.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/image_metrics.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/joyai_image_text_encoder.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/ltx2_audio_vae.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/ltx2_dit.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/ltx2_text_encoder.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/ltx2_video_vae.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/nexus_gen.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/nexus_gen_projector.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/qwen_image_text_encoder.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/sdxl.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/stable_diffusion_text_encoder.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/stable_diffusion_vae.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/stable_diffusion_xl_text_encoder.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/step1x_connector.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/wan_video_animate_adapter.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/wan_video_dit.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/wan_video_image_encoder.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/wan_video_mot.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/wan_video_vace.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/wan_video_vae.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/wans2v_audio_encoder.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/z_image_dit.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/state_dict_converters/z_image_text_encoder.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/xfuser/__init__.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/utils/xfuser/xdit_context_parallel.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth/version.py +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth.egg-info/dependency_links.txt +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth.egg-info/requires.txt +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/diffsynth.egg-info/top_level.txt +0 -0
- {diffsynth-2.0.15 → diffsynth-2.0.17}/setup.cfg +0 -0
|
@@ -34,7 +34,11 @@ We believe that a well-developed open-source code framework can lower the thresh
|
|
|
34
34
|
|
|
35
35
|
> Currently, the development personnel of this project are limited, with most of the work handled by [Artiprocher](https://github.com/Artiprocher) and [mi804](https://github.com/mi804). Therefore, the progress of new feature development will be relatively slow, and the speed of responding to and resolving issues is limited. We apologize for this and ask developers to understand.
|
|
36
36
|
|
|
37
|
-
- **June
|
|
37
|
+
- **June 29, 2026** Boogu-Image open-sourced. Support includes text-to-image generation, image editing, low VRAM inference, and training capabilities. For details, please refer to the [documentation](/docs/en/Model_Details/Boogu-Image.md) and [example code](/examples/boogu_image/).
|
|
38
|
+
|
|
39
|
+
- **June 24, 2026** Krea-2 is now open-source, and we have provided full support. For more details, please refer to the [documentation](/docs/en/Model_Details/Krea-2.md) and [example code](/examples/krea2/).
|
|
40
|
+
|
|
41
|
+
- **June 16, 2026**: We have added a new Template model for ACE-Step: [vocals2music](https://www.modelscope.cn/models/DiffSynth-Studio/acestep15xlsft-vocals2music). For more details, please refer to the [documentation](/docs/en/Model_Details/ACE-Step.md) and [example code](/examples/ace_step/).
|
|
38
42
|
|
|
39
43
|
- **June 15, 2026** We have open-sourced Image-to-LoRA V2, compressing the hours-long training process for image style LoRAs into a single model inference step, thereby exploring a new paradigm for LoRA model training. The [technical report](https://arxiv.org/abs/2606.13809) has been released. This release includes three models:
|
|
40
44
|
* [DiffSynth-Studio/ZImage-i2L-v2](https://modelscope.cn/models/DiffSynth-Studio/ZImage-i2L-v2): Adapted for the Z-Image model
|
|
@@ -1042,6 +1046,123 @@ Example code for Ideogram 4 is available at: [/examples/ideogram4/](/examples/id
|
|
|
1042
1046
|
|
|
1043
1047
|
</details>
|
|
1044
1048
|
|
|
1049
|
+
#### Krea-2: [/docs/en/Model_Details/Krea-2.md](/docs/en/Model_Details/Krea-2.md)
|
|
1050
|
+
|
|
1051
|
+
<details>
|
|
1052
|
+
|
|
1053
|
+
<summary>Quick Start</summary>
|
|
1054
|
+
|
|
1055
|
+
Running the following code will quickly load the [krea/Krea-2-Raw](https://www.modelscope.cn/models/krea/Krea-2-Raw) model and perform inference. VRAM management is enabled, and the framework will automatically control the loading of model parameters based on available VRAM. The model can run with a minimum of 24GB VRAM.
|
|
1056
|
+
|
|
1057
|
+
```python
|
|
1058
|
+
from diffsynth.pipelines.krea2 import Krea2Pipeline, ModelConfig
|
|
1059
|
+
import torch
|
|
1060
|
+
|
|
1061
|
+
vram_config = {
|
|
1062
|
+
"offload_dtype": "disk",
|
|
1063
|
+
"offload_device": "disk",
|
|
1064
|
+
"onload_dtype": torch.float8_e4m3fn,
|
|
1065
|
+
"onload_device": "cpu",
|
|
1066
|
+
"preparing_dtype": torch.float8_e4m3fn,
|
|
1067
|
+
"preparing_device": "cuda",
|
|
1068
|
+
"computation_dtype": torch.bfloat16,
|
|
1069
|
+
"computation_device": "cuda",
|
|
1070
|
+
}
|
|
1071
|
+
pipe = Krea2Pipeline.from_pretrained(
|
|
1072
|
+
torch_dtype=torch.bfloat16,
|
|
1073
|
+
device="cuda",
|
|
1074
|
+
model_configs=[
|
|
1075
|
+
ModelConfig(model_id="krea/Krea-2-Raw", origin_file_pattern="raw.safetensors", **vram_config),
|
|
1076
|
+
ModelConfig(model_id="Qwen/Qwen3-VL-4B-Instruct", origin_file_pattern="*.safetensors", **vram_config),
|
|
1077
|
+
ModelConfig(model_id="Qwen/Qwen-Image", origin_file_pattern="vae/diffusion_pytorch_model.safetensors", **vram_config),
|
|
1078
|
+
],
|
|
1079
|
+
tokenizer_config=ModelConfig(model_id="Qwen/Qwen3-VL-4B-Instruct", origin_file_pattern=""),
|
|
1080
|
+
vram_limit=torch.cuda.mem_get_info("cuda")[1] / (1024 ** 3) - 1,
|
|
1081
|
+
)
|
|
1082
|
+
prompt = "A cat standing on a stone."
|
|
1083
|
+
image = pipe(prompt, seed=0, num_inference_steps=52, cfg_scale=4.5)
|
|
1084
|
+
image.save("image.jpg")
|
|
1085
|
+
```
|
|
1086
|
+
|
|
1087
|
+
</details>
|
|
1088
|
+
|
|
1089
|
+
<details>
|
|
1090
|
+
|
|
1091
|
+
<summary>Examples</summary>
|
|
1092
|
+
|
|
1093
|
+
Example code for Krea-2 is available at: [/examples/krea2/](/examples/krea2/)
|
|
1094
|
+
|
|
1095
|
+
| Model ID | Inference | Low VRAM Inference | Full Training | Full Training Validation | LoRA Training | LoRA Training Validation |
|
|
1096
|
+
|-|-|-|-|-|-|-|
|
|
1097
|
+
|[krea/Krea-2-Raw](https://www.modelscope.cn/models/krea/Krea-2-Raw)|[code](/examples/krea2/model_inference/Krea-2-Raw.py)|[code](/examples/krea2/model_inference_low_vram/Krea-2-Raw.py)|[code](/examples/krea2/model_training/full/Krea-2-Raw.sh)|[code](/examples/krea2/model_training/validate_full/Krea-2-Raw.py)|[code](/examples/krea2/model_training/lora/Krea-2-Raw.sh)|[code](/examples/krea2/model_training/validate_lora/Krea-2-Raw.py)|
|
|
1098
|
+
|[krea/Krea-2-Turbo](https://www.modelscope.cn/models/krea/Krea-2-Turbo)|[code](/examples/krea2/model_inference/Krea-2-Turbo.py)|[code](/examples/krea2/model_inference_low_vram/Krea-2-Turbo.py)|[code](/examples/krea2/model_training/full/Krea-2-Turbo.sh)|[code](/examples/krea2/model_training/validate_full/Krea-2-Turbo.py)|[code](/examples/krea2/model_training/lora/Krea-2-Turbo.sh)|[code](/examples/krea2/model_training/validate_lora/Krea-2-Turbo.py)|
|
|
1099
|
+
|
|
1100
|
+
</details>
|
|
1101
|
+
|
|
1102
|
+
#### Boogu-Image: [/docs/en/Model_Details/Boogu-Image.md](/docs/en/Model_Details/Boogu-Image.md)
|
|
1103
|
+
|
|
1104
|
+
<details>
|
|
1105
|
+
|
|
1106
|
+
<summary>Quick Start</summary>
|
|
1107
|
+
|
|
1108
|
+
Running the following code will quickly load the [Boogu/Boogu-Image-0.1-Base](https://modelscope.cn/models/Boogu/Boogu-Image-0.1-Base) model for inference. VRAM management is enabled, and the framework will automatically control the loading of model parameters based on available VRAM. The model can run with a minimum of 8GB VRAM.
|
|
1109
|
+
|
|
1110
|
+
```python
|
|
1111
|
+
from diffsynth.pipelines.boogu_image import BooguImagePipeline, ModelConfig
|
|
1112
|
+
import torch
|
|
1113
|
+
|
|
1114
|
+
|
|
1115
|
+
vram_config = {
|
|
1116
|
+
"offload_dtype": torch.float8_e4m3fn,
|
|
1117
|
+
"offload_device": "cpu",
|
|
1118
|
+
"onload_dtype": torch.float8_e4m3fn,
|
|
1119
|
+
"onload_device": "cpu",
|
|
1120
|
+
"preparing_dtype": torch.float8_e4m3fn,
|
|
1121
|
+
"preparing_device": "cuda",
|
|
1122
|
+
"computation_dtype": torch.bfloat16,
|
|
1123
|
+
"computation_device": "cuda",
|
|
1124
|
+
}
|
|
1125
|
+
|
|
1126
|
+
pipe = BooguImagePipeline.from_pretrained(
|
|
1127
|
+
torch_dtype=torch.bfloat16,
|
|
1128
|
+
device="cuda",
|
|
1129
|
+
model_configs=[
|
|
1130
|
+
ModelConfig(model_id="Boogu/Boogu-Image-0.1-Base", origin_file_pattern="transformer/*.safetensors", **vram_config),
|
|
1131
|
+
ModelConfig(model_id="Boogu/Boogu-Image-0.1-Base", origin_file_pattern="mllm/*.safetensors", **vram_config),
|
|
1132
|
+
ModelConfig(model_id="Boogu/Boogu-Image-0.1-Base", origin_file_pattern="vae/*.safetensors", **vram_config),
|
|
1133
|
+
],
|
|
1134
|
+
processor_config=ModelConfig(model_id="Boogu/Boogu-Image-0.1-Base", origin_file_pattern="mllm/"),
|
|
1135
|
+
vram_limit=torch.cuda.mem_get_info("cuda")[1] / (1024 ** 3) - 0.5,
|
|
1136
|
+
)
|
|
1137
|
+
|
|
1138
|
+
output = pipe(
|
|
1139
|
+
prompt="a cat",
|
|
1140
|
+
negative_prompt="",
|
|
1141
|
+
height=1024,
|
|
1142
|
+
width=1024,
|
|
1143
|
+
seed=42,
|
|
1144
|
+
num_inference_steps=50,
|
|
1145
|
+
cfg_scale=4.0,
|
|
1146
|
+
)
|
|
1147
|
+
output.save("image_Boogu-Image-0.1-Base.jpg")
|
|
1148
|
+
```
|
|
1149
|
+
|
|
1150
|
+
</details>
|
|
1151
|
+
|
|
1152
|
+
<details>
|
|
1153
|
+
|
|
1154
|
+
<summary>Examples</summary>
|
|
1155
|
+
|
|
1156
|
+
Example code for Boogu-Image is available at: [/examples/boogu_image/](/examples/boogu_image/)
|
|
1157
|
+
|
|
1158
|
+
|Model ID|Inference|Low VRAM Inference|Full Training|Full Training Validation|LoRA Training|LoRA Training Validation|
|
|
1159
|
+
|-|-|-|-|-|-|-|
|
|
1160
|
+
|[Boogu/Boogu-Image-0.1-Base](https://modelscope.cn/models/Boogu/Boogu-Image-0.1-Base)|[code](/examples/boogu_image/model_inference/Boogu-Image-0.1-Base.py)|[code](/examples/boogu_image/model_inference_low_vram/Boogu-Image-0.1-Base.py)|[code](/examples/boogu_image/model_training/full/Boogu-Image-0.1-Base.sh)|[code](/examples/boogu_image/model_training/validate_full/Boogu-Image-0.1-Base.py)|[code](/examples/boogu_image/model_training/lora/Boogu-Image-0.1-Base.sh)|[code](/examples/boogu_image/model_training/validate_lora/Boogu-Image-0.1-Base.py)|
|
|
1161
|
+
|[Boogu/Boogu-Image-0.1-Turbo](https://modelscope.cn/models/Boogu/Boogu-Image-0.1-Turbo)|[code](/examples/boogu_image/model_inference/Boogu-Image-0.1-Turbo.py)|[code](/examples/boogu_image/model_inference_low_vram/Boogu-Image-0.1-Turbo.py)|[code](/examples/boogu_image/model_training/full/Boogu-Image-0.1-Turbo.sh)|[code](/examples/boogu_image/model_training/validate_full/Boogu-Image-0.1-Turbo.py)|[code](/examples/boogu_image/model_training/lora/Boogu-Image-0.1-Turbo.sh)|[code](/examples/boogu_image/model_training/validate_lora/Boogu-Image-0.1-Turbo.py)|
|
|
1162
|
+
|[Boogu/Boogu-Image-0.1-Edit](https://modelscope.cn/models/Boogu/Boogu-Image-0.1-Edit)|[code](/examples/boogu_image/model_inference/Boogu-Image-0.1-Edit.py)|[code](/examples/boogu_image/model_inference_low_vram/Boogu-Image-0.1-Edit.py)|[code](/examples/boogu_image/model_training/full/Boogu-Image-0.1-Edit.sh)|[code](/examples/boogu_image/model_training/validate_full/Boogu-Image-0.1-Edit.py)|[code](/examples/boogu_image/model_training/lora/Boogu-Image-0.1-Edit.sh)|[code](/examples/boogu_image/model_training/validate_lora/Boogu-Image-0.1-Edit.py)|
|
|
1163
|
+
|
|
1164
|
+
</details>
|
|
1165
|
+
|
|
1045
1166
|
### Video Synthesis
|
|
1046
1167
|
|
|
1047
1168
|
https://github.com/user-attachments/assets/1d66ae74-3b02-40a9-acc3-ea95fc039314
|
|
@@ -1317,8 +1438,8 @@ Example code for Wan is available at: [/examples/wanvideo/](/examples/wanvideo/)
|
|
|
1317
1438
|
|[PAI/Wan2.2-Fun-A14B-Control-Camera](https://modelscope.cn/models/PAI/Wan2.2-Fun-A14B-Control-Camera)|`control_camera_video`, `input_image`|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/wanvideo/model_inference/Wan2.2-Fun-A14B-Control-Camera.py)|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/wanvideo/model_inference_low_vram/Wan2.2-Fun-A14B-Control-Camera.py)|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/wanvideo/model_training/full/Wan2.2-Fun-A14B-Control-Camera.sh)|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/wanvideo/model_training/validate_full/Wan2.2-Fun-A14B-Control-Camera.py)|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/wanvideo/model_training/lora/Wan2.2-Fun-A14B-Control-Camera.sh)|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/wanvideo/model_training/validate_lora/Wan2.2-Fun-A14B-Control-Camera.py)|
|
|
1318
1439
|
|[openmoss/MOVA-360p](https://modelscope.cn/models/openmoss/MOVA-360p)|`input_image`|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/mova/model_inference/MOVA-360p-I2AV.py)|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/mova/model_inference_low_vram/MOVA-360p-I2AV.py)|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/mova/model_training/full/MOVA-360P-I2AV.sh)|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/mova/model_training/validate_full/MOVA-360p-I2AV.py)|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/mova/model_training/lora/MOVA-360P-I2AV.sh)|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/mova/model_training/validate_lora/MOVA-360p-I2AV.py)|
|
|
1319
1440
|
|[openmoss/MOVA-720p](https://modelscope.cn/models/openmoss/MOVA-720p)|`input_image`|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/mova/model_inference/MOVA-720p-I2AV.py)|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/mova/model_inference_low_vram/MOVA-720p-I2AV.py)|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/mova/model_training/full/MOVA-720P-I2AV.sh)|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/mova/model_training/validate_full/MOVA-720p-I2AV.py)|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/mova/model_training/lora/MOVA-720P-I2AV.sh)|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/mova/model_training/validate_lora/MOVA-720p-I2AV.py)|
|
|
1320
|
-
|[Wan-AI/
|
|
1321
|
-
|[Wan-AI/
|
|
1441
|
+
|[Wan-AI/Wan-Dancer-14B (global model)](https://modelscope.cn/models/Wan-AI/Wan-Dancer-14B)|`wantodance_music_path`, `wantodance_reference_image`, `wantodance_fps`, `wantodance_keyframes`, `wantodance_keyframes_mask`|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/wanvideo/model_inference/Wan-Dancer-14B-global.py)|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/wanvideo/model_inference_low_vram/Wan-Dancer-14B-global.py)|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/wanvideo/model_training/full/Wan-Dancer-14B-global.sh)|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/wanvideo/model_training/validate_full/Wan-Dancer-14B-global.py)|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/wanvideo/model_training/lora/Wan-Dancer-14B-global.sh)|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/wanvideo/model_training/validate_lora/Wan-Dancer-14B-global.py)|
|
|
1442
|
+
|[Wan-AI/Wan-Dancer-14B (local model)](https://modelscope.cn/models/Wan-AI/Wan-Dancer-14B)|`wantodance_music_path`, `wantodance_reference_image`, `wantodance_fps`, `wantodance_keyframes`, `wantodance_keyframes_mask`|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/wanvideo/model_inference/Wan-Dancer-14B-local.py)|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/wanvideo/model_inference_low_vram/Wan-Dancer-14B-local.py)|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/wanvideo/model_training/full/Wan-Dancer-14B-local.sh)|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/wanvideo/model_training/validate_full/Wan-Dancer-14B-local.py)|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/wanvideo/model_training/lora/Wan-Dancer-14B-local.sh)|[code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/wanvideo/model_training/validate_lora/Wan-Dancer-14B-local.py)|
|
|
1322
1443
|
|
|
1323
1444
|
</details>
|
|
1324
1445
|
|
|
@@ -309,7 +309,7 @@ wan_series = [
|
|
|
309
309
|
"state_dict_converter": "diffsynth.utils.state_dict_converters.wans2v_audio_encoder.WanS2VAudioEncoderStateDictConverter",
|
|
310
310
|
},
|
|
311
311
|
{
|
|
312
|
-
# Example: ModelConfig(model_id="Wan-AI/
|
|
312
|
+
# Example: ModelConfig(model_id="Wan-AI/Wan-Dancer-14B", origin_file_pattern="global_model.safetensors")
|
|
313
313
|
"model_hash": "eb18873fc0ba77b541eb7b62dbcd2059",
|
|
314
314
|
"model_name": "wan_video_dit",
|
|
315
315
|
"model_class": "diffsynth.models.wan_video_dit.WanModel",
|
|
@@ -924,7 +924,119 @@ stable_diffusion_xl_series = [
|
|
|
924
924
|
"model_class": "diffsynth.models.stable_diffusion_xl_unet.SDXLUNet2DConditionModel",
|
|
925
925
|
"extra_kwargs": {"attention_head_dim": [5, 10, 20], "transformer_layers_per_block": [1, 2, 10], "use_linear_projection": True, "addition_embed_type": "text_time", "addition_time_embed_dim": 256, "projection_class_embeddings_input_dim": 2816},
|
|
926
926
|
"state_dict_converter": "diffsynth.utils.state_dict_converters.sdxl.SDXLUNetStateDictConverter_Original2Diffusers",
|
|
927
|
-
}
|
|
927
|
+
},
|
|
928
|
+
{
|
|
929
|
+
# Example: ModelConfig(model_id="stabilityai/stable-diffusion-xl-base-1.0", origin_file_pattern="sd_xl_base_1.0.safetensors")
|
|
930
|
+
"model_hash": "4cf64a799d04260df438c6f33c9a047e",
|
|
931
|
+
"model_name": "stable_diffusion_text_encoder",
|
|
932
|
+
"model_class": "diffsynth.models.stable_diffusion_text_encoder.SDTextEncoder",
|
|
933
|
+
"state_dict_converter": "diffsynth.utils.state_dict_converters.sdxl_text_encoder.SDXLTextEncoderStateDictConverter_Original2Diffusers",
|
|
934
|
+
},
|
|
935
|
+
{
|
|
936
|
+
# Example: ModelConfig(model_id="stabilityai/stable-diffusion-xl-base-1.0", origin_file_pattern="sd_xl_base_1.0.safetensors")
|
|
937
|
+
"model_hash": "4cf64a799d04260df438c6f33c9a047e",
|
|
938
|
+
"model_name": "stable_diffusion_xl_text_encoder",
|
|
939
|
+
"model_class": "diffsynth.models.stable_diffusion_xl_text_encoder.SDXLTextEncoder2",
|
|
940
|
+
"state_dict_converter": "diffsynth.utils.state_dict_converters.sdxl_text_encoder_2.SDXLTextEncoder2StateDictConverter_Original2Diffusers",
|
|
941
|
+
},
|
|
942
|
+
{
|
|
943
|
+
# Example: ModelConfig(model_id="stabilityai/stable-diffusion-xl-base-1.0", origin_file_pattern="sd_xl_base_1.0.safetensors")
|
|
944
|
+
"model_hash": "4cf64a799d04260df438c6f33c9a047e",
|
|
945
|
+
"model_name": "stable_diffusion_xl_vae",
|
|
946
|
+
"model_class": "diffsynth.models.stable_diffusion_vae.StableDiffusionVAE",
|
|
947
|
+
"state_dict_converter": "diffsynth.utils.state_dict_converters.sdxl_vae.SDXLVAEStateDictConverter_Original2Diffusers",
|
|
948
|
+
"extra_kwargs": {"scaling_factor": 0.13025, "sample_size": 1024, "force_upcast": True},
|
|
949
|
+
},
|
|
950
|
+
{
|
|
951
|
+
# Example: Non-mainstream format 1
|
|
952
|
+
"model_hash": "d34167ecd389f17d58f6c907b65173fa",
|
|
953
|
+
"model_name": "stable_diffusion_xl_unet",
|
|
954
|
+
"model_class": "diffsynth.models.stable_diffusion_xl_unet.SDXLUNet2DConditionModel",
|
|
955
|
+
"extra_kwargs": {"attention_head_dim": [5, 10, 20], "transformer_layers_per_block": [1, 2, 10], "use_linear_projection": True, "addition_embed_type": "text_time", "addition_time_embed_dim": 256, "projection_class_embeddings_input_dim": 2816},
|
|
956
|
+
"state_dict_converter": "diffsynth.utils.state_dict_converters.sdxl.SDXLUNetStateDictConverter_Original2Diffusers",
|
|
957
|
+
},
|
|
958
|
+
{
|
|
959
|
+
# Example: Non-mainstream format 1
|
|
960
|
+
"model_hash": "d34167ecd389f17d58f6c907b65173fa",
|
|
961
|
+
"model_name": "stable_diffusion_text_encoder",
|
|
962
|
+
"model_class": "diffsynth.models.stable_diffusion_text_encoder.SDTextEncoder",
|
|
963
|
+
"state_dict_converter": "diffsynth.utils.state_dict_converters.sdxl_text_encoder.SDXLTextEncoderStateDictConverter_Original2Diffusers",
|
|
964
|
+
},
|
|
965
|
+
{
|
|
966
|
+
# Example: Non-mainstream format 1
|
|
967
|
+
"model_hash": "d34167ecd389f17d58f6c907b65173fa",
|
|
968
|
+
"model_name": "stable_diffusion_xl_text_encoder",
|
|
969
|
+
"model_class": "diffsynth.models.stable_diffusion_xl_text_encoder.SDXLTextEncoder2",
|
|
970
|
+
"state_dict_converter": "diffsynth.utils.state_dict_converters.sdxl_text_encoder_2.SDXLTextEncoder2StateDictConverter_Original2Diffusers",
|
|
971
|
+
},
|
|
972
|
+
{
|
|
973
|
+
# Example: Non-mainstream format 1
|
|
974
|
+
"model_hash": "d34167ecd389f17d58f6c907b65173fa",
|
|
975
|
+
"model_name": "stable_diffusion_xl_vae",
|
|
976
|
+
"model_class": "diffsynth.models.stable_diffusion_vae.StableDiffusionVAE",
|
|
977
|
+
"state_dict_converter": "diffsynth.utils.state_dict_converters.sdxl_vae.SDXLVAEStateDictConverter_Original2Diffusers",
|
|
978
|
+
"extra_kwargs": {"scaling_factor": 0.13025, "sample_size": 1024, "force_upcast": True},
|
|
979
|
+
},
|
|
980
|
+
{
|
|
981
|
+
# Example: Non-mainstream format 2
|
|
982
|
+
"model_hash": "c906695c0d35ec8547ebdd70d2e6a19b",
|
|
983
|
+
"model_name": "stable_diffusion_xl_unet",
|
|
984
|
+
"model_class": "diffsynth.models.stable_diffusion_xl_unet.SDXLUNet2DConditionModel",
|
|
985
|
+
"extra_kwargs": {"attention_head_dim": [5, 10, 20], "transformer_layers_per_block": [1, 2, 10], "use_linear_projection": True, "addition_embed_type": "text_time", "addition_time_embed_dim": 256, "projection_class_embeddings_input_dim": 2816},
|
|
986
|
+
"state_dict_converter": "diffsynth.utils.state_dict_converters.sdxl.SDXLUNetStateDictConverter_Original2Diffusers",
|
|
987
|
+
},
|
|
988
|
+
{
|
|
989
|
+
# Example: Non-mainstream format 2
|
|
990
|
+
"model_hash": "c906695c0d35ec8547ebdd70d2e6a19b",
|
|
991
|
+
"model_name": "stable_diffusion_text_encoder",
|
|
992
|
+
"model_class": "diffsynth.models.stable_diffusion_text_encoder.SDTextEncoder",
|
|
993
|
+
"state_dict_converter": "diffsynth.utils.state_dict_converters.sdxl_text_encoder.SDXLTextEncoderStateDictConverter_Original2Diffusers",
|
|
994
|
+
},
|
|
995
|
+
{
|
|
996
|
+
# Example: Non-mainstream format 2
|
|
997
|
+
"model_hash": "c906695c0d35ec8547ebdd70d2e6a19b",
|
|
998
|
+
"model_name": "stable_diffusion_xl_text_encoder",
|
|
999
|
+
"model_class": "diffsynth.models.stable_diffusion_xl_text_encoder.SDXLTextEncoder2",
|
|
1000
|
+
"state_dict_converter": "diffsynth.utils.state_dict_converters.sdxl_text_encoder_2.SDXLTextEncoder2StateDictConverter_Original2Diffusers",
|
|
1001
|
+
},
|
|
1002
|
+
{
|
|
1003
|
+
# Example: Non-mainstream format 2
|
|
1004
|
+
"model_hash": "c906695c0d35ec8547ebdd70d2e6a19b",
|
|
1005
|
+
"model_name": "stable_diffusion_xl_vae",
|
|
1006
|
+
"model_class": "diffsynth.models.stable_diffusion_vae.StableDiffusionVAE",
|
|
1007
|
+
"state_dict_converter": "diffsynth.utils.state_dict_converters.sdxl_vae.SDXLVAEStateDictConverter_Original2Diffusers",
|
|
1008
|
+
"extra_kwargs": {"scaling_factor": 0.13025, "sample_size": 1024, "force_upcast": True},
|
|
1009
|
+
},
|
|
1010
|
+
{
|
|
1011
|
+
# Example: Non-mainstream format 3
|
|
1012
|
+
"model_hash": "1a9744a6f0c0e54ef40805c9d2b79ec6",
|
|
1013
|
+
"model_name": "stable_diffusion_xl_unet",
|
|
1014
|
+
"model_class": "diffsynth.models.stable_diffusion_xl_unet.SDXLUNet2DConditionModel",
|
|
1015
|
+
"extra_kwargs": {"attention_head_dim": [5, 10, 20], "transformer_layers_per_block": [1, 2, 10], "use_linear_projection": True, "addition_embed_type": "text_time", "addition_time_embed_dim": 256, "projection_class_embeddings_input_dim": 2816},
|
|
1016
|
+
"state_dict_converter": "diffsynth.utils.state_dict_converters.sdxl.SDXLUNetStateDictConverter_Original2Diffusers",
|
|
1017
|
+
},
|
|
1018
|
+
{
|
|
1019
|
+
# Example: Non-mainstream format 3
|
|
1020
|
+
"model_hash": "1a9744a6f0c0e54ef40805c9d2b79ec6",
|
|
1021
|
+
"model_name": "stable_diffusion_text_encoder",
|
|
1022
|
+
"model_class": "diffsynth.models.stable_diffusion_text_encoder.SDTextEncoder",
|
|
1023
|
+
"state_dict_converter": "diffsynth.utils.state_dict_converters.sdxl_text_encoder.SDXLTextEncoderStateDictConverter_Original2Diffusers",
|
|
1024
|
+
},
|
|
1025
|
+
{
|
|
1026
|
+
# Example: Non-mainstream format 3
|
|
1027
|
+
"model_hash": "1a9744a6f0c0e54ef40805c9d2b79ec6",
|
|
1028
|
+
"model_name": "stable_diffusion_xl_text_encoder",
|
|
1029
|
+
"model_class": "diffsynth.models.stable_diffusion_xl_text_encoder.SDXLTextEncoder2",
|
|
1030
|
+
"state_dict_converter": "diffsynth.utils.state_dict_converters.sdxl_text_encoder_2.SDXLTextEncoder2StateDictConverter_Original2Diffusers",
|
|
1031
|
+
},
|
|
1032
|
+
{
|
|
1033
|
+
# Example: Non-mainstream format 3
|
|
1034
|
+
"model_hash": "1a9744a6f0c0e54ef40805c9d2b79ec6",
|
|
1035
|
+
"model_name": "stable_diffusion_xl_vae",
|
|
1036
|
+
"model_class": "diffsynth.models.stable_diffusion_vae.StableDiffusionVAE",
|
|
1037
|
+
"state_dict_converter": "diffsynth.utils.state_dict_converters.sdxl_vae.SDXLVAEStateDictConverter_Original2Diffusers",
|
|
1038
|
+
"extra_kwargs": {"scaling_factor": 0.13025, "sample_size": 1024, "force_upcast": True},
|
|
1039
|
+
},
|
|
928
1040
|
]
|
|
929
1041
|
|
|
930
1042
|
stable_diffusion_series = [
|
|
@@ -967,6 +1079,15 @@ joyai_image_series = [
|
|
|
967
1079
|
},
|
|
968
1080
|
]
|
|
969
1081
|
|
|
1082
|
+
boogu_image_series = [
|
|
1083
|
+
{
|
|
1084
|
+
# Example: ModelConfig(model_id="Boogu/Boogu-Image-0.1-Base", origin_file_pattern="transformer/diffusion_pytorch_model-*.safetensors")
|
|
1085
|
+
"model_hash": "8e29d2d28b83530320ae1d2c5eb323b3",
|
|
1086
|
+
"model_name": "boogu_image_dit",
|
|
1087
|
+
"model_class": "diffsynth.models.boogu_image_dit.BooguImageDiT",
|
|
1088
|
+
},
|
|
1089
|
+
]
|
|
1090
|
+
|
|
970
1091
|
ace_step_series = [
|
|
971
1092
|
{
|
|
972
1093
|
# Example: ModelConfig(model_id="ACE-Step/Ace-Step1.5", origin_file_pattern="acestep-v15-turbo/model.safetensors")
|
|
@@ -1171,8 +1292,38 @@ ideogram4_series = [
|
|
|
1171
1292
|
},
|
|
1172
1293
|
]
|
|
1173
1294
|
|
|
1295
|
+
krea2_series = [
|
|
1296
|
+
{
|
|
1297
|
+
# Example: ModelConfig(model_id="AI-ModelScope/Krea-2", origin_file_pattern="raw.safetensors"),
|
|
1298
|
+
"model_hash": "4be51f0ecc9b9dfc9825abb3f7a0b4ae",
|
|
1299
|
+
"model_name": "krea2_dit",
|
|
1300
|
+
"model_class": "diffsynth.models.krea2_dit.SingleStreamDiT",
|
|
1301
|
+
"state_dict_converter": "diffsynth.utils.state_dict_converters.krea2_dit.Krea2DiTStateDictConverter",
|
|
1302
|
+
},
|
|
1303
|
+
{
|
|
1304
|
+
# Example: ModelConfig(model_id="krea/Krea-2-Raw", origin_file_pattern="raw.safetensors")
|
|
1305
|
+
"model_hash": "2a05e69084a6d608516ee47c8ad03334",
|
|
1306
|
+
"model_name": "krea2_dit",
|
|
1307
|
+
"model_class": "diffsynth.models.krea2_dit.SingleStreamDiT",
|
|
1308
|
+
},
|
|
1309
|
+
{
|
|
1310
|
+
# Example: ModelConfig(model_id="krea/Krea-2-Raw", origin_file_pattern="transformer/*.safetensors")
|
|
1311
|
+
"model_hash": "cddb3118d9f8250bf7b08c331c5c55aa",
|
|
1312
|
+
"model_name": "krea2_dit",
|
|
1313
|
+
"model_class": "diffsynth.models.krea2_dit.SingleStreamDiT",
|
|
1314
|
+
"state_dict_converter": "diffsynth.utils.state_dict_converters.krea2_dit.Krea2DiTStateDictConverter_Diffusers",
|
|
1315
|
+
},
|
|
1316
|
+
{
|
|
1317
|
+
# Example: ModelConfig(model_id="Qwen/Qwen3-VL-4B-Instruct", origin_file_pattern="*.safetensors")
|
|
1318
|
+
"model_hash": "b8750c24f732c87797f551196c4cef78",
|
|
1319
|
+
"model_name": "krea2_text_encoder",
|
|
1320
|
+
"model_class": "diffsynth.models.krea2_text_encoder.Krea2TextEncoder",
|
|
1321
|
+
"state_dict_converter": "diffsynth.utils.state_dict_converters.krea2_text_encoder.Krea2TextEncoderStateDictConverter",
|
|
1322
|
+
},
|
|
1323
|
+
]
|
|
1324
|
+
|
|
1174
1325
|
MODEL_CONFIGS = (
|
|
1175
1326
|
stable_diffusion_xl_series + stable_diffusion_series + qwen_image_series + wan_series + flux_series + flux2_series + ernie_image_series
|
|
1176
|
-
+ z_image_series + ltx2_series + anima_series + mova_series + joyai_image_series + ace_step_series + hidream_o1_image_series
|
|
1177
|
-
+ image_metrics_series + ideogram4_series
|
|
1327
|
+
+ z_image_series + ltx2_series + anima_series + mova_series + joyai_image_series + boogu_image_series + ace_step_series + hidream_o1_image_series
|
|
1328
|
+
+ image_metrics_series + ideogram4_series + krea2_series
|
|
1178
1329
|
)
|
|
@@ -295,6 +295,12 @@ VRAM_MANAGEMENT_MODULE_MAPS = {
|
|
|
295
295
|
"transformers.models.qwen3_vl.modeling_qwen3_vl.Qwen3VLTextRMSNorm": "diffsynth.core.vram.layers.AutoWrappedModule",
|
|
296
296
|
"transformers.models.qwen3_vl.modeling_qwen3_vl.Qwen3VLTextRotaryEmbedding": "diffsynth.core.vram.layers.AutoWrappedModule",
|
|
297
297
|
},
|
|
298
|
+
"diffsynth.models.boogu_image_dit.BooguImageDiT": {
|
|
299
|
+
"torch.nn.Linear": "diffsynth.core.vram.layers.AutoWrappedLinear",
|
|
300
|
+
"torch.nn.RMSNorm": "diffsynth.core.vram.layers.AutoWrappedModule",
|
|
301
|
+
"torch.nn.LayerNorm": "diffsynth.core.vram.layers.AutoWrappedModule",
|
|
302
|
+
"torch.nn.Embedding": "diffsynth.core.vram.layers.AutoWrappedModule",
|
|
303
|
+
},
|
|
298
304
|
"diffsynth.models.ace_step_dit.AceStepDiTModel": {
|
|
299
305
|
"diffsynth.models.ace_step_dit.AceStepDiTLayer": "diffsynth.core.vram.layers.AutoWrappedNonRecurseModule",
|
|
300
306
|
"torch.nn.Linear": "diffsynth.core.vram.layers.AutoWrappedLinear",
|
|
@@ -393,6 +399,18 @@ VRAM_MANAGEMENT_MODULE_MAPS = {
|
|
|
393
399
|
"transformers.models.qwen3_vl.modeling_qwen3_vl.Qwen3VLTextRotaryEmbedding": "diffsynth.core.vram.layers.AutoWrappedModule",
|
|
394
400
|
"transformers.models.qwen3_vl.modeling_qwen3_vl.Qwen3VLTextRMSNorm": "diffsynth.core.vram.layers.AutoWrappedModule",
|
|
395
401
|
},
|
|
402
|
+
"diffsynth.models.krea2_dit.SingleStreamDiT": {
|
|
403
|
+
"diffsynth.models.krea2_dit.RMSNorm": "diffsynth.core.vram.layers.AutoWrappedModule",
|
|
404
|
+
"torch.nn.Linear": "diffsynth.core.vram.layers.AutoWrappedLinear",
|
|
405
|
+
"diffsynth.models.krea2_dit.DoubleSharedModulation": "diffsynth.core.vram.layers.AutoWrappedModule",
|
|
406
|
+
"diffsynth.models.krea2_dit.SimpleModulation": "diffsynth.core.vram.layers.AutoWrappedModule",
|
|
407
|
+
},
|
|
408
|
+
"diffsynth.models.krea2_text_encoder.Krea2TextEncoder": {
|
|
409
|
+
"torch.nn.Linear": "diffsynth.core.vram.layers.AutoWrappedLinear",
|
|
410
|
+
"torch.nn.Embedding": "diffsynth.core.vram.layers.AutoWrappedModule",
|
|
411
|
+
"transformers.models.qwen3_vl.modeling_qwen3_vl.Qwen3VLTextRotaryEmbedding": "diffsynth.core.vram.layers.AutoWrappedModule",
|
|
412
|
+
"transformers.models.qwen3_vl.modeling_qwen3_vl.Qwen3VLTextRMSNorm": "diffsynth.core.vram.layers.AutoWrappedModule",
|
|
413
|
+
},
|
|
396
414
|
}
|
|
397
415
|
|
|
398
416
|
def QwenImageTextEncoder_Module_Map_Updater():
|
|
@@ -1,10 +1,32 @@
|
|
|
1
|
-
import math, warnings
|
|
1
|
+
import math, warnings, time
|
|
2
2
|
import torch, torchvision, imageio, os
|
|
3
3
|
import imageio.v3 as iio
|
|
4
|
+
import urllib.request
|
|
5
|
+
from io import BytesIO
|
|
4
6
|
from PIL import Image
|
|
5
7
|
from einops import repeat
|
|
6
8
|
|
|
7
9
|
|
|
10
|
+
def _is_url(path):
|
|
11
|
+
return isinstance(path, str) and path.startswith(("http://", "https://"))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def _load_image_from_url(url, timeout=30, max_retries=3):
|
|
15
|
+
request = urllib.request.Request(url, headers={"User-Agent": "Mozilla/5.0 (compatible; DiffSynth-Studio)"})
|
|
16
|
+
last_error = None
|
|
17
|
+
for attempt in range(max_retries):
|
|
18
|
+
try:
|
|
19
|
+
with urllib.request.urlopen(request, timeout=timeout) as response:
|
|
20
|
+
image = Image.open(BytesIO(response.read()))
|
|
21
|
+
image.load()
|
|
22
|
+
return image
|
|
23
|
+
except Exception as e:
|
|
24
|
+
last_error = e
|
|
25
|
+
if attempt < max_retries - 1:
|
|
26
|
+
time.sleep(2 ** attempt)
|
|
27
|
+
raise RuntimeError(f"Failed to load image from URL '{url}' after {max_retries} attempts: {last_error}") from last_error
|
|
28
|
+
|
|
29
|
+
|
|
8
30
|
class DataProcessingPipeline:
|
|
9
31
|
def __init__(self, operators=None):
|
|
10
32
|
self.operators: list[DataProcessingOperator] = [] if operators is None else operators
|
|
@@ -55,12 +77,17 @@ class ToStr(DataProcessingOperator):
|
|
|
55
77
|
|
|
56
78
|
|
|
57
79
|
class LoadImage(DataProcessingOperator):
|
|
58
|
-
def __init__(self, convert_RGB=True, convert_RGBA=False):
|
|
80
|
+
def __init__(self, convert_RGB=True, convert_RGBA=False, url_timeout=30, url_max_retries=3):
|
|
59
81
|
self.convert_RGB = convert_RGB
|
|
60
82
|
self.convert_RGBA = convert_RGBA
|
|
61
|
-
|
|
83
|
+
self.url_timeout = url_timeout
|
|
84
|
+
self.url_max_retries = url_max_retries
|
|
85
|
+
|
|
62
86
|
def __call__(self, data: str):
|
|
63
|
-
|
|
87
|
+
if _is_url(data):
|
|
88
|
+
image = _load_image_from_url(data, timeout=self.url_timeout, max_retries=self.url_max_retries)
|
|
89
|
+
else:
|
|
90
|
+
image = Image.open(data)
|
|
64
91
|
if self.convert_RGB: image = image.convert("RGB")
|
|
65
92
|
if self.convert_RGBA: image = image.convert("RGBA")
|
|
66
93
|
return image
|
|
@@ -242,6 +269,9 @@ class ToAbsolutePath(DataProcessingOperator):
|
|
|
242
269
|
self.base_path = base_path
|
|
243
270
|
|
|
244
271
|
def __call__(self, data):
|
|
272
|
+
# A remote URL is already absolute; joining it with base_path would corrupt it.
|
|
273
|
+
if _is_url(data):
|
|
274
|
+
return data
|
|
245
275
|
return os.path.join(self.base_path, data)
|
|
246
276
|
|
|
247
277
|
|