diffsynth 2.1.9__tar.gz → 2.1.10__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.9 → diffsynth-2.1.10}/PKG-INFO +36 -3
- {diffsynth-2.1.9 → diffsynth-2.1.10}/README.md +34 -1
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/configs/model_configs.py +101 -1
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/configs/vram_management_module_maps.py +25 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/core/data/unified_dataset.py +1 -1
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/core/gradient/gradient_checkpoint.py +10 -3
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/core/quant/backends/entropack.py +10 -3
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/core/vram/layers.py +4 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/diffusion/flow_match.py +29 -1
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/diffusion/parsers.py +1 -1
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/diffusion/training_module.py +21 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/flux2_dit.py +2 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/flux2_vae.py +2 -1
- diffsynth-2.1.10/diffsynth/models/flux3_dit.py +241 -0
- diffsynth-2.1.10/diffsynth/models/minimax_h3_dit_vdn.py +822 -0
- diffsynth-2.1.10/diffsynth/models/minimax_h3_dit_vdn_fp8.py +196 -0
- diffsynth-2.1.10/diffsynth/models/moss_image_dit.py +234 -0
- diffsynth-2.1.10/diffsynth/models/moss_image_text_encoder.py +88 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/qwen_image_21_dit.py +53 -5
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/qwen_image_21_text_encoder.py +13 -9
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/qwen_image_vae.py +54 -2
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/wan_video_dit.py +0 -1
- diffsynth-2.1.10/diffsynth/pipelines/flux3_image.py +376 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/pipelines/joyai_image.py +3 -3
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/pipelines/minimax_h3_audio_video.py +13 -2
- diffsynth-2.1.10/diffsynth/pipelines/moss_image.py +224 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/pipelines/qwen_image_21.py +7 -2
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/pipelines/wan_video.py +3 -2
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/lora/minimax_h3.py +93 -1
- diffsynth-2.1.10/diffsynth/utils/state_dict_converters/flux3_dit.py +33 -0
- diffsynth-2.1.10/diffsynth/utils/state_dict_converters/minimax_h3_dit_vdn.py +8 -0
- diffsynth-2.1.10/diffsynth/utils/state_dict_converters/moss_image_text_encoder.py +7 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/version.py +1 -1
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth.egg-info/PKG-INFO +36 -3
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth.egg-info/SOURCES.txt +10 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth.egg-info/requires.txt +1 -1
- {diffsynth-2.1.9 → diffsynth-2.1.10}/pyproject.toml +19 -1
- {diffsynth-2.1.9 → diffsynth-2.1.10}/LICENSE +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/__init__.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/configs/__init__.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/core/__init__.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/core/attention/__init__.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/core/attention/attention.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/core/data/__init__.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/core/data/operators.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/core/device/__init__.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/core/device/npu_compatible_device.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/core/gradient/__init__.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/core/loader/__init__.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/core/loader/config.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/core/loader/file.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/core/loader/model.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/core/npu_patch/npu_fused_operator.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/core/offload_training/__init__.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/core/offload_training/manager.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/core/offload_training/memory_buffer.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/core/offload_training/offloader.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/core/quant/__init__.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/core/quant/backends/__init__.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/core/quant/backends/bitsandbytes.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/core/quant/backends/comfy_kitchen.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/core/quant/backends/torchao.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/core/quant/base.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/core/quant/config.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/core/vram/__init__.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/core/vram/disk_map.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/core/vram/initialization.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/diffusion/__init__.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/diffusion/base_pipeline.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/diffusion/ddim_scheduler.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/diffusion/dmd2.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/diffusion/logger.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/diffusion/loss.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/diffusion/runner.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/diffusion/template.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/metrics/__init__.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/metrics/aesthetic.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/metrics/base.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/metrics/bioclip.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/metrics/clip.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/metrics/fid.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/metrics/hpsv2.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/metrics/hpsv3.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/metrics/image_reward.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/metrics/lpips.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/metrics/pickscore.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/metrics/qwen_image_bench.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/metrics/unified_reward_2.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/metrics/unified_reward_edit.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/ace_step_conditioner.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/ace_step_dit.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/ace_step_residual_fsq.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/ace_step_text_encoder.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/ace_step_tokenizer.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/ace_step_vae.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/aesthetic.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/anima_dit.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/bioclip.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/boogu_image_dit.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/clip.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/demucs.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/diffsynth_music_dit.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/dinov3_image_encoder.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/ernie_image_dit.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/ernie_image_text_encoder.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/fid.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/flux2_text_encoder.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/flux_controlnet.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/flux_dit.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/flux_infiniteyou.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/flux_ipadapter.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/flux_lora_encoder.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/flux_lora_patcher.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/flux_redux.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/flux_text_encoder_clip.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/flux_text_encoder_t5.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/flux_vae.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/flux_value_control.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/general_modules.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/hidream_common.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/hidream_o1_image_dit.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/hpsv2.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/hpsv3.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/ideogram4_dit.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/ideogram4_text_encoder.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/ideogram4_vae.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/image_reward.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/joyai_image_dit.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/krea2_dit.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/krea2_text_encoder.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/lingbot_video_dit.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/longcat_video_dit.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/lpips.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/ltx25_diffusion_video_vae.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/ltx25_duration_head.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/ltx25_text_encoder.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/ltx2_audio_vae.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/ltx2_common.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/ltx2_dit.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/ltx2_text_encoder.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/ltx2_upsampler.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/ltx2_video_vae.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/minimax_h3_audio_vae.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/minimax_h3_controlnet.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/minimax_h3_dit.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/minimax_h3_dit_comfy.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/minimax_h3_text_encoder.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/minimax_h3_video_vae.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/minimax_music3_condition_encoder.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/minimax_music3_dit.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/minimax_music3_rvq_depth_decoder.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/minimax_music3_text_encoder.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/minimax_music3_vocoder.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/model_loader.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/mova_audio_dit.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/mova_audio_vae.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/mova_dual_tower_bridge.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/nexus_gen.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/nexus_gen_ar_model.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/nexus_gen_projector.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/pickscore.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/qwen_image_21_controlnet.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/qwen_image_21_vae.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/qwen_image_bench.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/qwen_image_controlnet.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/qwen_image_dit.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/qwen_image_image2lora.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/qwen_image_text_encoder.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/qwen_video_edit_dit.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/sd_text_encoder.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/sensenova_u1_common.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/sensenova_u1_dit.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/siglip2_image_encoder.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/stable_diffusion_text_encoder.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/stable_diffusion_unet.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/stable_diffusion_vae.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/stable_diffusion_xl_text_encoder.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/stable_diffusion_xl_unet.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/step1x_connector.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/step1x_text_encoder.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/unified_reward_2.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/unified_reward_edit.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/wan_animate_2_dit.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/wan_video_animate_adapter.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/wan_video_camera_controller.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/wan_video_dit_s2v.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/wan_video_image_encoder.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/wan_video_mot.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/wan_video_motion_controller.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/wan_video_text_encoder.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/wan_video_vace.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/wan_video_vae.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/wantodance.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/wav2vec.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/yue2_mot.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/yue2_tokenizer.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/yue2_vae.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/z_image_controlnet.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/z_image_dit.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/z_image_image2lora.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/models/z_image_text_encoder.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/pipelines/ace_step.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/pipelines/anima_image.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/pipelines/boogu_image.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/pipelines/diffsynth_music.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/pipelines/ernie_image.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/pipelines/flux2_image.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/pipelines/flux_image.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/pipelines/hidream_o1_image.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/pipelines/ideogram4.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/pipelines/krea2.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/pipelines/lingbot_video.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/pipelines/ltx2_audio_video.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/pipelines/minimax_music3.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/pipelines/mova_audio_video.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/pipelines/qwen_image.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/pipelines/qwen_video_edit.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/pipelines/sensenova_u1_image.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/pipelines/stable_diffusion.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/pipelines/stable_diffusion_xl.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/pipelines/yue2.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/pipelines/z_image.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/controlnet/__init__.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/controlnet/annotator.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/controlnet/controlnet_input.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/data/__init__.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/data/audio.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/data/audio_video.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/data/media_io_ltx2.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/data/minimax_h3.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/demucs/__init__.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/dequantizer/__init__.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/lora/__init__.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/lora/flux.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/lora/flux_timestep.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/lora/general.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/lora/krea2.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/lora/merge.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/lora/reset_rank.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/lora/sdxl.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/music_tools/__init__.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/music_tools/click.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/music_tools/prosody.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/quant/serialization.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/ses/__init__.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/ses/ses.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/state_dict_converters/__init__.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/state_dict_converters/ace_step_conditioner.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/state_dict_converters/ace_step_dit.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/state_dict_converters/ace_step_text_encoder.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/state_dict_converters/ace_step_tokenizer.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/state_dict_converters/anima_dit.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/state_dict_converters/dino_v3.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/state_dict_converters/ernie_image_text_encoder.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/state_dict_converters/flux2_text_encoder.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/state_dict_converters/flux_controlnet.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/state_dict_converters/flux_dit.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/state_dict_converters/flux_infiniteyou.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/state_dict_converters/flux_ipadapter.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/state_dict_converters/flux_text_encoder_clip.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/state_dict_converters/flux_text_encoder_t5.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/state_dict_converters/flux_vae.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/state_dict_converters/ideogram4_text_encoder.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/state_dict_converters/image_metrics.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/state_dict_converters/krea2_dit.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/state_dict_converters/krea2_text_encoder.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/state_dict_converters/lingbot_video_dit.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/state_dict_converters/ltx25_diffusion_video_vae.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/state_dict_converters/ltx25_duration_head.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/state_dict_converters/ltx25_text_encoder.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/state_dict_converters/ltx2_audio_vae.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/state_dict_converters/ltx2_dit.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/state_dict_converters/ltx2_text_encoder.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/state_dict_converters/ltx2_video_vae.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/state_dict_converters/minimax_h3_audio_vae.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/state_dict_converters/minimax_h3_controlnet.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/state_dict_converters/minimax_h3_dit.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/state_dict_converters/minimax_h3_text_encoder.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/state_dict_converters/minimax_h3_video_vae.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/state_dict_converters/minimax_music3_text_encoder.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/state_dict_converters/nexus_gen.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/state_dict_converters/nexus_gen_projector.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/state_dict_converters/qwen_image_21_text_encoder.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/state_dict_converters/qwen_image_text_encoder.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/state_dict_converters/qwen_video_edit.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/state_dict_converters/sdxl.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/state_dict_converters/sdxl_text_encoder.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/state_dict_converters/sdxl_text_encoder_2.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/state_dict_converters/sdxl_vae.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/state_dict_converters/stable_diffusion_text_encoder.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/state_dict_converters/stable_diffusion_vae.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/state_dict_converters/stable_diffusion_xl_text_encoder.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/state_dict_converters/step1x_connector.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/state_dict_converters/wan_video_animate_adapter.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/state_dict_converters/wan_video_dit.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/state_dict_converters/wan_video_image_encoder.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/state_dict_converters/wan_video_mot.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/state_dict_converters/wan_video_vace.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/state_dict_converters/wan_video_vae.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/state_dict_converters/wans2v_audio_encoder.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/state_dict_converters/z_image_dit.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/state_dict_converters/z_image_text_encoder.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/tile/__init__.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/tile/tile_worker.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/xfuser/__init__.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth/utils/xfuser/xdit_context_parallel.py +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth.egg-info/dependency_links.txt +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/diffsynth.egg-info/top_level.txt +0 -0
- {diffsynth-2.1.9 → diffsynth-2.1.10}/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.10
|
|
4
4
|
Summary: Enjoy the magic of Diffusion models!
|
|
5
5
|
Author: ModelScope Team
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -50,7 +50,7 @@ Provides-Extra: infiniteyou
|
|
|
50
50
|
Requires-Dist: insightface; extra == "infiniteyou"
|
|
51
51
|
Requires-Dist: facexlib; extra == "infiniteyou"
|
|
52
52
|
Provides-Extra: ses
|
|
53
|
-
Requires-Dist:
|
|
53
|
+
Requires-Dist: PyWavelets; extra == "ses"
|
|
54
54
|
Provides-Extra: nexusgen
|
|
55
55
|
Requires-Dist: qwen_vl_utils; extra == "nexusgen"
|
|
56
56
|
Requires-Dist: transformers==4.49.0; extra == "nexusgen"
|
|
@@ -114,6 +114,12 @@ 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 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
|
+
|
|
119
|
+
- **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).
|
|
120
|
+
|
|
121
|
+
- **October 12, 2026** We now support distillation accelerated training based on OPD (On-Policy Distillation), which enables distillation acceleration of models at an extremely low cost. For details, please refer to [Distillation Accelerated Training](/docs/en/Training/Distillation.md).
|
|
122
|
+
|
|
117
123
|
- **September 29, 2026** We are excited to open-source EntroPack, a general-purpose tensor compression library for PyTorch that provides lossless compression with exact recovery and rate-controlled lossy compression, with GPU encoding and decoding. It is integrated into DiffSynth-Studio as a quantization backend, compressing model weights at arbitrary target bitrates in both inference and LoRA training. For more information, please refer to:
|
|
118
124
|
|
|
119
125
|
* Project Page: https://github.com/modelscope/entropack
|
|
@@ -408,6 +414,8 @@ Quick start: experience popular and the latest models:
|
|
|
408
414
|
Model overview:
|
|
409
415
|
|
|
410
416
|
- Image generation
|
|
417
|
+
- MOSS-Image: [Documentation](https://diffsynth-studio-doc.readthedocs.io/en/latest/Model_Details/MOSS-Image.html), [Example code](/examples/moss_image/)
|
|
418
|
+
- FLUX.3: [Documentation](https://diffsynth-studio-doc.readthedocs.io/en/latest/Model_Details/FLUX.3.html), [Example code](/examples/flux3/)
|
|
411
419
|
- 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/)
|
|
412
420
|
- SenseNova-U1: [Documentation](https://diffsynth-studio-doc.readthedocs.io/en/latest/Model_Details/SenseNova-U1.html), [Example code](/examples/sensenova_u1/)
|
|
413
421
|
- Boogu-Image: [Documentation](https://diffsynth-studio-doc.readthedocs.io/en/latest/Model_Details/Boogu-Image.html), [Example code](/examples/boogu_image/)
|
|
@@ -441,6 +449,21 @@ Model overview:
|
|
|
441
449
|
|
|
442
450
|
We believe that a well-developed open-source code framework can lower the threshold for technical exploration. We have achieved many interesting technologies based on this codebase. Perhaps you also have many wild ideas, and with DiffSynth-Studio, you can quickly realize these ideas.
|
|
443
451
|
|
|
452
|
+
<details>
|
|
453
|
+
|
|
454
|
+
<summary>EntroPack: A General-Purpose Tensor Compression Library for PyTorch</summary>
|
|
455
|
+
|
|
456
|
+
> Compress model weights at arbitrary target bitrates with GPU encoding and decoding, and run the compressed weights directly in inference and LoRA training.
|
|
457
|
+
|
|
458
|
+
* Project Page: [GitHub](https://github.com/modelscope/entropack)
|
|
459
|
+
* Technical Report: https://arxiv.org/abs/2609.34185
|
|
460
|
+
* Pre-quantized Models: [ModelScope](https://www.modelscope.cn/models/DiffSynth-Studio/EntroPackPreQuants)
|
|
461
|
+
* Documentation: [English Version](/docs/en/Pipeline_Usage/Quantization.md) | [Chinese Version](/docs/zh/Pipeline_Usage/Quantization.md)
|
|
462
|
+
* 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)
|
|
463
|
+
|
|
464
|
+
</details>
|
|
465
|
+
|
|
466
|
+
|
|
444
467
|
<details>
|
|
445
468
|
|
|
446
469
|
<summary>TreeAdapter: A Model System Built from Structured LoRAs</summary>
|
|
@@ -679,6 +702,12 @@ https://github.com/Artiprocher/DiffSynth-Studio/assets/35051019/59fb2f7b-8de0-44
|
|
|
679
702
|
|
|
680
703
|
| Architecture | Model ID | Inference | Low VRAM Inference | Full Training | Validation After Full Training | LoRA Training | Validation After LoRA Training |
|
|
681
704
|
|-|-|-|-|-|-|-|-|
|
|
705
|
+
| 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
|
+
| 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
|
+
| 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) |
|
|
708
|
+
| FLUX.3 | [black-forest-labs/flux-3-image-klein](https://www.modelscope.cn/models/black-forest-labs/flux-3-image-klein) | [code](/examples/flux3/model_inference/flux-3-image-klein.py) | [code](/examples/flux3/model_inference_low_vram/flux-3-image-klein.py) | [code](/examples/flux3/model_training/full/flux-3-image-klein.sh) | [code](/examples/flux3/model_training/validate_full/flux-3-image-klein.py) | [code](/examples/flux3/model_training/lora/flux-3-image-klein.sh) | [code](/examples/flux3/model_training/validate_lora/flux-3-image-klein.py) |
|
|
709
|
+
| FLUX.3 | [black-forest-labs/flux-3-image-klein-base](https://www.modelscope.cn/models/black-forest-labs/flux-3-image-klein-base) | [code](/examples/flux3/model_inference/flux-3-image-klein-base.py) | [code](/examples/flux3/model_inference_low_vram/flux-3-image-klein-base.py) | [code](/examples/flux3/model_training/full/flux-3-image-klein-base.sh) | [code](/examples/flux3/model_training/validate_full/flux-3-image-klein-base.py) | [code](/examples/flux3/model_training/lora/flux-3-image-klein-base.sh) | [code](/examples/flux3/model_training/validate_lora/flux-3-image-klein-base.py) |
|
|
710
|
+
| FLUX.3 | [DiffSynth-Studio/flux-3-image-klein-entropack](https://www.modelscope.cn/models/DiffSynth-Studio/flux-3-image-klein-entropack) | [code](/examples/flux3/model_inference/flux-3-image-klein-EntroPack.py) | [code](/examples/flux3/model_inference_low_vram/flux-3-image-klein-EntroPack.py) | - | - | [code](/examples/flux3/model_training/lora/flux-3-image-klein-entropack.sh) | [code](/examples/flux3/model_training/validate_lora/flux-3-image-klein-entropack.py) |
|
|
682
711
|
| 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) |
|
|
683
712
|
| 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) |
|
|
684
713
|
| Qwen-Image-2.1 | [PAI/Qwen-Image-2.1-Fun-Controlnet-Union](https://www.modelscope.cn/models/PAI/Qwen-Image-2.1-Fun-Controlnet-Union) | [code](/examples/qwen_image_21/model_inference/Qwen-Image-2.1-Fun-Controlnet-Union.py) | [code](/examples/qwen_image_21/model_inference_low_vram/Qwen-Image-2.1-Fun-Controlnet-Union.py) | [code](/examples/qwen_image_21/model_training/full/Qwen-Image-2.1-Fun-Controlnet-Union.sh) | [code](/examples/qwen_image_21/model_training/validate_full/Qwen-Image-2.1-Fun-Controlnet-Union.py) | [code](/examples/qwen_image_21/model_training/lora/Qwen-Image-2.1-Fun-Controlnet-Union.sh) | [code](/examples/qwen_image_21/model_training/validate_lora/Qwen-Image-2.1-Fun-Controlnet-Union.py) |
|
|
@@ -708,6 +737,10 @@ https://github.com/Artiprocher/DiffSynth-Studio/assets/35051019/59fb2f7b-8de0-44
|
|
|
708
737
|
| MiniMax-H3 | [lightx2v/Minimax-h3-Turbo: FL2VA 4steps](https://www.modelscope.cn/models/lightx2v/Minimax-h3-Turbo) | [code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/minimax_h3/model_inference/MiniMax-H3-FL2VA-Turbo.py) | [code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/minimax_h3/model_inference_low_vram/MiniMax-H3-FL2VA-Turbo.py) | - | - | - | - |
|
|
709
738
|
| MiniMax-H3 | [DiffSynth-Studio/MiniMax-H3-Text-Embeddings](https://www.modelscope.cn/models/DiffSynth-Studio/MiniMax-H3-Text-Embeddings) | [code](/examples/minimax_h3/model_inference/MiniMax-H3-Text-Embeddings.py) | [code](/examples/minimax_h3/model_inference_low_vram/MiniMax-H3-Text-Embeddings.py) | [code](/examples/minimax_h3/model_training/full/MiniMax-H3-Text-Embeddings.sh) | [code](/examples/minimax_h3/model_training/validate_full/MiniMax-H3-Text-Embeddings.py) | - | - |
|
|
710
739
|
| MiniMax-H3 | [PAI/MiniMax-H3-Fun-Controlnet-Union](https://www.modelscope.cn/models/PAI/MiniMax-H3-Fun-Controlnet-Union) | [code](/examples/minimax_h3/model_inference/MiniMax-H3-Fun-Controlnet-Union.py) | [code](/examples/minimax_h3/model_inference_low_vram/MiniMax-H3-Fun-Controlnet-Union.py) | [code](/examples/minimax_h3/model_training/full/MiniMax-H3-Fun-Controlnet-Union.sh) | [code](/examples/minimax_h3/model_training/validate_full/MiniMax-H3-Fun-Controlnet-Union.py) | [code](/examples/minimax_h3/model_training/lora/MiniMax-H3-Fun-Controlnet-Union.sh) | [code](/examples/minimax_h3/model_training/validate_lora/MiniMax-H3-Fun-Controlnet-Union.py) |
|
|
740
|
+
| MiniMax-H3 | [OpenVDN/vdn-minimax-h3: VDN-H3 50 steps](https://www.modelscope.cn/models/OpenVDN/vdn-minimax-h3) | [code](/examples/minimax_h3/model_inference/MiniMax-H3-VDN-FL2VA.py) | [code](/examples/minimax_h3/model_inference_low_vram/MiniMax-H3-VDN-FL2VA.py) | - | - | - | - |
|
|
741
|
+
| MiniMax-H3 | [OpenVDN/vdn-minimax-h3: VDN-H3 8 steps](https://www.modelscope.cn/models/OpenVDN/vdn-minimax-h3) | [code](/examples/minimax_h3/model_inference/MiniMax-H3-VDN-Turbo-FL2VA.py) | [code](/examples/minimax_h3/model_inference_low_vram/MiniMax-H3-VDN-Turbo-FL2VA.py) | - | - | - | - |
|
|
742
|
+
| MiniMax-H3 | [OpenVDN/vdn-minimax-h3: VDN-H3 FP8](https://www.modelscope.cn/models/OpenVDN/vdn-minimax-h3) | [code](/examples/minimax_h3/model_inference/MiniMax-H3-VDN-FP8-FL2VA.py) | - | - | - | - | - |
|
|
743
|
+
| MiniMax-H3 | [OpenVDN/vdn-minimax-h3: VDN-H3 8 steps FP8](https://www.modelscope.cn/models/OpenVDN/vdn-minimax-h3) | [code](/examples/minimax_h3/model_inference/MiniMax-H3-VDN-Turbo-FP8-FL2VA.py) | - | - | - | - | - |
|
|
711
744
|
| LingBot-Video | [Robbyant/lingbot-video-dense-1.3b: T2V](https://modelscope.cn/models/Robbyant/lingbot-video-dense-1.3b) | [code](/examples/lingbot_video/model_inference/lingbot-video-dense-1.3b_t2v.py) | [code](/examples/lingbot_video/model_inference_low_vram/lingbot-video-dense-1.3b_t2v.py) | [code](/examples/lingbot_video/model_training/full/lingbot-video-dense-1.3b_t2v.sh) | [code](/examples/lingbot_video/model_training/validate_full/lingbot-video-dense-1.3b_t2v.py) | [code](/examples/lingbot_video/model_training/lora/lingbot-video-dense-1.3b_t2v.sh) | [code](/examples/lingbot_video/model_training/validate_lora/lingbot-video-dense-1.3b_t2v.py) |
|
|
712
745
|
| LingBot-Video | [Robbyant/lingbot-video-dense-1.3b: TI2V](https://modelscope.cn/models/Robbyant/lingbot-video-dense-1.3b) | [code](/examples/lingbot_video/model_inference/lingbot-video-dense-1.3b_ti2v.py) | [code](/examples/lingbot_video/model_inference_low_vram/lingbot-video-dense-1.3b_ti2v.py) | [code](/examples/lingbot_video/model_training/full/lingbot-video-dense-1.3b_ti2v.sh) | [code](/examples/lingbot_video/model_training/validate_full/lingbot-video-dense-1.3b_ti2v.py) | [code](/examples/lingbot_video/model_training/lora/lingbot-video-dense-1.3b_ti2v.sh) | [code](/examples/lingbot_video/model_training/validate_lora/lingbot-video-dense-1.3b_ti2v.py) |
|
|
713
746
|
| LingBot-Video | [Robbyant/lingbot-video-dense-1.3b: T2I](https://modelscope.cn/models/Robbyant/lingbot-video-dense-1.3b) | [code](/examples/lingbot_video/model_inference/lingbot-video-dense-1.3b_t2i.py) | [code](/examples/lingbot_video/model_inference_low_vram/lingbot-video-dense-1.3b_t2i.py) | - | - | - | - |
|
|
@@ -750,7 +783,7 @@ https://github.com/Artiprocher/DiffSynth-Studio/assets/35051019/59fb2f7b-8de0-44
|
|
|
750
783
|
| LTX-2.5 | [Lightricks/LTX-2.5: T2A](https://www.modelscope.cn/models/Lightricks/LTX-2.5) | [code](/examples/ltx2/model_inference/LTX-2.5-T2A.py) | [code](/examples/ltx2/model_inference_low_vram/LTX-2.5-T2A.py) | - | - | - | - |
|
|
751
784
|
| LTX-2.5 | [Lightricks/LTX-2.5: DistilledPipeline-T2AV](https://www.modelscope.cn/models/Lightricks/LTX-2.5) | [code](/examples/ltx2/model_inference/LTX-2.5-T2AV-DistilledPipeline.py) | [code](/examples/ltx2/model_inference_low_vram/LTX-2.5-T2AV-DistilledPipeline.py) | - | - | - | - |
|
|
752
785
|
| LTX-2.5 | [Lightricks/LTX-2.5-22b-IC-LoRA-Pixel-Spatial-Upscaler](https://www.modelscope.cn/models/Lightricks/LTX-2.5-22b-IC-LoRA-Pixel-Spatial-Upscaler) | [code](/examples/ltx2/model_inference/LTX-2.5-IC-LoRA-Pixel-Spatial-Upscaler.py) | [code](/examples/ltx2/model_inference_low_vram/LTX-2.5-IC-LoRA-Pixel-Spatial-Upscaler.py) | - | - | - | - |
|
|
753
|
-
| LTX-2.5 | [Lightricks/LTX-2.5: INT8-ConvRot](https://www.modelscope.cn/models/Lightricks/LTX-2.5) | [code](/examples/ltx2/model_inference/LTX-2.5-T2AV-INT8-ConvRot.py) | [code](/examples/ltx2/model_inference_low_vram/LTX-2.5-T2AV-INT8-ConvRot.py) | - | - | - | - |
|
|
786
|
+
| LTX-2.5 | [Lightricks/LTX-2.5: INT8-ConvRot](https://www.modelscope.cn/models/Lightricks/LTX-2.5) | [code](/examples/ltx2/model_inference/LTX-2.5-T2AV-INT8-ConvRot.py) | [code](/examples/ltx2/model_inference_low_vram/LTX-2.5-T2AV-INT8-ConvRot.py) | - | - | [code](/examples/ltx2/model_training/lora/LTX-2.5-Int8-ConvRot-splited.sh) | [code](/examples/ltx2/model_training/validate_lora/LTX-2.5-Int8-ConvRot.py) |
|
|
754
787
|
| LTX-2 | [jd-opensource/JoyAI-Echo](https://modelscope.cn/models/jd-opensource/JoyAI-Echo) | [code](/examples/ltx2/model_inference/JoyAI-Echo-T2AV.py) | [code](/examples/ltx2/model_inference_low_vram/JoyAI-Echo-T2AV.py) | [code](/examples/ltx2/model_training/full/JoyAI-Echo-T2AV-splited.sh) | [code](/examples/ltx2/model_training/validate_full/JoyAI-Echo-T2AV.py) | [code](/examples/ltx2/model_training/lora/JoyAI-Echo-T2AV-splited.sh) | [code](/examples/ltx2/model_training/validate_lora/JoyAI-Echo-T2AV.py) |
|
|
755
788
|
| LTX-2 | [Lightricks/LTX-2.3: OneStagePipeline-I2AV](https://www.modelscope.cn/models/Lightricks/LTX-2.3) | [code](/examples/ltx2/model_inference/LTX-2.3-I2AV-OneStage.py) | [code](/examples/ltx2/model_inference_low_vram/LTX-2.3-I2AV-OneStage.py) | [code](/examples/ltx2/model_training/full/LTX-2.3-I2AV-splited.sh) | [code](/examples/ltx2/model_training/validate_full/LTX-2.3-I2AV.py) | [code](/examples/ltx2/model_training/lora/LTX-2.3-I2AV-splited.sh) | [code](/examples/ltx2/model_training/validate_lora/LTX-2.3-I2AV.py) |
|
|
756
789
|
| LTX-2 | [Lightricks/LTX-2.3: TwoStagePipeline-I2AV](https://www.modelscope.cn/models/Lightricks/LTX-2.3) | [code](/examples/ltx2/model_inference/LTX-2.3-I2AV-TwoStage.py) | [code](/examples/ltx2/model_inference_low_vram/LTX-2.3-I2AV-TwoStage.py) | - | - | - | - |
|
|
@@ -41,6 +41,12 @@ 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 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
|
+
|
|
46
|
+
- **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).
|
|
47
|
+
|
|
48
|
+
- **October 12, 2026** We now support distillation accelerated training based on OPD (On-Policy Distillation), which enables distillation acceleration of models at an extremely low cost. For details, please refer to [Distillation Accelerated Training](/docs/en/Training/Distillation.md).
|
|
49
|
+
|
|
44
50
|
- **September 29, 2026** We are excited to open-source EntroPack, a general-purpose tensor compression library for PyTorch that provides lossless compression with exact recovery and rate-controlled lossy compression, with GPU encoding and decoding. It is integrated into DiffSynth-Studio as a quantization backend, compressing model weights at arbitrary target bitrates in both inference and LoRA training. For more information, please refer to:
|
|
45
51
|
|
|
46
52
|
* Project Page: https://github.com/modelscope/entropack
|
|
@@ -335,6 +341,8 @@ Quick start: experience popular and the latest models:
|
|
|
335
341
|
Model overview:
|
|
336
342
|
|
|
337
343
|
- Image generation
|
|
344
|
+
- MOSS-Image: [Documentation](https://diffsynth-studio-doc.readthedocs.io/en/latest/Model_Details/MOSS-Image.html), [Example code](/examples/moss_image/)
|
|
345
|
+
- FLUX.3: [Documentation](https://diffsynth-studio-doc.readthedocs.io/en/latest/Model_Details/FLUX.3.html), [Example code](/examples/flux3/)
|
|
338
346
|
- 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/)
|
|
339
347
|
- SenseNova-U1: [Documentation](https://diffsynth-studio-doc.readthedocs.io/en/latest/Model_Details/SenseNova-U1.html), [Example code](/examples/sensenova_u1/)
|
|
340
348
|
- Boogu-Image: [Documentation](https://diffsynth-studio-doc.readthedocs.io/en/latest/Model_Details/Boogu-Image.html), [Example code](/examples/boogu_image/)
|
|
@@ -368,6 +376,21 @@ Model overview:
|
|
|
368
376
|
|
|
369
377
|
We believe that a well-developed open-source code framework can lower the threshold for technical exploration. We have achieved many interesting technologies based on this codebase. Perhaps you also have many wild ideas, and with DiffSynth-Studio, you can quickly realize these ideas.
|
|
370
378
|
|
|
379
|
+
<details>
|
|
380
|
+
|
|
381
|
+
<summary>EntroPack: A General-Purpose Tensor Compression Library for PyTorch</summary>
|
|
382
|
+
|
|
383
|
+
> Compress model weights at arbitrary target bitrates with GPU encoding and decoding, and run the compressed weights directly in inference and LoRA training.
|
|
384
|
+
|
|
385
|
+
* Project Page: [GitHub](https://github.com/modelscope/entropack)
|
|
386
|
+
* Technical Report: https://arxiv.org/abs/2609.34185
|
|
387
|
+
* Pre-quantized Models: [ModelScope](https://www.modelscope.cn/models/DiffSynth-Studio/EntroPackPreQuants)
|
|
388
|
+
* Documentation: [English Version](/docs/en/Pipeline_Usage/Quantization.md) | [Chinese Version](/docs/zh/Pipeline_Usage/Quantization.md)
|
|
389
|
+
* 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)
|
|
390
|
+
|
|
391
|
+
</details>
|
|
392
|
+
|
|
393
|
+
|
|
371
394
|
<details>
|
|
372
395
|
|
|
373
396
|
<summary>TreeAdapter: A Model System Built from Structured LoRAs</summary>
|
|
@@ -606,6 +629,12 @@ https://github.com/Artiprocher/DiffSynth-Studio/assets/35051019/59fb2f7b-8de0-44
|
|
|
606
629
|
|
|
607
630
|
| Architecture | Model ID | Inference | Low VRAM Inference | Full Training | Validation After Full Training | LoRA Training | Validation After LoRA Training |
|
|
608
631
|
|-|-|-|-|-|-|-|-|
|
|
632
|
+
| 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
|
+
| 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
|
+
| 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) |
|
|
635
|
+
| FLUX.3 | [black-forest-labs/flux-3-image-klein](https://www.modelscope.cn/models/black-forest-labs/flux-3-image-klein) | [code](/examples/flux3/model_inference/flux-3-image-klein.py) | [code](/examples/flux3/model_inference_low_vram/flux-3-image-klein.py) | [code](/examples/flux3/model_training/full/flux-3-image-klein.sh) | [code](/examples/flux3/model_training/validate_full/flux-3-image-klein.py) | [code](/examples/flux3/model_training/lora/flux-3-image-klein.sh) | [code](/examples/flux3/model_training/validate_lora/flux-3-image-klein.py) |
|
|
636
|
+
| FLUX.3 | [black-forest-labs/flux-3-image-klein-base](https://www.modelscope.cn/models/black-forest-labs/flux-3-image-klein-base) | [code](/examples/flux3/model_inference/flux-3-image-klein-base.py) | [code](/examples/flux3/model_inference_low_vram/flux-3-image-klein-base.py) | [code](/examples/flux3/model_training/full/flux-3-image-klein-base.sh) | [code](/examples/flux3/model_training/validate_full/flux-3-image-klein-base.py) | [code](/examples/flux3/model_training/lora/flux-3-image-klein-base.sh) | [code](/examples/flux3/model_training/validate_lora/flux-3-image-klein-base.py) |
|
|
637
|
+
| FLUX.3 | [DiffSynth-Studio/flux-3-image-klein-entropack](https://www.modelscope.cn/models/DiffSynth-Studio/flux-3-image-klein-entropack) | [code](/examples/flux3/model_inference/flux-3-image-klein-EntroPack.py) | [code](/examples/flux3/model_inference_low_vram/flux-3-image-klein-EntroPack.py) | - | - | [code](/examples/flux3/model_training/lora/flux-3-image-klein-entropack.sh) | [code](/examples/flux3/model_training/validate_lora/flux-3-image-klein-entropack.py) |
|
|
609
638
|
| 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) |
|
|
610
639
|
| 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) |
|
|
611
640
|
| Qwen-Image-2.1 | [PAI/Qwen-Image-2.1-Fun-Controlnet-Union](https://www.modelscope.cn/models/PAI/Qwen-Image-2.1-Fun-Controlnet-Union) | [code](/examples/qwen_image_21/model_inference/Qwen-Image-2.1-Fun-Controlnet-Union.py) | [code](/examples/qwen_image_21/model_inference_low_vram/Qwen-Image-2.1-Fun-Controlnet-Union.py) | [code](/examples/qwen_image_21/model_training/full/Qwen-Image-2.1-Fun-Controlnet-Union.sh) | [code](/examples/qwen_image_21/model_training/validate_full/Qwen-Image-2.1-Fun-Controlnet-Union.py) | [code](/examples/qwen_image_21/model_training/lora/Qwen-Image-2.1-Fun-Controlnet-Union.sh) | [code](/examples/qwen_image_21/model_training/validate_lora/Qwen-Image-2.1-Fun-Controlnet-Union.py) |
|
|
@@ -635,6 +664,10 @@ https://github.com/Artiprocher/DiffSynth-Studio/assets/35051019/59fb2f7b-8de0-44
|
|
|
635
664
|
| MiniMax-H3 | [lightx2v/Minimax-h3-Turbo: FL2VA 4steps](https://www.modelscope.cn/models/lightx2v/Minimax-h3-Turbo) | [code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/minimax_h3/model_inference/MiniMax-H3-FL2VA-Turbo.py) | [code](https://github.com/modelscope/DiffSynth-Studio/blob/main/examples/minimax_h3/model_inference_low_vram/MiniMax-H3-FL2VA-Turbo.py) | - | - | - | - |
|
|
636
665
|
| MiniMax-H3 | [DiffSynth-Studio/MiniMax-H3-Text-Embeddings](https://www.modelscope.cn/models/DiffSynth-Studio/MiniMax-H3-Text-Embeddings) | [code](/examples/minimax_h3/model_inference/MiniMax-H3-Text-Embeddings.py) | [code](/examples/minimax_h3/model_inference_low_vram/MiniMax-H3-Text-Embeddings.py) | [code](/examples/minimax_h3/model_training/full/MiniMax-H3-Text-Embeddings.sh) | [code](/examples/minimax_h3/model_training/validate_full/MiniMax-H3-Text-Embeddings.py) | - | - |
|
|
637
666
|
| MiniMax-H3 | [PAI/MiniMax-H3-Fun-Controlnet-Union](https://www.modelscope.cn/models/PAI/MiniMax-H3-Fun-Controlnet-Union) | [code](/examples/minimax_h3/model_inference/MiniMax-H3-Fun-Controlnet-Union.py) | [code](/examples/minimax_h3/model_inference_low_vram/MiniMax-H3-Fun-Controlnet-Union.py) | [code](/examples/minimax_h3/model_training/full/MiniMax-H3-Fun-Controlnet-Union.sh) | [code](/examples/minimax_h3/model_training/validate_full/MiniMax-H3-Fun-Controlnet-Union.py) | [code](/examples/minimax_h3/model_training/lora/MiniMax-H3-Fun-Controlnet-Union.sh) | [code](/examples/minimax_h3/model_training/validate_lora/MiniMax-H3-Fun-Controlnet-Union.py) |
|
|
667
|
+
| MiniMax-H3 | [OpenVDN/vdn-minimax-h3: VDN-H3 50 steps](https://www.modelscope.cn/models/OpenVDN/vdn-minimax-h3) | [code](/examples/minimax_h3/model_inference/MiniMax-H3-VDN-FL2VA.py) | [code](/examples/minimax_h3/model_inference_low_vram/MiniMax-H3-VDN-FL2VA.py) | - | - | - | - |
|
|
668
|
+
| MiniMax-H3 | [OpenVDN/vdn-minimax-h3: VDN-H3 8 steps](https://www.modelscope.cn/models/OpenVDN/vdn-minimax-h3) | [code](/examples/minimax_h3/model_inference/MiniMax-H3-VDN-Turbo-FL2VA.py) | [code](/examples/minimax_h3/model_inference_low_vram/MiniMax-H3-VDN-Turbo-FL2VA.py) | - | - | - | - |
|
|
669
|
+
| MiniMax-H3 | [OpenVDN/vdn-minimax-h3: VDN-H3 FP8](https://www.modelscope.cn/models/OpenVDN/vdn-minimax-h3) | [code](/examples/minimax_h3/model_inference/MiniMax-H3-VDN-FP8-FL2VA.py) | - | - | - | - | - |
|
|
670
|
+
| MiniMax-H3 | [OpenVDN/vdn-minimax-h3: VDN-H3 8 steps FP8](https://www.modelscope.cn/models/OpenVDN/vdn-minimax-h3) | [code](/examples/minimax_h3/model_inference/MiniMax-H3-VDN-Turbo-FP8-FL2VA.py) | - | - | - | - | - |
|
|
638
671
|
| LingBot-Video | [Robbyant/lingbot-video-dense-1.3b: T2V](https://modelscope.cn/models/Robbyant/lingbot-video-dense-1.3b) | [code](/examples/lingbot_video/model_inference/lingbot-video-dense-1.3b_t2v.py) | [code](/examples/lingbot_video/model_inference_low_vram/lingbot-video-dense-1.3b_t2v.py) | [code](/examples/lingbot_video/model_training/full/lingbot-video-dense-1.3b_t2v.sh) | [code](/examples/lingbot_video/model_training/validate_full/lingbot-video-dense-1.3b_t2v.py) | [code](/examples/lingbot_video/model_training/lora/lingbot-video-dense-1.3b_t2v.sh) | [code](/examples/lingbot_video/model_training/validate_lora/lingbot-video-dense-1.3b_t2v.py) |
|
|
639
672
|
| LingBot-Video | [Robbyant/lingbot-video-dense-1.3b: TI2V](https://modelscope.cn/models/Robbyant/lingbot-video-dense-1.3b) | [code](/examples/lingbot_video/model_inference/lingbot-video-dense-1.3b_ti2v.py) | [code](/examples/lingbot_video/model_inference_low_vram/lingbot-video-dense-1.3b_ti2v.py) | [code](/examples/lingbot_video/model_training/full/lingbot-video-dense-1.3b_ti2v.sh) | [code](/examples/lingbot_video/model_training/validate_full/lingbot-video-dense-1.3b_ti2v.py) | [code](/examples/lingbot_video/model_training/lora/lingbot-video-dense-1.3b_ti2v.sh) | [code](/examples/lingbot_video/model_training/validate_lora/lingbot-video-dense-1.3b_ti2v.py) |
|
|
640
673
|
| LingBot-Video | [Robbyant/lingbot-video-dense-1.3b: T2I](https://modelscope.cn/models/Robbyant/lingbot-video-dense-1.3b) | [code](/examples/lingbot_video/model_inference/lingbot-video-dense-1.3b_t2i.py) | [code](/examples/lingbot_video/model_inference_low_vram/lingbot-video-dense-1.3b_t2i.py) | - | - | - | - |
|
|
@@ -677,7 +710,7 @@ https://github.com/Artiprocher/DiffSynth-Studio/assets/35051019/59fb2f7b-8de0-44
|
|
|
677
710
|
| LTX-2.5 | [Lightricks/LTX-2.5: T2A](https://www.modelscope.cn/models/Lightricks/LTX-2.5) | [code](/examples/ltx2/model_inference/LTX-2.5-T2A.py) | [code](/examples/ltx2/model_inference_low_vram/LTX-2.5-T2A.py) | - | - | - | - |
|
|
678
711
|
| LTX-2.5 | [Lightricks/LTX-2.5: DistilledPipeline-T2AV](https://www.modelscope.cn/models/Lightricks/LTX-2.5) | [code](/examples/ltx2/model_inference/LTX-2.5-T2AV-DistilledPipeline.py) | [code](/examples/ltx2/model_inference_low_vram/LTX-2.5-T2AV-DistilledPipeline.py) | - | - | - | - |
|
|
679
712
|
| LTX-2.5 | [Lightricks/LTX-2.5-22b-IC-LoRA-Pixel-Spatial-Upscaler](https://www.modelscope.cn/models/Lightricks/LTX-2.5-22b-IC-LoRA-Pixel-Spatial-Upscaler) | [code](/examples/ltx2/model_inference/LTX-2.5-IC-LoRA-Pixel-Spatial-Upscaler.py) | [code](/examples/ltx2/model_inference_low_vram/LTX-2.5-IC-LoRA-Pixel-Spatial-Upscaler.py) | - | - | - | - |
|
|
680
|
-
| LTX-2.5 | [Lightricks/LTX-2.5: INT8-ConvRot](https://www.modelscope.cn/models/Lightricks/LTX-2.5) | [code](/examples/ltx2/model_inference/LTX-2.5-T2AV-INT8-ConvRot.py) | [code](/examples/ltx2/model_inference_low_vram/LTX-2.5-T2AV-INT8-ConvRot.py) | - | - | - | - |
|
|
713
|
+
| LTX-2.5 | [Lightricks/LTX-2.5: INT8-ConvRot](https://www.modelscope.cn/models/Lightricks/LTX-2.5) | [code](/examples/ltx2/model_inference/LTX-2.5-T2AV-INT8-ConvRot.py) | [code](/examples/ltx2/model_inference_low_vram/LTX-2.5-T2AV-INT8-ConvRot.py) | - | - | [code](/examples/ltx2/model_training/lora/LTX-2.5-Int8-ConvRot-splited.sh) | [code](/examples/ltx2/model_training/validate_lora/LTX-2.5-Int8-ConvRot.py) |
|
|
681
714
|
| LTX-2 | [jd-opensource/JoyAI-Echo](https://modelscope.cn/models/jd-opensource/JoyAI-Echo) | [code](/examples/ltx2/model_inference/JoyAI-Echo-T2AV.py) | [code](/examples/ltx2/model_inference_low_vram/JoyAI-Echo-T2AV.py) | [code](/examples/ltx2/model_training/full/JoyAI-Echo-T2AV-splited.sh) | [code](/examples/ltx2/model_training/validate_full/JoyAI-Echo-T2AV.py) | [code](/examples/ltx2/model_training/lora/JoyAI-Echo-T2AV-splited.sh) | [code](/examples/ltx2/model_training/validate_lora/JoyAI-Echo-T2AV.py) |
|
|
682
715
|
| LTX-2 | [Lightricks/LTX-2.3: OneStagePipeline-I2AV](https://www.modelscope.cn/models/Lightricks/LTX-2.3) | [code](/examples/ltx2/model_inference/LTX-2.3-I2AV-OneStage.py) | [code](/examples/ltx2/model_inference_low_vram/LTX-2.3-I2AV-OneStage.py) | [code](/examples/ltx2/model_training/full/LTX-2.3-I2AV-splited.sh) | [code](/examples/ltx2/model_training/validate_full/LTX-2.3-I2AV.py) | [code](/examples/ltx2/model_training/lora/LTX-2.3-I2AV-splited.sh) | [code](/examples/ltx2/model_training/validate_lora/LTX-2.3-I2AV.py) |
|
|
683
716
|
| LTX-2 | [Lightricks/LTX-2.3: TwoStagePipeline-I2AV](https://www.modelscope.cn/models/Lightricks/LTX-2.3) | [code](/examples/ltx2/model_inference/LTX-2.3-I2AV-TwoStage.py) | [code](/examples/ltx2/model_inference_low_vram/LTX-2.3-I2AV-TwoStage.py) | - | - | - | - |
|
|
@@ -605,6 +605,53 @@ ernie_image_series = [
|
|
|
605
605
|
},
|
|
606
606
|
]
|
|
607
607
|
|
|
608
|
+
moss_image_series = [
|
|
609
|
+
{
|
|
610
|
+
# Example: ModelConfig(model_id="openmoss/MOSS-Image-Base", origin_file_pattern="transformer/diffusion_pytorch_model*.safetensors")
|
|
611
|
+
# Example: ModelConfig(model_id="openmoss/MOSS-Image-SFT", origin_file_pattern="transformer/diffusion_pytorch_model*.safetensors")
|
|
612
|
+
"model_hash": "b2e1de16b1415bb811bcfc428d7991a7",
|
|
613
|
+
"model_name": "moss_image_dit",
|
|
614
|
+
"model_class": "diffsynth.models.moss_image_dit.MOSSImageDiT",
|
|
615
|
+
},
|
|
616
|
+
{
|
|
617
|
+
# Example: ModelConfig(model_id="openmoss/MOSS-Image-Base", origin_file_pattern="text_encoder/model*.safetensors")
|
|
618
|
+
# Example: ModelConfig(model_id="openmoss/MOSS-Image-SFT", origin_file_pattern="text_encoder/model*.safetensors")
|
|
619
|
+
"model_hash": "a7140be40b65f94f31942d5b5225f781",
|
|
620
|
+
"model_name": "moss_image_text_encoder",
|
|
621
|
+
"model_class": "diffsynth.models.moss_image_text_encoder.MOSSImageTextEncoder",
|
|
622
|
+
"state_dict_converter": "diffsynth.utils.state_dict_converters.moss_image_text_encoder.MOSSImageTextEncoderStateDictConverter",
|
|
623
|
+
},
|
|
624
|
+
{
|
|
625
|
+
# Example: ModelConfig(model_id="openmoss/MOSS-Image-Base", origin_file_pattern="vae/diffusion_pytorch_model.safetensors")
|
|
626
|
+
# Example: ModelConfig(model_id="openmoss/MOSS-Image-SFT", origin_file_pattern="vae/diffusion_pytorch_model.safetensors")
|
|
627
|
+
"model_hash": "dc89b5bac72b57182f384e21632db90d",
|
|
628
|
+
"model_name": "flux2_vae",
|
|
629
|
+
"model_class": "diffsynth.models.flux2_vae.Flux2VAE",
|
|
630
|
+
"extra_kwargs": {"decoder_block_out_channels": [96, 192, 384, 384]}
|
|
631
|
+
},
|
|
632
|
+
{
|
|
633
|
+
# Example: ModelConfig(model_id="DiffSynth-Studio/MOSS-Image-EntroPack", origin_file_pattern="models/MOSS-Image-Base/dit_6bit.safetensors")
|
|
634
|
+
"model_hash": "b895b1ad67dd7a9f225dc4ad7dcec3f2",
|
|
635
|
+
"model_name": "moss_image_dit",
|
|
636
|
+
"model_class": "diffsynth.models.moss_image_dit.MOSSImageDiT",
|
|
637
|
+
"quant_config": {"method": "entropack_lossy_quant", "load_prequantized": True, "backend_config_kwargs": {"target_bpp": 6.0, "row_rdo_iterations": 2, "row_rdo_candidates": 20}},
|
|
638
|
+
},
|
|
639
|
+
{
|
|
640
|
+
# Example: ModelConfig(model_id="DiffSynth-Studio/MOSS-Image-EntroPack", origin_file_pattern="models/MOSS-Image-SFT/dit_6bit.safetensors")
|
|
641
|
+
"model_hash": "6f2e6e215ce1ad45e42ef84632165fbd",
|
|
642
|
+
"model_name": "moss_image_dit",
|
|
643
|
+
"model_class": "diffsynth.models.moss_image_dit.MOSSImageDiT",
|
|
644
|
+
"quant_config": {"method": "entropack_lossy_quant", "load_prequantized": True, "backend_config_kwargs": {"target_bpp": 6.0, "row_rdo_iterations": 2, "row_rdo_candidates": 20}},
|
|
645
|
+
},
|
|
646
|
+
{
|
|
647
|
+
# Example: ModelConfig(model_id="DiffSynth-Studio/MOSS-Image-EntroPack", origin_file_pattern="models/text_encoder_6bit.safetensors")
|
|
648
|
+
"model_hash": "c857c646d678fc7f40fe8465524efeeb",
|
|
649
|
+
"model_name": "moss_image_text_encoder",
|
|
650
|
+
"model_class": "diffsynth.models.moss_image_text_encoder.MOSSImageTextEncoder",
|
|
651
|
+
"quant_config": {"method": "entropack_lossy_quant", "load_prequantized": True, "backend_config_kwargs": {"target_bpp": 6.0, "row_rdo_iterations": 2, "row_rdo_candidates": 20}},
|
|
652
|
+
},
|
|
653
|
+
]
|
|
654
|
+
|
|
608
655
|
z_image_series = [
|
|
609
656
|
{
|
|
610
657
|
# Example: ModelConfig(model_id="Tongyi-MAI/Z-Image-Turbo", origin_file_pattern="transformer/*.safetensors")
|
|
@@ -1653,6 +1700,13 @@ minimax_h3_series = [
|
|
|
1653
1700
|
"quant_config": {"method": "comfy_kitchen_int8_w8a8", "load_prequantized": True, "exclude_modules": ["video_patch_proj", "audio_patch_proj", "condition_proj", "time_embedder.proj_in", "time_embedder.proj_out", "final_layer.adaln_proj.linear", "final_layer.video_out", "final_layer.audio_out", "token_refiner.blocks.0.attn.qkv_proj", "token_refiner.blocks.0.attn.out_proj", "token_refiner.blocks.0.mlp.fc1", "token_refiner.blocks.0.mlp.fc2", "token_refiner.blocks.1.attn.qkv_proj", "token_refiner.blocks.1.attn.out_proj", "token_refiner.blocks.1.mlp.fc1", "token_refiner.blocks.1.mlp.fc2"]},
|
|
1654
1701
|
"state_dict_converter": "diffsynth.utils.state_dict_converters.minimax_h3_dit.MiniMaxH3DiTSingularityStateDictConverter",
|
|
1655
1702
|
},
|
|
1703
|
+
{
|
|
1704
|
+
# Example: ModelConfig(model_id="OpenVDN/vdn-minimax-h3", origin_file_pattern="stage-dmd-step-250/linear_branch/model.safetensors")
|
|
1705
|
+
"model_hash": "6b8d2b6ae09fc45cbe3e5a9a57e4512a",
|
|
1706
|
+
"model_name": "minimax_h3_vdn_linear_branch",
|
|
1707
|
+
"model_class": "diffsynth.models.minimax_h3_dit_vdn.MiniMaxH3VDNBranch",
|
|
1708
|
+
"state_dict_converter": "diffsynth.utils.state_dict_converters.minimax_h3_dit_vdn.MiniMaxH3VDNBranchStateDictConverter",
|
|
1709
|
+
},
|
|
1656
1710
|
]
|
|
1657
1711
|
|
|
1658
1712
|
minimax_music3_series = [
|
|
@@ -1743,9 +1797,55 @@ qwen_image_21_series = [
|
|
|
1743
1797
|
},
|
|
1744
1798
|
]
|
|
1745
1799
|
|
|
1800
|
+
flux3_series = [
|
|
1801
|
+
{
|
|
1802
|
+
# Example: ModelConfig(model_id="black-forest-labs/flux-3-image-klein", origin_file_pattern="model.safetensors")
|
|
1803
|
+
"model_hash": "cb8e9c6df08faa5cf99c11be4d34d26b",
|
|
1804
|
+
"model_name": "flux3_dit",
|
|
1805
|
+
"model_class": "diffsynth.models.flux3_dit.Flux3DiT",
|
|
1806
|
+
"extra_kwargs": {"flow_map": True},
|
|
1807
|
+
},
|
|
1808
|
+
{
|
|
1809
|
+
# Example: ModelConfig(model_id="black-forest-labs/flux-3-image-klein", origin_file_pattern="transformer/*.safetensors")
|
|
1810
|
+
"model_hash": "d98fcf51c088ad9910399b0d7fdfe692",
|
|
1811
|
+
"model_name": "flux3_dit",
|
|
1812
|
+
"model_class": "diffsynth.models.flux3_dit.Flux3DiTDiffusers",
|
|
1813
|
+
"state_dict_converter": "diffsynth.utils.state_dict_converters.flux3_dit.Flux3DiTFromDiffusers",
|
|
1814
|
+
"extra_kwargs": {"flow_map": True},
|
|
1815
|
+
},
|
|
1816
|
+
{
|
|
1817
|
+
# Example: ModelConfig(model_id="black-forest-labs/flux-3-image-klein-base", origin_file_pattern="model.safetensors")
|
|
1818
|
+
"model_hash": "3a12023223002ebc2f30c85d3d1257ea",
|
|
1819
|
+
"model_name": "flux3_dit",
|
|
1820
|
+
"model_class": "diffsynth.models.flux3_dit.Flux3DiT",
|
|
1821
|
+
},
|
|
1822
|
+
{
|
|
1823
|
+
# Example: ModelConfig(model_id="black-forest-labs/flux-3-image-klein-base", origin_file_pattern="transformer/*.safetensors")
|
|
1824
|
+
"model_hash": "fb4609249d89aeb716222378f92005ce",
|
|
1825
|
+
"model_name": "flux3_dit",
|
|
1826
|
+
"model_class": "diffsynth.models.flux3_dit.Flux3DiTDiffusers",
|
|
1827
|
+
"state_dict_converter": "diffsynth.utils.state_dict_converters.flux3_dit.Flux3DiTFromDiffusers",
|
|
1828
|
+
},
|
|
1829
|
+
{
|
|
1830
|
+
# Example: ModelConfig(model_id="DiffSynth-Studio/flux-3-image-klein-entropack", origin_file_pattern="models/dit_4bit.safetensors")
|
|
1831
|
+
"model_hash": "3899702d86c8f8249bdb1535359c424b",
|
|
1832
|
+
"model_name": "flux3_dit",
|
|
1833
|
+
"model_class": "diffsynth.models.flux3_dit.Flux3DiT",
|
|
1834
|
+
"extra_kwargs": {"flow_map": True},
|
|
1835
|
+
"quant_config": {"method": "entropack_lossy_quant", "load_prequantized": True, "backend_config_kwargs": {"target_bpp": 4.0, "row_rdo_iterations": 2, "row_rdo_candidates": 20}},
|
|
1836
|
+
},
|
|
1837
|
+
{
|
|
1838
|
+
# Example: ModelConfig(model_id="DiffSynth-Studio/flux-3-image-klein-entropack", origin_file_pattern="models/text_encoder_4bit.safetensors")
|
|
1839
|
+
"model_hash": "05233849ee3764c2665a2165b5d4adff",
|
|
1840
|
+
"model_name": "krea2_text_encoder",
|
|
1841
|
+
"model_class": "diffsynth.models.krea2_text_encoder.Krea2TextEncoder",
|
|
1842
|
+
"quant_config": {"method": "entropack_lossy_quant", "load_prequantized": True, "backend_config_kwargs": {"target_bpp": 4.0, "row_rdo_iterations": 2, "row_rdo_candidates": 20}},
|
|
1843
|
+
},
|
|
1844
|
+
]
|
|
1845
|
+
|
|
1746
1846
|
MODEL_CONFIGS = (
|
|
1747
1847
|
stable_diffusion_xl_series + stable_diffusion_series + qwen_image_series + qwen_video_edit_series + wan_series + flux_series + flux2_series + ernie_image_series
|
|
1748
1848
|
+ z_image_series + ltx2_series + anima_series + mova_series + joyai_image_series + boogu_image_series + ace_step_series + hidream_o1_image_series
|
|
1749
1849
|
+ image_metrics_series + ideogram4_series + krea2_series + lingbot_video_series + minimax_h3_series + minimax_music3_series + sensenova_u1_series
|
|
1750
|
-
+ yue2_series + qwen_image_21_series
|
|
1850
|
+
+ yue2_series + qwen_image_21_series + flux3_series + moss_image_series
|
|
1751
1851
|
)
|
|
@@ -22,6 +22,13 @@ VRAM_MANAGEMENT_MODULE_MAPS = {
|
|
|
22
22
|
"torch.nn.Linear": "diffsynth.core.vram.layers.AutoWrappedLinear",
|
|
23
23
|
"torch.nn.RMSNorm": "diffsynth.core.vram.layers.AutoWrappedModule",
|
|
24
24
|
},
|
|
25
|
+
"diffsynth.models.minimax_h3_dit_vdn.MiniMaxH3VDNBranch": {
|
|
26
|
+
"torch.nn.Linear": "diffsynth.core.vram.layers.AutoWrappedLinear",
|
|
27
|
+
"torch.nn.Conv2d": "diffsynth.core.vram.layers.AutoWrappedModule",
|
|
28
|
+
"diffsynth.models.minimax_h3_dit_vdn.MiniMaxH3VDNTemporalConv": "diffsynth.core.vram.layers.AutoWrappedModule",
|
|
29
|
+
"diffsynth.models.minimax_h3_dit_vdn.MiniMaxH3VDNRMSNorm": "diffsynth.core.vram.layers.AutoWrappedModule",
|
|
30
|
+
"diffsynth.models.minimax_h3_dit_vdn.MiniMaxH3VDNAlpha": "diffsynth.core.vram.layers.AutoWrappedModule",
|
|
31
|
+
},
|
|
25
32
|
"diffsynth.models.minimax_h3_text_encoder.MiniMaxH3TextEncoder": {
|
|
26
33
|
"torch.nn.Linear": "diffsynth.core.vram.layers.AutoWrappedLinear",
|
|
27
34
|
"torch.nn.Embedding": "diffsynth.core.vram.layers.AutoWrappedModule",
|
|
@@ -234,6 +241,11 @@ VRAM_MANAGEMENT_MODULE_MAPS = {
|
|
|
234
241
|
"torch.nn.LayerNorm": "diffsynth.core.vram.layers.AutoWrappedModule",
|
|
235
242
|
"torch.nn.RMSNorm": "diffsynth.core.vram.layers.AutoWrappedModule",
|
|
236
243
|
},
|
|
244
|
+
"diffsynth.models.flux3_dit.Flux3DiT": {
|
|
245
|
+
"torch.nn.Linear": "diffsynth.core.vram.layers.AutoWrappedLinear",
|
|
246
|
+
"diffsynth.models.flux3_dit.RMSNorm": "diffsynth.core.vram.layers.AutoWrappedModule",
|
|
247
|
+
"diffsynth.models.flux3_dit.QKNorm": "diffsynth.core.vram.layers.AutoWrappedModule",
|
|
248
|
+
},
|
|
237
249
|
"diffsynth.models.flux2_text_encoder.Flux2TextEncoder": {
|
|
238
250
|
"torch.nn.Linear": "diffsynth.core.vram.layers.AutoWrappedLinear",
|
|
239
251
|
"torch.nn.Conv2d": "diffsynth.core.vram.layers.AutoWrappedModule",
|
|
@@ -355,6 +367,19 @@ VRAM_MANAGEMENT_MODULE_MAPS = {
|
|
|
355
367
|
"torch.nn.Embedding": "diffsynth.core.vram.layers.AutoWrappedModule",
|
|
356
368
|
"transformers.models.ministral3.modeling_ministral3.Ministral3RMSNorm": "diffsynth.core.vram.layers.AutoWrappedModule",
|
|
357
369
|
},
|
|
370
|
+
"diffsynth.models.moss_image_dit.MOSSImageDiT": {
|
|
371
|
+
"torch.nn.Linear": "diffsynth.core.vram.layers.AutoWrappedLinear",
|
|
372
|
+
"diffsynth.models.general_modules.RMSNorm": "diffsynth.core.vram.layers.AutoWrappedModule",
|
|
373
|
+
},
|
|
374
|
+
"diffsynth.models.moss_image_text_encoder.MOSSImageTextEncoder": {
|
|
375
|
+
"torch.nn.Linear": "diffsynth.core.vram.layers.AutoWrappedLinear",
|
|
376
|
+
"torch.nn.Embedding": "diffsynth.core.vram.layers.AutoWrappedModule",
|
|
377
|
+
"torch.nn.Conv1d": "diffsynth.core.vram.layers.AutoWrappedModule",
|
|
378
|
+
"transformers.models.qwen3_5.modeling_qwen3_5.Qwen3_5RMSNorm": "diffsynth.core.vram.layers.AutoWrappedModule",
|
|
379
|
+
"transformers.models.qwen3_5.modeling_qwen3_5.Qwen3_5RMSNormGated": "diffsynth.core.vram.layers.AutoWrappedModule",
|
|
380
|
+
"transformers.models.qwen3_5.modeling_qwen3_5.Qwen3_5TextRotaryEmbedding": "diffsynth.core.vram.layers.AutoWrappedModule",
|
|
381
|
+
"transformers.models.qwen3_5.modeling_qwen3_5.Qwen3_5GatedDeltaNet": "diffsynth.core.vram.layers.AutoWrappedNonRecurseModule",
|
|
382
|
+
},
|
|
358
383
|
"diffsynth.models.joyai_image_dit.JoyAIImageDiT": {
|
|
359
384
|
"diffsynth.models.joyai_image_dit.RMSNorm": "diffsynth.core.vram.layers.AutoWrappedModule",
|
|
360
385
|
"diffsynth.models.joyai_image_dit.ModulateWan": "diffsynth.core.vram.layers.AutoWrappedModule",
|
|
@@ -61,7 +61,7 @@ class UnifiedDataset(torch.utils.data.Dataset):
|
|
|
61
61
|
])
|
|
62
62
|
|
|
63
63
|
def search_for_cached_data_files(self, path):
|
|
64
|
-
for file_name in os.listdir(path):
|
|
64
|
+
for file_name in sorted(os.listdir(path)):
|
|
65
65
|
subpath = os.path.join(path, file_name)
|
|
66
66
|
if os.path.isdir(subpath):
|
|
67
67
|
self.search_for_cached_data_files(subpath)
|
|
@@ -14,9 +14,11 @@ def create_custom_forward(module):
|
|
|
14
14
|
return custom_forward
|
|
15
15
|
|
|
16
16
|
|
|
17
|
-
def create_custom_forward_use_reentrant(module):
|
|
17
|
+
def create_custom_forward_use_reentrant(module, num_positional_args, kwarg_keys):
|
|
18
18
|
def custom_forward(*inputs):
|
|
19
|
-
|
|
19
|
+
positional_args = inputs[:num_positional_args]
|
|
20
|
+
keyword_args = dict(zip(kwarg_keys, inputs[num_positional_args:]))
|
|
21
|
+
return module(*positional_args, **keyword_args)
|
|
20
22
|
return custom_forward
|
|
21
23
|
|
|
22
24
|
|
|
@@ -35,13 +37,18 @@ def gradient_checkpoint_forward(
|
|
|
35
37
|
**kwargs,
|
|
36
38
|
):
|
|
37
39
|
if use_gradient_checkpointing and _HAS_DEEPSPEED and deepspeed.checkpointing.is_configured():
|
|
40
|
+
kwarg_keys = tuple(kwargs)
|
|
38
41
|
all_args = args + tuple(kwargs.values())
|
|
39
42
|
if not judge_args_requires_grad(*all_args):
|
|
40
43
|
# get the first grad_enabled tensor from un_checkpointed forward
|
|
41
44
|
model_output = model(*args, **kwargs)
|
|
42
45
|
else:
|
|
43
46
|
model_output = deepspeed.checkpointing.checkpoint(
|
|
44
|
-
create_custom_forward_use_reentrant(
|
|
47
|
+
create_custom_forward_use_reentrant(
|
|
48
|
+
model,
|
|
49
|
+
len(args),
|
|
50
|
+
kwarg_keys,
|
|
51
|
+
),
|
|
45
52
|
*all_args,
|
|
46
53
|
)
|
|
47
54
|
return model_output
|
|
@@ -51,6 +51,11 @@ if ENTROPACK_AVAILABLE:
|
|
|
51
51
|
linear_cls = ep.CompressedINT8Linear
|
|
52
52
|
|
|
53
53
|
|
|
54
|
+
def _graph_break_quantized_linear(module):
|
|
55
|
+
module.forward = torch._dynamo.disable(module.forward)
|
|
56
|
+
return module
|
|
57
|
+
|
|
58
|
+
|
|
54
59
|
@register_quant_backend("entropack")
|
|
55
60
|
class EntroPackQuantBackend(QuantBackend):
|
|
56
61
|
"""Adapter over entropack's `CompressedLinear` family; a method's config is the config its layers get."""
|
|
@@ -70,7 +75,7 @@ class EntroPackQuantBackend(QuantBackend):
|
|
|
70
75
|
return {
|
|
71
76
|
"is_serializable": True,
|
|
72
77
|
"is_differentiable": True,
|
|
73
|
-
"is_compileable":
|
|
78
|
+
"is_compileable": True,
|
|
74
79
|
"requires_calibration": False,
|
|
75
80
|
}
|
|
76
81
|
|
|
@@ -85,13 +90,15 @@ class EntroPackQuantBackend(QuantBackend):
|
|
|
85
90
|
if compute_device is not None:
|
|
86
91
|
linear = linear.to(device=compute_device)
|
|
87
92
|
quantized = self.config.linear_cls.from_linear(linear, config=self.config)
|
|
88
|
-
|
|
93
|
+
quantized = quantized if model_device is None else quantized.to(device=model_device)
|
|
94
|
+
return _graph_break_quantized_linear(quantized)
|
|
89
95
|
|
|
90
96
|
def create_quantized_linear_shell(self, linear, compute_dtype):
|
|
91
|
-
|
|
97
|
+
shell = self.config.linear_cls(
|
|
92
98
|
linear.in_features, linear.out_features, bias=linear.bias is not None,
|
|
93
99
|
dtype=compute_dtype, config=self.config,
|
|
94
100
|
)
|
|
101
|
+
return _graph_break_quantized_linear(shell)
|
|
95
102
|
|
|
96
103
|
def dequantize_to_linear(self, module, compute_dtype, compute_device=None, model_device=None):
|
|
97
104
|
if compute_device is not None:
|
|
@@ -128,6 +128,7 @@ class AutoWrappedModule(AutoTorchModule):
|
|
|
128
128
|
else:
|
|
129
129
|
self.disk_offload = False
|
|
130
130
|
|
|
131
|
+
@torch._dynamo.disable
|
|
131
132
|
def load_from_disk(self, torch_dtype, device, copy_module=False):
|
|
132
133
|
if copy_module:
|
|
133
134
|
module = copy.deepcopy(self.module)
|
|
@@ -245,6 +246,7 @@ class AutoWrappedNonRecurseModule(AutoWrappedModule):
|
|
|
245
246
|
if self.disk_offload:
|
|
246
247
|
self.required_params = [name for name, _ in self.module.named_parameters(recurse=False)]
|
|
247
248
|
|
|
249
|
+
@torch._dynamo.disable
|
|
248
250
|
def load_from_disk(self, torch_dtype, device, copy_module=False):
|
|
249
251
|
if copy_module:
|
|
250
252
|
module = copy.deepcopy(self.module)
|
|
@@ -374,6 +376,7 @@ class AutoWrappedLinear(torch.nn.Linear, AutoTorchModule, LoRAHotLoadMixin):
|
|
|
374
376
|
result = result.reshape(new_shape)
|
|
375
377
|
return result
|
|
376
378
|
|
|
379
|
+
@torch._dynamo.disable
|
|
377
380
|
def load_from_disk(self, torch_dtype, device, assign=True):
|
|
378
381
|
weight = self.disk_map[self.name + ".weight"].to(dtype=torch_dtype, device=device)
|
|
379
382
|
bias = None if self.bias is None else self.disk_map[self.name + ".bias"].to(dtype=torch_dtype, device=device)
|
|
@@ -495,6 +498,7 @@ class AutoWrappedQuantizedModule(torch.nn.Linear, AutoTorchModule, LoRAHotLoadMi
|
|
|
495
498
|
self._required_keys = [key for key in self.disk_map if key.startswith(self.name + ".")]
|
|
496
499
|
return self._required_keys
|
|
497
500
|
|
|
501
|
+
@torch._dynamo.disable
|
|
498
502
|
def _load_from_disk(self, device, target=None):
|
|
499
503
|
module = self.module if target is None else target
|
|
500
504
|
prefix = self.name + "."
|
|
@@ -5,16 +5,18 @@ 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", "Z-Image", "LTX-2", "Qwen-Image-Lightning", "ERNIE-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"] = "FLUX.1"):
|
|
9
9
|
self.set_timesteps_fn = {
|
|
10
10
|
"FLUX.1": FlowMatchScheduler.set_timesteps_flux,
|
|
11
11
|
"Wan": FlowMatchScheduler.set_timesteps_wan,
|
|
12
12
|
"Qwen-Image": FlowMatchScheduler.set_timesteps_qwen_image,
|
|
13
13
|
"FLUX.2": FlowMatchScheduler.set_timesteps_flux2,
|
|
14
|
+
"FLUX.3": FlowMatchScheduler.set_timesteps_flux3,
|
|
14
15
|
"Z-Image": FlowMatchScheduler.set_timesteps_z_image,
|
|
15
16
|
"LTX-2": FlowMatchScheduler.set_timesteps_ltx2,
|
|
16
17
|
"Qwen-Image-Lightning": FlowMatchScheduler.set_timesteps_qwen_image_lightning,
|
|
17
18
|
"ERNIE-Image": FlowMatchScheduler.set_timesteps_ernie_image,
|
|
19
|
+
"MOSS-Image": FlowMatchScheduler.set_timesteps_moss_image,
|
|
18
20
|
"ACE-Step": FlowMatchScheduler.set_timesteps_ace_step,
|
|
19
21
|
"HiDream-O1-Image": FlowMatchScheduler.set_timesteps_hidream_o1_image,
|
|
20
22
|
"Ideogram4": FlowMatchScheduler.set_timesteps_ideogram4,
|
|
@@ -166,6 +168,13 @@ class FlowMatchScheduler():
|
|
|
166
168
|
timesteps = sigmas * num_train_timesteps
|
|
167
169
|
return sigmas, timesteps
|
|
168
170
|
|
|
171
|
+
@staticmethod
|
|
172
|
+
def set_timesteps_flux3(num_inference_steps=16, denoising_strength=1.0, alpha=6.93, **kwargs):
|
|
173
|
+
u = torch.linspace(denoising_strength, 0.0, num_inference_steps + 1)[:-1]
|
|
174
|
+
sigmas = alpha * u / (1.0 + (alpha - 1.0) * u)
|
|
175
|
+
timesteps = sigmas * 1000
|
|
176
|
+
return sigmas, timesteps
|
|
177
|
+
|
|
169
178
|
@staticmethod
|
|
170
179
|
def set_timesteps_ernie_image(num_inference_steps=50, denoising_strength=1.0, shift=3.0):
|
|
171
180
|
sigma_min = 0.0
|
|
@@ -178,6 +187,25 @@ class FlowMatchScheduler():
|
|
|
178
187
|
timesteps = sigmas * num_train_timesteps
|
|
179
188
|
return sigmas, timesteps
|
|
180
189
|
|
|
190
|
+
@staticmethod
|
|
191
|
+
def set_timesteps_moss_image(num_inference_steps=50, denoising_strength=1.0, shift=5.0, training_shift=1.0):
|
|
192
|
+
num_train_timesteps = 1000
|
|
193
|
+
|
|
194
|
+
def grid(count, shift, start=1.0):
|
|
195
|
+
lower = shift / (num_train_timesteps + shift - 1)
|
|
196
|
+
values = torch.linspace(start, lower, count)
|
|
197
|
+
return shift * values / (1 + (shift - 1) * values)
|
|
198
|
+
|
|
199
|
+
sigmas = grid(num_inference_steps, shift, denoising_strength)
|
|
200
|
+
training = grid(num_train_timesteps, training_shift).flip(0)
|
|
201
|
+
upper = torch.searchsorted(training, sigmas).clamp(max=num_train_timesteps - 1)
|
|
202
|
+
lower = (upper - 1).clamp(min=0)
|
|
203
|
+
nearest = torch.where((sigmas - training[lower]).abs() <= (training[upper] - sigmas).abs(), lower, upper)
|
|
204
|
+
|
|
205
|
+
sigmas = torch.unique_consecutive(training[nearest])
|
|
206
|
+
timesteps = sigmas * num_train_timesteps
|
|
207
|
+
return sigmas, timesteps
|
|
208
|
+
|
|
181
209
|
@staticmethod
|
|
182
210
|
def set_timesteps_sensenova_u1(num_inference_steps=50, denoising_strength=1.0, shift=3.0):
|
|
183
211
|
num_train_timesteps = 1000
|
|
@@ -32,7 +32,7 @@ def add_model_config(parser: argparse.ArgumentParser):
|
|
|
32
32
|
return parser
|
|
33
33
|
|
|
34
34
|
def add_quant_config(parser: argparse.ArgumentParser):
|
|
35
|
-
parser.add_argument("--quant_options", type=str, default=None, help="Dynamically quantize loaded models. Semicolon-separated entries, each `<model_string>:<method>[/<exclude_modules>]`, where `<model_string>` matches an entry in `--model_paths`/`--model_id_with_origin_paths`, `method` is a registered method (e.g. bitsandbytes_nf4), and `exclude_modules` optionally lists layers kept in full precision.")
|
|
35
|
+
parser.add_argument("--quant_options", type=str, default=None, help="Dynamically quantize loaded models. Semicolon-separated entries, each `<model_string>:<method>[/<exclude_modules>]`, where `<model_string>` matches an entry in `--model_paths`/`--model_id_with_origin_paths`, `method` is a registered method (e.g. bitsandbytes_nf4), and `exclude_modules` optionally lists layers kept in full precision. Alternatively, pass a JSON object mapping the same model strings to configs: `method`, optional `backend_config_kwargs` (method-specific parameters), and `target_modules`/`exclude_modules` (JSON lists of layer names). For example: --quant_options '{\"org/model:transformer/*.safetensors\": {\"method\": \"bitsandbytes_nf4\", \"backend_config_kwargs\": {\"blocksize\": 64}, \"exclude_modules\": [\"to_q\"]}}'. For mixed quantization, use a `configs` list of these configs instead of `method`, with `target_modules`/`exclude_modules` selecting non-overlapping layer sets.")
|
|
36
36
|
return parser
|
|
37
37
|
|
|
38
38
|
def add_training_config(parser: argparse.ArgumentParser):
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import torch, json, os, inspect
|
|
2
2
|
from ..core import ModelConfig, load_state_dict, QuantizeConfig
|
|
3
|
+
from ..core.quant import MixedQuantizeConfig
|
|
3
4
|
from ..utils.controlnet import ControlNetInput
|
|
4
5
|
from .base_pipeline import PipelineUnit
|
|
5
6
|
|
|
@@ -180,6 +181,26 @@ class DiffusionTrainingModule(torch.nn.Module):
|
|
|
180
181
|
quant_map = {}
|
|
181
182
|
if quant_options is None:
|
|
182
183
|
return quant_map
|
|
184
|
+
|
|
185
|
+
# JSON format
|
|
186
|
+
if quant_options.lstrip().startswith("{"):
|
|
187
|
+
json_options = json.loads(quant_options)
|
|
188
|
+
for model_string, value in json_options.items():
|
|
189
|
+
if not isinstance(value, dict):
|
|
190
|
+
raise ValueError(f"Failed to parse quant option JSON: the config for `{model_string}` must be an object, got {type(value).__name__}.")
|
|
191
|
+
child_configs = value.pop("configs", None)
|
|
192
|
+
for config_dict in [value] + (child_configs if isinstance(child_configs, list) else []):
|
|
193
|
+
if isinstance(config_dict, dict) and not isinstance(config_dict.get("load_prequantized", False), bool):
|
|
194
|
+
raise ValueError(f"Failed to parse quant option JSON: `load_prequantized` for `{model_string}` must be a boolean, got {type(config_dict['load_prequantized']).__name__}.")
|
|
195
|
+
configs = [QuantizeConfig(**child) for child in (child_configs if child_configs is not None else [value])]
|
|
196
|
+
quant_config = configs[0] if child_configs is None else MixedQuantizeConfig(configs=configs, **value)
|
|
197
|
+
methods = [config.method for config in configs if not config.backend.capabilities().get("is_differentiable", True)]
|
|
198
|
+
if methods:
|
|
199
|
+
raise ValueError(f"Quantization method(s) {methods} are not differentiable, so they cannot be used for training.")
|
|
200
|
+
quant_map[self.normalize_quant_key(model_string)] = quant_config
|
|
201
|
+
return quant_map
|
|
202
|
+
|
|
203
|
+
# Semicolon-separated format
|
|
183
204
|
for entry in quant_options.split(";"):
|
|
184
205
|
if entry == "":
|
|
185
206
|
continue
|