diffsynth 2.1.10__tar.gz → 2.1.12__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.1.10 → diffsynth-2.1.12}/PKG-INFO +9 -2
- {diffsynth-2.1.10 → diffsynth-2.1.12}/README.md +8 -1
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/configs/model_configs.py +11 -1
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/configs/vram_management_module_maps.py +8 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/core/quant/backends/entropack.py +40 -10
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/core/vram/layers.py +41 -4
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/diffusion/flow_match.py +19 -2
- diffsynth-2.1.12/diffsynth/models/fibo_dit.py +412 -0
- diffsynth-2.1.12/diffsynth/models/flux2_vae.py +335 -0
- diffsynth-2.1.12/diffsynth/pipelines/fibo.py +482 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/version.py +1 -1
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth.egg-info/PKG-INFO +9 -2
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth.egg-info/SOURCES.txt +2 -0
- diffsynth-2.1.10/diffsynth/models/flux2_vae.py +0 -2323
- {diffsynth-2.1.10 → diffsynth-2.1.12}/LICENSE +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/__init__.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/configs/__init__.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/core/__init__.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/core/attention/__init__.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/core/attention/attention.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/core/data/__init__.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/core/data/operators.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/core/data/unified_dataset.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/core/device/__init__.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/core/device/npu_compatible_device.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/core/gradient/__init__.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/core/gradient/gradient_checkpoint.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/core/loader/__init__.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/core/loader/config.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/core/loader/file.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/core/loader/model.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/core/npu_patch/npu_fused_operator.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/core/offload_training/__init__.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/core/offload_training/manager.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/core/offload_training/memory_buffer.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/core/offload_training/offloader.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/core/quant/__init__.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/core/quant/backends/__init__.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/core/quant/backends/bitsandbytes.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/core/quant/backends/comfy_kitchen.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/core/quant/backends/torchao.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/core/quant/base.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/core/quant/config.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/core/vram/__init__.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/core/vram/disk_map.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/core/vram/initialization.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/diffusion/__init__.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/diffusion/base_pipeline.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/diffusion/ddim_scheduler.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/diffusion/dmd2.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/diffusion/logger.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/diffusion/loss.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/diffusion/parsers.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/diffusion/runner.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/diffusion/template.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/diffusion/training_module.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/metrics/__init__.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/metrics/aesthetic.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/metrics/base.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/metrics/bioclip.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/metrics/clip.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/metrics/fid.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/metrics/hpsv2.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/metrics/hpsv3.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/metrics/image_reward.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/metrics/lpips.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/metrics/pickscore.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/metrics/qwen_image_bench.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/metrics/unified_reward_2.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/metrics/unified_reward_edit.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/ace_step_conditioner.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/ace_step_dit.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/ace_step_residual_fsq.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/ace_step_text_encoder.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/ace_step_tokenizer.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/ace_step_vae.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/aesthetic.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/anima_dit.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/bioclip.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/boogu_image_dit.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/clip.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/demucs.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/diffsynth_music_dit.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/dinov3_image_encoder.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/ernie_image_dit.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/ernie_image_text_encoder.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/fid.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/flux2_dit.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/flux2_text_encoder.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/flux3_dit.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/flux_controlnet.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/flux_dit.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/flux_infiniteyou.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/flux_ipadapter.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/flux_lora_encoder.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/flux_lora_patcher.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/flux_redux.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/flux_text_encoder_clip.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/flux_text_encoder_t5.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/flux_vae.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/flux_value_control.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/general_modules.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/hidream_common.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/hidream_o1_image_dit.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/hpsv2.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/hpsv3.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/ideogram4_dit.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/ideogram4_text_encoder.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/ideogram4_vae.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/image_reward.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/joyai_image_dit.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/krea2_dit.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/krea2_text_encoder.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/lingbot_video_dit.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/longcat_video_dit.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/lpips.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/ltx25_diffusion_video_vae.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/ltx25_duration_head.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/ltx25_text_encoder.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/ltx2_audio_vae.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/ltx2_common.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/ltx2_dit.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/ltx2_text_encoder.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/ltx2_upsampler.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/ltx2_video_vae.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/minimax_h3_audio_vae.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/minimax_h3_controlnet.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/minimax_h3_dit.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/minimax_h3_dit_comfy.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/minimax_h3_dit_vdn.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/minimax_h3_dit_vdn_fp8.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/minimax_h3_text_encoder.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/minimax_h3_video_vae.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/minimax_music3_condition_encoder.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/minimax_music3_dit.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/minimax_music3_rvq_depth_decoder.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/minimax_music3_text_encoder.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/minimax_music3_vocoder.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/model_loader.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/moss_image_dit.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/moss_image_text_encoder.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/mova_audio_dit.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/mova_audio_vae.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/mova_dual_tower_bridge.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/nexus_gen.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/nexus_gen_ar_model.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/nexus_gen_projector.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/pickscore.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/qwen_image_21_controlnet.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/qwen_image_21_dit.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/qwen_image_21_text_encoder.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/qwen_image_21_vae.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/qwen_image_bench.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/qwen_image_controlnet.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/qwen_image_dit.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/qwen_image_image2lora.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/qwen_image_text_encoder.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/qwen_image_vae.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/qwen_video_edit_dit.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/sd_text_encoder.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/sensenova_u1_common.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/sensenova_u1_dit.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/siglip2_image_encoder.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/stable_diffusion_text_encoder.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/stable_diffusion_unet.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/stable_diffusion_vae.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/stable_diffusion_xl_text_encoder.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/stable_diffusion_xl_unet.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/step1x_connector.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/step1x_text_encoder.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/unified_reward_2.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/unified_reward_edit.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/wan_animate_2_dit.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/wan_video_animate_adapter.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/wan_video_camera_controller.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/wan_video_dit.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/wan_video_dit_s2v.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/wan_video_image_encoder.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/wan_video_mot.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/wan_video_motion_controller.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/wan_video_text_encoder.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/wan_video_vace.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/wan_video_vae.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/wantodance.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/wav2vec.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/yue2_mot.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/yue2_tokenizer.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/yue2_vae.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/z_image_controlnet.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/z_image_dit.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/z_image_image2lora.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/models/z_image_text_encoder.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/pipelines/ace_step.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/pipelines/anima_image.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/pipelines/boogu_image.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/pipelines/diffsynth_music.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/pipelines/ernie_image.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/pipelines/flux2_image.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/pipelines/flux3_image.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/pipelines/flux_image.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/pipelines/hidream_o1_image.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/pipelines/ideogram4.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/pipelines/joyai_image.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/pipelines/krea2.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/pipelines/lingbot_video.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/pipelines/ltx2_audio_video.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/pipelines/minimax_h3_audio_video.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/pipelines/minimax_music3.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/pipelines/moss_image.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/pipelines/mova_audio_video.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/pipelines/qwen_image.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/pipelines/qwen_image_21.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/pipelines/qwen_video_edit.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/pipelines/sensenova_u1_image.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/pipelines/stable_diffusion.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/pipelines/stable_diffusion_xl.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/pipelines/wan_video.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/pipelines/yue2.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/pipelines/z_image.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/controlnet/__init__.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/controlnet/annotator.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/controlnet/controlnet_input.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/data/__init__.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/data/audio.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/data/audio_video.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/data/media_io_ltx2.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/data/minimax_h3.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/demucs/__init__.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/dequantizer/__init__.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/lora/__init__.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/lora/flux.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/lora/flux_timestep.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/lora/general.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/lora/krea2.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/lora/merge.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/lora/minimax_h3.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/lora/reset_rank.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/lora/sdxl.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/music_tools/__init__.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/music_tools/click.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/music_tools/prosody.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/quant/serialization.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/ses/__init__.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/ses/ses.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/state_dict_converters/__init__.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/state_dict_converters/ace_step_conditioner.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/state_dict_converters/ace_step_dit.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/state_dict_converters/ace_step_text_encoder.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/state_dict_converters/ace_step_tokenizer.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/state_dict_converters/anima_dit.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/state_dict_converters/dino_v3.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/state_dict_converters/ernie_image_text_encoder.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/state_dict_converters/flux2_text_encoder.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/state_dict_converters/flux3_dit.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/state_dict_converters/flux_controlnet.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/state_dict_converters/flux_dit.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/state_dict_converters/flux_infiniteyou.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/state_dict_converters/flux_ipadapter.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/state_dict_converters/flux_text_encoder_clip.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/state_dict_converters/flux_text_encoder_t5.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/state_dict_converters/flux_vae.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/state_dict_converters/ideogram4_text_encoder.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/state_dict_converters/image_metrics.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/state_dict_converters/krea2_dit.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/state_dict_converters/krea2_text_encoder.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/state_dict_converters/lingbot_video_dit.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/state_dict_converters/ltx25_diffusion_video_vae.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/state_dict_converters/ltx25_duration_head.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/state_dict_converters/ltx25_text_encoder.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/state_dict_converters/ltx2_audio_vae.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/state_dict_converters/ltx2_dit.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/state_dict_converters/ltx2_text_encoder.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/state_dict_converters/ltx2_video_vae.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/state_dict_converters/minimax_h3_audio_vae.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/state_dict_converters/minimax_h3_controlnet.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/state_dict_converters/minimax_h3_dit.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/state_dict_converters/minimax_h3_dit_vdn.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/state_dict_converters/minimax_h3_text_encoder.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/state_dict_converters/minimax_h3_video_vae.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/state_dict_converters/minimax_music3_text_encoder.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/state_dict_converters/moss_image_text_encoder.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/state_dict_converters/nexus_gen.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/state_dict_converters/nexus_gen_projector.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/state_dict_converters/qwen_image_21_text_encoder.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/state_dict_converters/qwen_image_text_encoder.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/state_dict_converters/qwen_video_edit.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/state_dict_converters/sdxl.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/state_dict_converters/sdxl_text_encoder.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/state_dict_converters/sdxl_text_encoder_2.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/state_dict_converters/sdxl_vae.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/state_dict_converters/stable_diffusion_text_encoder.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/state_dict_converters/stable_diffusion_vae.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/state_dict_converters/stable_diffusion_xl_text_encoder.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/state_dict_converters/step1x_connector.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/state_dict_converters/wan_video_animate_adapter.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/state_dict_converters/wan_video_dit.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/state_dict_converters/wan_video_image_encoder.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/state_dict_converters/wan_video_mot.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/state_dict_converters/wan_video_vace.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/state_dict_converters/wan_video_vae.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/state_dict_converters/wans2v_audio_encoder.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/state_dict_converters/z_image_dit.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/state_dict_converters/z_image_text_encoder.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/tile/__init__.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/tile/tile_worker.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/xfuser/__init__.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth/utils/xfuser/xdit_context_parallel.py +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth.egg-info/dependency_links.txt +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth.egg-info/requires.txt +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/diffsynth.egg-info/top_level.txt +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/pyproject.toml +0 -0
- {diffsynth-2.1.10 → diffsynth-2.1.12}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: diffsynth
|
|
3
|
-
Version: 2.1.
|
|
3
|
+
Version: 2.1.12
|
|
4
4
|
Summary: Enjoy the magic of Diffusion models!
|
|
5
5
|
Author: ModelScope Team
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -114,6 +114,8 @@ See also:
|
|
|
114
114
|
|
|
115
115
|
> 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.
|
|
116
116
|
|
|
117
|
+
- **October 21, 2026** We now support Fibo 2.0, including unified text-to-image and image editing inference, masked and multi-reference editing, text rendering, low VRAM inference, and full/LoRA training for both text-to-image and image editing on [Fibo-2.0-dev](https://www.modelscope.cn/models/briaai/Fibo-2.0-dev). See the [documentation](/docs/en/Model_Details/Fibo.md) and [example code](/examples/fibo/).
|
|
118
|
+
|
|
117
119
|
- **October 20, 2026** We now support MOSS-Image, including inference and training for [MOSS-Image-Base](https://modelscope.cn/models/openmoss/MOSS-Image-Base) and [MOSS-Image-SFT](https://modelscope.cn/models/openmoss/MOSS-Image-SFT). In addition, we provide an [EntroPack low-bit quantized model](https://www.modelscope.cn/models/DiffSynth-Studio/MOSS-Image-EntroPack), which can run the 3.5-bit quantized model with as little as 4 GB of VRAM; and an [accelerated model](https://modelscope.cn/models/DiffSynth-Studio/MOSS-Image-SFT-TurboLoRA) distillation-accelerated via [OPD training](https://diffsynth-studio-doc.readthedocs.io/en/latest/Training/Distillation.html), supporting 8-step ultra-fast inference.
|
|
118
120
|
|
|
119
121
|
- **October 16, 2026** flux-3-image-klein open-sourced, welcome a new member to the image model family! Support includes text-to-image generation, multi-reference editing, layout control, low VRAM inference, and Base training capabilities. For details, please refer to the [documentation](/docs/en/Model_Details/FLUX.3.md) and [example code](/examples/flux3/). We quantized the model with [EntroPack](https://github.com/modelscope/entropack), providing pre-quantized models in 3-bit, 4-bit, and 6-bit versions at [DiffSynth-Studio/flux-3-image-klein-entropack](https://www.modelscope.cn/models/DiffSynth-Studio/flux-3-image-klein-entropack).
|
|
@@ -124,7 +126,7 @@ See also:
|
|
|
124
126
|
|
|
125
127
|
* Project Page: https://github.com/modelscope/entropack
|
|
126
128
|
* Technical Report: https://arxiv.org/abs/2609.34185
|
|
127
|
-
* Pre-quantized Models: https://www.modelscope.cn/
|
|
129
|
+
* Pre-quantized Models: https://www.modelscope.cn/collections/DiffSynth-Studio/EntroPack-Quantized-Models
|
|
128
130
|
* Example Code: [Z-Image-Turbo](/examples/z_image/model_inference_low_vram/Z-Image-Turbo-EntroPack.py), [Qwen-Image-2.1](/examples/qwen_image_21/model_inference_low_vram/Qwen-Image-2.1-EntroPack.py), [MiniMax-H3](/examples/minimax_h3/model_inference_low_vram/MiniMax-H3-EntroPack.py), [LoRA Training Example](/examples/z_image/model_training/special/quant_training/Z-Image-Turbo-entropack_lossy_quant.sh)
|
|
129
131
|
|
|
130
132
|
- **September 20, 2026** Qwen-Image-2.1 was open-sourced. The model supports text-to-image generation, image editing, and RGBA output with a transparency channel. DiffSynth-Studio now provides full support for it. For details, please refer to the [documentation](/docs/zh/Model_Details/Qwen-Image-2.1.md) and [example code](/examples/qwen_image_21/).
|
|
@@ -402,6 +404,8 @@ Quick start: experience popular and the latest models:
|
|
|
402
404
|
|
|
403
405
|
| Architecture | Model ID | Inference | Low VRAM Inference | Full Training | Validation After Full Training | LoRA Training | Validation After LoRA Training |
|
|
404
406
|
|-|-|-|-|-|-|-|-|
|
|
407
|
+
| Fibo 2.0 | [briaai/Fibo-2.0-dev](https://www.modelscope.cn/models/briaai/Fibo-2.0-dev) | [code](/examples/fibo/model_inference/Fibo-2.0-dev.py) | [code](/examples/fibo/model_inference_low_vram/Fibo-2.0-dev.py) | [code](/examples/fibo/model_training/full/Fibo-2.0-dev-T2I.sh) | [code](/examples/fibo/model_training/validate_full/Fibo-2.0-dev-T2I.py) | [code](/examples/fibo/model_training/lora/Fibo-2.0-dev-T2I.sh) | [code](/examples/fibo/model_training/validate_lora/Fibo-2.0-dev-T2I.py) |
|
|
408
|
+
| Fibo 2.0 | [briaai/Fibo-2.0-edit-turbo](https://www.modelscope.cn/models/briaai/Fibo-2.0-edit-turbo) | [code](/examples/fibo/model_inference/Fibo-2.0-edit-turbo.py) | [code](/examples/fibo/model_inference_low_vram/Fibo-2.0-edit-turbo.py) | - | - | - | - |
|
|
405
409
|
| Qwen-Image-2.1 | [Qwen/Qwen-Image-2.1](https://www.modelscope.cn/models/Qwen/Qwen-Image-2.1) | [code](/examples/qwen_image_21/model_inference/Qwen-Image-2.1.py) | [code](/examples/qwen_image_21/model_inference_low_vram/Qwen-Image-2.1.py) | [code](/examples/qwen_image_21/model_training/full/Qwen-Image-2.1.sh) | [code](/examples/qwen_image_21/model_training/validate_full/Qwen-Image-2.1.py) | [code](/examples/qwen_image_21/model_training/lora/Qwen-Image-2.1.sh) | [code](/examples/qwen_image_21/model_training/validate_lora/Qwen-Image-2.1.py) |
|
|
406
410
|
| Qwen-Image-2.1 | [Qwen/Qwen-Image-2.1-Turbo](https://www.modelscope.cn/models/Qwen/Qwen-Image-2.1-Turbo) | [code](/examples/qwen_image_21/model_inference/Qwen-Image-2.1-Turbo.py) | [code](/examples/qwen_image_21/model_inference_low_vram/Qwen-Image-2.1-Turbo.py) | [code](/examples/qwen_image_21/model_training/full/Qwen-Image-2.1-Turbo.sh) | [code](/examples/qwen_image_21/model_training/validate_full/Qwen-Image-2.1-Turbo.py) | [code](/examples/qwen_image_21/model_training/lora/Qwen-Image-2.1-Turbo.sh) | [code](/examples/qwen_image_21/model_training/validate_lora/Qwen-Image-2.1-Turbo.py) |
|
|
407
411
|
| MiniMax-H3 | [MiniMax/MiniMax-H3: FL2VA](https://www.modelscope.cn/models/MiniMax/MiniMax-H3) | [code](/examples/minimax_h3/model_inference/MiniMax-H3-FL2VA.py) | [code](/examples/minimax_h3/model_inference_low_vram/MiniMax-H3-FL2VA.py) | [code](/examples/minimax_h3/model_training/full/MiniMax-H3-FL2VA.sh) | [code](/examples/minimax_h3/model_training/validate_full/MiniMax-H3-FL2VA.py) | [code](/examples/minimax_h3/model_training/lora/MiniMax-H3-FL2VA.sh) | [code](/examples/minimax_h3/model_training/validate_lora/MiniMax-H3-FL2VA.py) |
|
|
@@ -414,6 +418,7 @@ Quick start: experience popular and the latest models:
|
|
|
414
418
|
Model overview:
|
|
415
419
|
|
|
416
420
|
- Image generation
|
|
421
|
+
- Fibo 2.0: [Documentation](https://diffsynth-studio-doc.readthedocs.io/en/latest/Model_Details/Fibo.html), [Example code](/examples/fibo/)
|
|
417
422
|
- MOSS-Image: [Documentation](https://diffsynth-studio-doc.readthedocs.io/en/latest/Model_Details/MOSS-Image.html), [Example code](/examples/moss_image/)
|
|
418
423
|
- FLUX.3: [Documentation](https://diffsynth-studio-doc.readthedocs.io/en/latest/Model_Details/FLUX.3.html), [Example code](/examples/flux3/)
|
|
419
424
|
- Qwen-Image-2.1: [Documentation](https://diffsynth-studio-doc.readthedocs.io/en/latest/Model_Details/Qwen-Image-2.1.html), [Example code](/examples/qwen_image_21/)
|
|
@@ -702,6 +707,8 @@ https://github.com/Artiprocher/DiffSynth-Studio/assets/35051019/59fb2f7b-8de0-44
|
|
|
702
707
|
|
|
703
708
|
| Architecture | Model ID | Inference | Low VRAM Inference | Full Training | Validation After Full Training | LoRA Training | Validation After LoRA Training |
|
|
704
709
|
|-|-|-|-|-|-|-|-|
|
|
710
|
+
| Fibo 2.0 | [briaai/Fibo-2.0-dev](https://www.modelscope.cn/models/briaai/Fibo-2.0-dev) | [code](/examples/fibo/model_inference/Fibo-2.0-dev.py) | [code](/examples/fibo/model_inference_low_vram/Fibo-2.0-dev.py) | [code](/examples/fibo/model_training/full/Fibo-2.0-dev-T2I.sh) | [code](/examples/fibo/model_training/validate_full/Fibo-2.0-dev-T2I.py) | [code](/examples/fibo/model_training/lora/Fibo-2.0-dev-T2I.sh) | [code](/examples/fibo/model_training/validate_lora/Fibo-2.0-dev-T2I.py) |
|
|
711
|
+
| Fibo 2.0 | [briaai/Fibo-2.0-edit-turbo](https://www.modelscope.cn/models/briaai/Fibo-2.0-edit-turbo) | [code](/examples/fibo/model_inference/Fibo-2.0-edit-turbo.py) | [code](/examples/fibo/model_inference_low_vram/Fibo-2.0-edit-turbo.py) | - | - | - | - |
|
|
705
712
|
| MOSS-Image | [openmoss/MOSS-Image-Base](https://www.modelscope.cn/models/openmoss/MOSS-Image-Base) | [code](/examples/moss_image/model_inference/MOSS-Image-Base.py) | [code](/examples/moss_image/model_inference_low_vram/MOSS-Image-Base.py) | [code](/examples/moss_image/model_training/full/MOSS-Image-Base.sh) | [code](/examples/moss_image/model_training/validate_full/MOSS-Image-Base.py) | [code](/examples/moss_image/model_training/lora/MOSS-Image-Base.sh) | [code](/examples/moss_image/model_training/validate_lora/MOSS-Image-Base.py) |
|
|
706
713
|
| MOSS-Image | [openmoss/MOSS-Image-SFT](https://www.modelscope.cn/models/openmoss/MOSS-Image-SFT) | [code](/examples/moss_image/model_inference/MOSS-Image-SFT.py) | [code](/examples/moss_image/model_inference_low_vram/MOSS-Image-SFT.py) | [code](/examples/moss_image/model_training/full/MOSS-Image-SFT.sh) | [code](/examples/moss_image/model_training/validate_full/MOSS-Image-SFT.py) | [code](/examples/moss_image/model_training/lora/MOSS-Image-SFT.sh) | [code](/examples/moss_image/model_training/validate_lora/MOSS-Image-SFT.py) |
|
|
707
714
|
| MOSS-Image | [DiffSynth-Studio/MOSS-Image-EntroPack](https://www.modelscope.cn/models/DiffSynth-Studio/MOSS-Image-EntroPack) | [code](/examples/moss_image/model_inference/MOSS-Image-EntroPack.py) | [code](/examples/moss_image/model_inference_low_vram/MOSS-Image-EntroPack.py) | - | - | [code](/examples/moss_image/model_training/lora/MOSS-Image-entropack.sh) | [code](/examples/moss_image/model_training/validate_lora/MOSS-Image-entropack.py) |
|
|
@@ -41,6 +41,8 @@ See also:
|
|
|
41
41
|
|
|
42
42
|
> 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.
|
|
43
43
|
|
|
44
|
+
- **October 21, 2026** We now support Fibo 2.0, including unified text-to-image and image editing inference, masked and multi-reference editing, text rendering, low VRAM inference, and full/LoRA training for both text-to-image and image editing on [Fibo-2.0-dev](https://www.modelscope.cn/models/briaai/Fibo-2.0-dev). See the [documentation](/docs/en/Model_Details/Fibo.md) and [example code](/examples/fibo/).
|
|
45
|
+
|
|
44
46
|
- **October 20, 2026** We now support MOSS-Image, including inference and training for [MOSS-Image-Base](https://modelscope.cn/models/openmoss/MOSS-Image-Base) and [MOSS-Image-SFT](https://modelscope.cn/models/openmoss/MOSS-Image-SFT). In addition, we provide an [EntroPack low-bit quantized model](https://www.modelscope.cn/models/DiffSynth-Studio/MOSS-Image-EntroPack), which can run the 3.5-bit quantized model with as little as 4 GB of VRAM; and an [accelerated model](https://modelscope.cn/models/DiffSynth-Studio/MOSS-Image-SFT-TurboLoRA) distillation-accelerated via [OPD training](https://diffsynth-studio-doc.readthedocs.io/en/latest/Training/Distillation.html), supporting 8-step ultra-fast inference.
|
|
45
47
|
|
|
46
48
|
- **October 16, 2026** flux-3-image-klein open-sourced, welcome a new member to the image model family! Support includes text-to-image generation, multi-reference editing, layout control, low VRAM inference, and Base training capabilities. For details, please refer to the [documentation](/docs/en/Model_Details/FLUX.3.md) and [example code](/examples/flux3/). We quantized the model with [EntroPack](https://github.com/modelscope/entropack), providing pre-quantized models in 3-bit, 4-bit, and 6-bit versions at [DiffSynth-Studio/flux-3-image-klein-entropack](https://www.modelscope.cn/models/DiffSynth-Studio/flux-3-image-klein-entropack).
|
|
@@ -51,7 +53,7 @@ See also:
|
|
|
51
53
|
|
|
52
54
|
* Project Page: https://github.com/modelscope/entropack
|
|
53
55
|
* Technical Report: https://arxiv.org/abs/2609.34185
|
|
54
|
-
* Pre-quantized Models: https://www.modelscope.cn/
|
|
56
|
+
* Pre-quantized Models: https://www.modelscope.cn/collections/DiffSynth-Studio/EntroPack-Quantized-Models
|
|
55
57
|
* Example Code: [Z-Image-Turbo](/examples/z_image/model_inference_low_vram/Z-Image-Turbo-EntroPack.py), [Qwen-Image-2.1](/examples/qwen_image_21/model_inference_low_vram/Qwen-Image-2.1-EntroPack.py), [MiniMax-H3](/examples/minimax_h3/model_inference_low_vram/MiniMax-H3-EntroPack.py), [LoRA Training Example](/examples/z_image/model_training/special/quant_training/Z-Image-Turbo-entropack_lossy_quant.sh)
|
|
56
58
|
|
|
57
59
|
- **September 20, 2026** Qwen-Image-2.1 was open-sourced. The model supports text-to-image generation, image editing, and RGBA output with a transparency channel. DiffSynth-Studio now provides full support for it. For details, please refer to the [documentation](/docs/zh/Model_Details/Qwen-Image-2.1.md) and [example code](/examples/qwen_image_21/).
|
|
@@ -329,6 +331,8 @@ Quick start: experience popular and the latest models:
|
|
|
329
331
|
|
|
330
332
|
| Architecture | Model ID | Inference | Low VRAM Inference | Full Training | Validation After Full Training | LoRA Training | Validation After LoRA Training |
|
|
331
333
|
|-|-|-|-|-|-|-|-|
|
|
334
|
+
| Fibo 2.0 | [briaai/Fibo-2.0-dev](https://www.modelscope.cn/models/briaai/Fibo-2.0-dev) | [code](/examples/fibo/model_inference/Fibo-2.0-dev.py) | [code](/examples/fibo/model_inference_low_vram/Fibo-2.0-dev.py) | [code](/examples/fibo/model_training/full/Fibo-2.0-dev-T2I.sh) | [code](/examples/fibo/model_training/validate_full/Fibo-2.0-dev-T2I.py) | [code](/examples/fibo/model_training/lora/Fibo-2.0-dev-T2I.sh) | [code](/examples/fibo/model_training/validate_lora/Fibo-2.0-dev-T2I.py) |
|
|
335
|
+
| Fibo 2.0 | [briaai/Fibo-2.0-edit-turbo](https://www.modelscope.cn/models/briaai/Fibo-2.0-edit-turbo) | [code](/examples/fibo/model_inference/Fibo-2.0-edit-turbo.py) | [code](/examples/fibo/model_inference_low_vram/Fibo-2.0-edit-turbo.py) | - | - | - | - |
|
|
332
336
|
| Qwen-Image-2.1 | [Qwen/Qwen-Image-2.1](https://www.modelscope.cn/models/Qwen/Qwen-Image-2.1) | [code](/examples/qwen_image_21/model_inference/Qwen-Image-2.1.py) | [code](/examples/qwen_image_21/model_inference_low_vram/Qwen-Image-2.1.py) | [code](/examples/qwen_image_21/model_training/full/Qwen-Image-2.1.sh) | [code](/examples/qwen_image_21/model_training/validate_full/Qwen-Image-2.1.py) | [code](/examples/qwen_image_21/model_training/lora/Qwen-Image-2.1.sh) | [code](/examples/qwen_image_21/model_training/validate_lora/Qwen-Image-2.1.py) |
|
|
333
337
|
| Qwen-Image-2.1 | [Qwen/Qwen-Image-2.1-Turbo](https://www.modelscope.cn/models/Qwen/Qwen-Image-2.1-Turbo) | [code](/examples/qwen_image_21/model_inference/Qwen-Image-2.1-Turbo.py) | [code](/examples/qwen_image_21/model_inference_low_vram/Qwen-Image-2.1-Turbo.py) | [code](/examples/qwen_image_21/model_training/full/Qwen-Image-2.1-Turbo.sh) | [code](/examples/qwen_image_21/model_training/validate_full/Qwen-Image-2.1-Turbo.py) | [code](/examples/qwen_image_21/model_training/lora/Qwen-Image-2.1-Turbo.sh) | [code](/examples/qwen_image_21/model_training/validate_lora/Qwen-Image-2.1-Turbo.py) |
|
|
334
338
|
| MiniMax-H3 | [MiniMax/MiniMax-H3: FL2VA](https://www.modelscope.cn/models/MiniMax/MiniMax-H3) | [code](/examples/minimax_h3/model_inference/MiniMax-H3-FL2VA.py) | [code](/examples/minimax_h3/model_inference_low_vram/MiniMax-H3-FL2VA.py) | [code](/examples/minimax_h3/model_training/full/MiniMax-H3-FL2VA.sh) | [code](/examples/minimax_h3/model_training/validate_full/MiniMax-H3-FL2VA.py) | [code](/examples/minimax_h3/model_training/lora/MiniMax-H3-FL2VA.sh) | [code](/examples/minimax_h3/model_training/validate_lora/MiniMax-H3-FL2VA.py) |
|
|
@@ -341,6 +345,7 @@ Quick start: experience popular and the latest models:
|
|
|
341
345
|
Model overview:
|
|
342
346
|
|
|
343
347
|
- Image generation
|
|
348
|
+
- Fibo 2.0: [Documentation](https://diffsynth-studio-doc.readthedocs.io/en/latest/Model_Details/Fibo.html), [Example code](/examples/fibo/)
|
|
344
349
|
- MOSS-Image: [Documentation](https://diffsynth-studio-doc.readthedocs.io/en/latest/Model_Details/MOSS-Image.html), [Example code](/examples/moss_image/)
|
|
345
350
|
- FLUX.3: [Documentation](https://diffsynth-studio-doc.readthedocs.io/en/latest/Model_Details/FLUX.3.html), [Example code](/examples/flux3/)
|
|
346
351
|
- Qwen-Image-2.1: [Documentation](https://diffsynth-studio-doc.readthedocs.io/en/latest/Model_Details/Qwen-Image-2.1.html), [Example code](/examples/qwen_image_21/)
|
|
@@ -629,6 +634,8 @@ https://github.com/Artiprocher/DiffSynth-Studio/assets/35051019/59fb2f7b-8de0-44
|
|
|
629
634
|
|
|
630
635
|
| Architecture | Model ID | Inference | Low VRAM Inference | Full Training | Validation After Full Training | LoRA Training | Validation After LoRA Training |
|
|
631
636
|
|-|-|-|-|-|-|-|-|
|
|
637
|
+
| Fibo 2.0 | [briaai/Fibo-2.0-dev](https://www.modelscope.cn/models/briaai/Fibo-2.0-dev) | [code](/examples/fibo/model_inference/Fibo-2.0-dev.py) | [code](/examples/fibo/model_inference_low_vram/Fibo-2.0-dev.py) | [code](/examples/fibo/model_training/full/Fibo-2.0-dev-T2I.sh) | [code](/examples/fibo/model_training/validate_full/Fibo-2.0-dev-T2I.py) | [code](/examples/fibo/model_training/lora/Fibo-2.0-dev-T2I.sh) | [code](/examples/fibo/model_training/validate_lora/Fibo-2.0-dev-T2I.py) |
|
|
638
|
+
| Fibo 2.0 | [briaai/Fibo-2.0-edit-turbo](https://www.modelscope.cn/models/briaai/Fibo-2.0-edit-turbo) | [code](/examples/fibo/model_inference/Fibo-2.0-edit-turbo.py) | [code](/examples/fibo/model_inference_low_vram/Fibo-2.0-edit-turbo.py) | - | - | - | - |
|
|
632
639
|
| MOSS-Image | [openmoss/MOSS-Image-Base](https://www.modelscope.cn/models/openmoss/MOSS-Image-Base) | [code](/examples/moss_image/model_inference/MOSS-Image-Base.py) | [code](/examples/moss_image/model_inference_low_vram/MOSS-Image-Base.py) | [code](/examples/moss_image/model_training/full/MOSS-Image-Base.sh) | [code](/examples/moss_image/model_training/validate_full/MOSS-Image-Base.py) | [code](/examples/moss_image/model_training/lora/MOSS-Image-Base.sh) | [code](/examples/moss_image/model_training/validate_lora/MOSS-Image-Base.py) |
|
|
633
640
|
| MOSS-Image | [openmoss/MOSS-Image-SFT](https://www.modelscope.cn/models/openmoss/MOSS-Image-SFT) | [code](/examples/moss_image/model_inference/MOSS-Image-SFT.py) | [code](/examples/moss_image/model_inference_low_vram/MOSS-Image-SFT.py) | [code](/examples/moss_image/model_training/full/MOSS-Image-SFT.sh) | [code](/examples/moss_image/model_training/validate_full/MOSS-Image-SFT.py) | [code](/examples/moss_image/model_training/lora/MOSS-Image-SFT.sh) | [code](/examples/moss_image/model_training/validate_lora/MOSS-Image-SFT.py) |
|
|
634
641
|
| MOSS-Image | [DiffSynth-Studio/MOSS-Image-EntroPack](https://www.modelscope.cn/models/DiffSynth-Studio/MOSS-Image-EntroPack) | [code](/examples/moss_image/model_inference/MOSS-Image-EntroPack.py) | [code](/examples/moss_image/model_inference_low_vram/MOSS-Image-EntroPack.py) | - | - | [code](/examples/moss_image/model_training/lora/MOSS-Image-entropack.sh) | [code](/examples/moss_image/model_training/validate_lora/MOSS-Image-entropack.py) |
|
|
@@ -1843,9 +1843,19 @@ flux3_series = [
|
|
|
1843
1843
|
},
|
|
1844
1844
|
]
|
|
1845
1845
|
|
|
1846
|
+
fibo_series = [
|
|
1847
|
+
{
|
|
1848
|
+
# Example: ModelConfig(model_id="briaai/Fibo-2.0-dev", origin_file_pattern="transformer/*.safetensors")
|
|
1849
|
+
# Example: ModelConfig(model_id="briaai/Fibo-2.0-edit-turbo", origin_file_pattern="transformer/*.safetensors")
|
|
1850
|
+
"model_hash": "39f09f95705fd6d9b20670f1923d3c12",
|
|
1851
|
+
"model_name": "fibo_dit",
|
|
1852
|
+
"model_class": "diffsynth.models.fibo_dit.FiboDiT",
|
|
1853
|
+
},
|
|
1854
|
+
]
|
|
1855
|
+
|
|
1846
1856
|
MODEL_CONFIGS = (
|
|
1847
1857
|
stable_diffusion_xl_series + stable_diffusion_series + qwen_image_series + qwen_video_edit_series + wan_series + flux_series + flux2_series + ernie_image_series
|
|
1848
1858
|
+ z_image_series + ltx2_series + anima_series + mova_series + joyai_image_series + boogu_image_series + ace_step_series + hidream_o1_image_series
|
|
1849
1859
|
+ image_metrics_series + ideogram4_series + krea2_series + lingbot_video_series + minimax_h3_series + minimax_music3_series + sensenova_u1_series
|
|
1850
|
-
+ yue2_series + qwen_image_21_series + flux3_series + moss_image_series
|
|
1860
|
+
+ yue2_series + qwen_image_21_series + flux3_series + moss_image_series + fibo_series
|
|
1851
1861
|
)
|
|
@@ -256,6 +256,14 @@ VRAM_MANAGEMENT_MODULE_MAPS = {
|
|
|
256
256
|
"torch.nn.Linear": "diffsynth.core.vram.layers.AutoWrappedLinear",
|
|
257
257
|
"torch.nn.Conv2d": "diffsynth.core.vram.layers.AutoWrappedModule",
|
|
258
258
|
"torch.nn.GroupNorm": "diffsynth.core.vram.layers.AutoWrappedModule",
|
|
259
|
+
"diffsynth.models.flux2_vae.Flux2VAELatentNorm": "diffsynth.core.vram.layers.AutoWrappedModule",
|
|
260
|
+
},
|
|
261
|
+
"diffsynth.models.fibo_dit.FiboDiT": {
|
|
262
|
+
"torch.nn.Linear": "diffsynth.core.vram.layers.AutoWrappedLinear",
|
|
263
|
+
"diffsynth.models.general_modules.RMSNorm": "diffsynth.core.vram.layers.AutoWrappedModule",
|
|
264
|
+
"torch.nn.LayerNorm": "diffsynth.core.vram.layers.AutoWrappedModule",
|
|
265
|
+
"diffsynth.models.fibo_dit.FiboPerceiverResampler": "diffsynth.core.vram.layers.AutoWrappedModule",
|
|
266
|
+
"diffsynth.models.fibo_dit.FiboTransformerBlock": "diffsynth.core.vram.layers.AutoWrappedModule",
|
|
259
267
|
},
|
|
260
268
|
"diffsynth.models.z_image_text_encoder.ZImageTextEncoder": {
|
|
261
269
|
"torch.nn.Linear": "diffsynth.core.vram.layers.AutoWrappedLinear",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from dataclasses import dataclass
|
|
1
|
+
from dataclasses import dataclass, fields
|
|
2
2
|
|
|
3
3
|
import torch
|
|
4
4
|
|
|
@@ -45,15 +45,20 @@ if ENTROPACK_AVAILABLE:
|
|
|
45
45
|
@dataclass
|
|
46
46
|
class EntroPackINT8CodedConfig(BackendConfig, ep.LatticeRANSConfig):
|
|
47
47
|
linear_cls = ep.CompressedINT8Linear
|
|
48
|
+
use_convrot: bool = False
|
|
49
|
+
convrot_groupsize: int = 256
|
|
48
50
|
|
|
49
51
|
@dataclass
|
|
50
52
|
class EntroPackINT8RawConfig(BackendConfig, ep.RawConfig):
|
|
51
53
|
linear_cls = ep.CompressedINT8Linear
|
|
54
|
+
use_convrot: bool = False
|
|
55
|
+
convrot_groupsize: int = 256
|
|
52
56
|
|
|
53
57
|
|
|
54
|
-
def
|
|
55
|
-
|
|
56
|
-
|
|
58
|
+
def _patch_compile_graph_breaks():
|
|
59
|
+
for cls in (ep.CompressedLinear, ep.CompressedFP8Linear, ep.CompressedINT8Linear):
|
|
60
|
+
if not getattr(cls.forward, "_torchdynamo_disable", False):
|
|
61
|
+
cls.forward = torch._dynamo.disable(cls.forward)
|
|
57
62
|
|
|
58
63
|
|
|
59
64
|
@register_quant_backend("entropack")
|
|
@@ -70,6 +75,7 @@ class EntroPackQuantBackend(QuantBackend):
|
|
|
70
75
|
'`pip install "entropack[cuda13]"` (use `cuda12` for a CUDA 12 environment) '
|
|
71
76
|
'or `pip install "diffsynth[quant]"`.'
|
|
72
77
|
) from _ENTROPACK_IMPORT_ERROR
|
|
78
|
+
_patch_compile_graph_breaks()
|
|
73
79
|
|
|
74
80
|
def capabilities(self):
|
|
75
81
|
return {
|
|
@@ -85,20 +91,44 @@ class EntroPackQuantBackend(QuantBackend):
|
|
|
85
91
|
def unflatten_state_dict(self, state_dict, metadata):
|
|
86
92
|
return state_dict
|
|
87
93
|
|
|
94
|
+
def _compression_config_cls(self):
|
|
95
|
+
for cls in type(self.config).__mro__:
|
|
96
|
+
if cls.__module__.startswith("entropack") and issubclass(cls, ep.CompressionConfig):
|
|
97
|
+
return cls
|
|
98
|
+
return None
|
|
99
|
+
|
|
100
|
+
def _compression_config(self):
|
|
101
|
+
cls = self._compression_config_cls()
|
|
102
|
+
if cls is None:
|
|
103
|
+
return self.config
|
|
104
|
+
names = {field.name for field in fields(cls) if field.init}
|
|
105
|
+
return cls(**{name: getattr(self.config, name) for name in names})
|
|
106
|
+
|
|
107
|
+
def linear_spec_configs(self):
|
|
108
|
+
cls = self._compression_config_cls()
|
|
109
|
+
if cls is None:
|
|
110
|
+
return {}
|
|
111
|
+
compression = {field.name for field in fields(cls)}
|
|
112
|
+
return {
|
|
113
|
+
field.name: getattr(self.config, field.name)
|
|
114
|
+
for field in fields(self.config)
|
|
115
|
+
if field.init and field.name not in compression
|
|
116
|
+
}
|
|
117
|
+
|
|
88
118
|
def create_quantized_linear(self, linear, compute_device=None, model_device=None):
|
|
89
119
|
linear.requires_grad_(False)
|
|
90
120
|
if compute_device is not None:
|
|
91
121
|
linear = linear.to(device=compute_device)
|
|
92
|
-
quantized = self.config.linear_cls.from_linear(
|
|
93
|
-
|
|
94
|
-
|
|
122
|
+
quantized = self.config.linear_cls.from_linear(
|
|
123
|
+
linear, config=self._compression_config(), **self.linear_spec_configs(),
|
|
124
|
+
)
|
|
125
|
+
return quantized if model_device is None else quantized.to(device=model_device)
|
|
95
126
|
|
|
96
127
|
def create_quantized_linear_shell(self, linear, compute_dtype):
|
|
97
|
-
|
|
128
|
+
return self.config.linear_cls(
|
|
98
129
|
linear.in_features, linear.out_features, bias=linear.bias is not None,
|
|
99
|
-
dtype=compute_dtype, config=self.
|
|
130
|
+
dtype=compute_dtype, config=self._compression_config(), **self.linear_spec_configs(),
|
|
100
131
|
)
|
|
101
|
-
return _graph_break_quantized_linear(shell)
|
|
102
132
|
|
|
103
133
|
def dequantize_to_linear(self, module, compute_dtype, compute_device=None, model_device=None):
|
|
104
134
|
if compute_device is not None:
|
|
@@ -246,10 +246,33 @@ class AutoWrappedNonRecurseModule(AutoWrappedModule):
|
|
|
246
246
|
if self.disk_offload:
|
|
247
247
|
self.required_params = [name for name, _ in self.module.named_parameters(recurse=False)]
|
|
248
248
|
|
|
249
|
+
def _copy_with_shared_children(self, module):
|
|
250
|
+
# Child wrappers own their DiskMap and devices; share them instead of copying.
|
|
251
|
+
shared = {id(child): child for child in module.modules() if isinstance(child, AutoTorchModule)}
|
|
252
|
+
return copy.deepcopy(module, shared), set(shared)
|
|
253
|
+
|
|
254
|
+
def _detach_shared_children(self, module, shared_ids):
|
|
255
|
+
detached = []
|
|
256
|
+
for parent in list(module.modules()):
|
|
257
|
+
if isinstance(parent, AutoTorchModule):
|
|
258
|
+
continue
|
|
259
|
+
original = parent._modules
|
|
260
|
+
filtered = type(original)(
|
|
261
|
+
(name, child) for name, child in original.items() if id(child) not in shared_ids
|
|
262
|
+
)
|
|
263
|
+
if len(filtered) != len(original):
|
|
264
|
+
parent._modules = filtered
|
|
265
|
+
detached.append((parent, original))
|
|
266
|
+
return detached
|
|
267
|
+
|
|
268
|
+
def _restore_shared_children(self, detached):
|
|
269
|
+
for parent, original in detached:
|
|
270
|
+
parent._modules = original
|
|
271
|
+
|
|
249
272
|
@torch._dynamo.disable
|
|
250
273
|
def load_from_disk(self, torch_dtype, device, copy_module=False):
|
|
251
274
|
if copy_module:
|
|
252
|
-
module =
|
|
275
|
+
module, shared_ids = self._copy_with_shared_children(self.module)
|
|
253
276
|
else:
|
|
254
277
|
module = self.module
|
|
255
278
|
state_dict = {}
|
|
@@ -257,7 +280,14 @@ class AutoWrappedNonRecurseModule(AutoWrappedModule):
|
|
|
257
280
|
param = self.disk_map[self.param_name(name)]
|
|
258
281
|
param = param.to(dtype=torch_dtype, device=device)
|
|
259
282
|
state_dict[name] = param
|
|
260
|
-
|
|
283
|
+
if copy_module:
|
|
284
|
+
detached = self._detach_shared_children(module, shared_ids)
|
|
285
|
+
try:
|
|
286
|
+
module.load_state_dict(state_dict, assign=True, strict=False)
|
|
287
|
+
finally:
|
|
288
|
+
self._restore_shared_children(detached)
|
|
289
|
+
else:
|
|
290
|
+
module.load_state_dict(state_dict, assign=True, strict=False)
|
|
261
291
|
return module
|
|
262
292
|
|
|
263
293
|
def offload_to_disk(self, model: torch.nn.Module):
|
|
@@ -265,8 +295,13 @@ class AutoWrappedNonRecurseModule(AutoWrappedModule):
|
|
|
265
295
|
getattr(self, name).to("meta")
|
|
266
296
|
|
|
267
297
|
def cast_to(self, module, dtype, device):
|
|
268
|
-
|
|
269
|
-
|
|
298
|
+
result, shared_ids = self._copy_with_shared_children(module)
|
|
299
|
+
detached = self._detach_shared_children(result, shared_ids)
|
|
300
|
+
try:
|
|
301
|
+
result = result.to(dtype=dtype, device=device)
|
|
302
|
+
finally:
|
|
303
|
+
self._restore_shared_children(detached)
|
|
304
|
+
return result
|
|
270
305
|
|
|
271
306
|
def __getattr__(self, name):
|
|
272
307
|
if name in self.__dict__ or name == "module":
|
|
@@ -531,6 +566,7 @@ class AutoWrappedQuantizedModule(torch.nn.Linear, AutoTorchModule, LoRAHotLoadMi
|
|
|
531
566
|
self.module.to(device=self.onload_device)
|
|
532
567
|
self.state = 1
|
|
533
568
|
|
|
569
|
+
@torch._dynamo.disable
|
|
534
570
|
def preparing(self):
|
|
535
571
|
if self.state != 2:
|
|
536
572
|
if self.disk_offload and self.preparing_device != "disk" and self.onload_device == "disk":
|
|
@@ -539,6 +575,7 @@ class AutoWrappedQuantizedModule(torch.nn.Linear, AutoTorchModule, LoRAHotLoadMi
|
|
|
539
575
|
self.module.to(device=self.preparing_device)
|
|
540
576
|
self.state = 2
|
|
541
577
|
|
|
578
|
+
@torch._dynamo.disable
|
|
542
579
|
def computation_module(self):
|
|
543
580
|
device = self.preparing_device if self.state == 2 else self.onload_device
|
|
544
581
|
if device == self.computation_device:
|
|
@@ -5,7 +5,7 @@ from typing_extensions import Literal
|
|
|
5
5
|
|
|
6
6
|
class FlowMatchScheduler():
|
|
7
7
|
|
|
8
|
-
def __init__(self, template: Literal["FLUX.1", "Wan", "Qwen-Image", "FLUX.2", "FLUX.3", "Z-Image", "LTX-2", "Qwen-Image-Lightning", "ERNIE-Image", "MOSS-Image", "ACE-Step", "Ideogram4", "Krea-2", "Boogu", "MiniMax-H3", "MiniMax-Music3", "LingBot-Video", "SenseNova-U1", "YuE2"] = "FLUX.1"):
|
|
8
|
+
def __init__(self, template: Literal["FLUX.1", "Wan", "Qwen-Image", "FLUX.2", "FLUX.3", "Z-Image", "LTX-2", "Qwen-Image-Lightning", "ERNIE-Image", "MOSS-Image", "ACE-Step", "Ideogram4", "Krea-2", "Boogu", "MiniMax-H3", "MiniMax-Music3", "LingBot-Video", "SenseNova-U1", "YuE2", "Fibo"] = "FLUX.1"):
|
|
9
9
|
self.set_timesteps_fn = {
|
|
10
10
|
"FLUX.1": FlowMatchScheduler.set_timesteps_flux,
|
|
11
11
|
"Wan": FlowMatchScheduler.set_timesteps_wan,
|
|
@@ -27,6 +27,7 @@ class FlowMatchScheduler():
|
|
|
27
27
|
"LingBot-Video": FlowMatchScheduler.set_timesteps_lingbot_video,
|
|
28
28
|
"SenseNova-U1": FlowMatchScheduler.set_timesteps_sensenova_u1,
|
|
29
29
|
"YuE2": FlowMatchScheduler.set_timesteps_yue2,
|
|
30
|
+
"Fibo": FlowMatchScheduler.set_timesteps_fibo,
|
|
30
31
|
}.get(template, FlowMatchScheduler.set_timesteps_flux)
|
|
31
32
|
self.num_train_timesteps = 1000
|
|
32
33
|
|
|
@@ -168,6 +169,22 @@ class FlowMatchScheduler():
|
|
|
168
169
|
timesteps = sigmas * num_train_timesteps
|
|
169
170
|
return sigmas, timesteps
|
|
170
171
|
|
|
172
|
+
@staticmethod
|
|
173
|
+
def set_timesteps_fibo(num_inference_steps=30, denoising_strength=1.0, dynamic_shift_len=None):
|
|
174
|
+
sigma_min = 1 / num_inference_steps
|
|
175
|
+
sigma_max = 1.0
|
|
176
|
+
sigma_start = sigma_min + (sigma_max - sigma_min) * denoising_strength
|
|
177
|
+
sigmas = torch.linspace(sigma_start, sigma_min, num_inference_steps)
|
|
178
|
+
if dynamic_shift_len is None:
|
|
179
|
+
mu = 0.5
|
|
180
|
+
else:
|
|
181
|
+
mu = FlowMatchScheduler._calculate_shift_qwen_image(
|
|
182
|
+
dynamic_shift_len, base_seq_len=256, max_seq_len=4096, base_shift=0.5, max_shift=1.15
|
|
183
|
+
)
|
|
184
|
+
sigmas = math.exp(mu) / (math.exp(mu) + (1 / sigmas - 1))
|
|
185
|
+
timesteps = sigmas * 1000
|
|
186
|
+
return sigmas, timesteps
|
|
187
|
+
|
|
171
188
|
@staticmethod
|
|
172
189
|
def set_timesteps_flux3(num_inference_steps=16, denoising_strength=1.0, alpha=6.93, **kwargs):
|
|
173
190
|
u = torch.linspace(denoising_strength, 0.0, num_inference_steps + 1)[:-1]
|
|
@@ -188,7 +205,7 @@ class FlowMatchScheduler():
|
|
|
188
205
|
return sigmas, timesteps
|
|
189
206
|
|
|
190
207
|
@staticmethod
|
|
191
|
-
def set_timesteps_moss_image(num_inference_steps=50, denoising_strength=1.0, shift=
|
|
208
|
+
def set_timesteps_moss_image(num_inference_steps=50, denoising_strength=1.0, shift=1.0, training_shift=1.0):
|
|
192
209
|
num_train_timesteps = 1000
|
|
193
210
|
|
|
194
211
|
def grid(count, shift, start=1.0):
|