diffsynth 2.1.4__tar.gz → 2.1.5__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.4 → diffsynth-2.1.5}/PKG-INFO +4 -1
- {diffsynth-2.1.4 → diffsynth-2.1.5}/README.md +3 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/core/loader/config.py +2 -2
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/core/loader/model.py +3 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/core/quant/backends/bitsandbytes.py +24 -24
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/core/vram/layers.py +5 -2
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/diffusion/base_pipeline.py +9 -1
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/diffusion/loss.py +24 -1
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/diffusion/training_module.py +1 -1
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/pipelines/ace_step.py +2 -1
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/pipelines/minimax_h3_audio_video.py +14 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/pipelines/minimax_music3.py +15 -1
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/version.py +1 -1
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth.egg-info/PKG-INFO +4 -1
- {diffsynth-2.1.4 → diffsynth-2.1.5}/LICENSE +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/__init__.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/configs/__init__.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/configs/model_configs.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/configs/vram_management_module_maps.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/core/__init__.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/core/attention/__init__.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/core/attention/attention.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/core/data/__init__.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/core/data/operators.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/core/data/unified_dataset.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/core/device/__init__.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/core/device/npu_compatible_device.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/core/gradient/__init__.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/core/gradient/gradient_checkpoint.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/core/loader/__init__.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/core/loader/file.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/core/npu_patch/npu_fused_operator.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/core/offload_training/__init__.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/core/offload_training/manager.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/core/offload_training/memory_buffer.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/core/offload_training/offloader.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/core/quant/__init__.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/core/quant/backends/__init__.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/core/quant/backends/comfy_kitchen.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/core/quant/backends/torchao.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/core/quant/base.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/core/quant/config.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/core/vram/__init__.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/core/vram/disk_map.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/core/vram/initialization.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/diffusion/__init__.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/diffusion/ddim_scheduler.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/diffusion/dmd2.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/diffusion/flow_match.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/diffusion/logger.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/diffusion/parsers.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/diffusion/runner.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/diffusion/template.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/metrics/__init__.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/metrics/aesthetic.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/metrics/base.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/metrics/bioclip.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/metrics/clip.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/metrics/fid.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/metrics/hpsv2.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/metrics/hpsv3.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/metrics/image_reward.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/metrics/lpips.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/metrics/pickscore.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/metrics/qwen_image_bench.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/metrics/unified_reward_2.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/metrics/unified_reward_edit.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/ace_step_conditioner.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/ace_step_dit.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/ace_step_residual_fsq.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/ace_step_text_encoder.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/ace_step_tokenizer.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/ace_step_vae.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/aesthetic.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/anima_dit.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/bioclip.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/boogu_image_dit.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/clip.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/demucs.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/dinov3_image_encoder.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/ernie_image_dit.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/ernie_image_text_encoder.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/fid.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/flux2_dit.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/flux2_text_encoder.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/flux2_vae.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/flux_controlnet.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/flux_dit.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/flux_infiniteyou.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/flux_ipadapter.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/flux_lora_encoder.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/flux_lora_patcher.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/flux_redux.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/flux_text_encoder_clip.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/flux_text_encoder_t5.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/flux_vae.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/flux_value_control.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/general_modules.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/hidream_common.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/hidream_o1_image_dit.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/hpsv2.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/hpsv3.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/ideogram4_dit.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/ideogram4_text_encoder.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/ideogram4_vae.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/image_reward.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/joyai_image_dit.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/joyai_image_text_encoder.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/krea2_dit.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/krea2_text_encoder.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/lingbot_video_dit.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/longcat_video_dit.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/lpips.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/ltx2_audio_vae.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/ltx2_common.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/ltx2_dit.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/ltx2_text_encoder.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/ltx2_upsampler.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/ltx2_video_vae.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/minimax_h3_audio_vae.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/minimax_h3_dit.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/minimax_h3_dit_comfy.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/minimax_h3_text_encoder.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/minimax_h3_video_vae.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/minimax_music3_condition_encoder.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/minimax_music3_dit.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/minimax_music3_rvq_depth_decoder.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/minimax_music3_text_encoder.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/minimax_music3_vocoder.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/model_loader.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/mova_audio_dit.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/mova_audio_vae.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/mova_dual_tower_bridge.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/nexus_gen.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/nexus_gen_ar_model.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/nexus_gen_projector.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/pickscore.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/qwen_image_bench.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/qwen_image_controlnet.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/qwen_image_dit.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/qwen_image_image2lora.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/qwen_image_text_encoder.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/qwen_image_vae.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/sd_text_encoder.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/siglip2_image_encoder.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/stable_diffusion_text_encoder.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/stable_diffusion_unet.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/stable_diffusion_vae.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/stable_diffusion_xl_text_encoder.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/stable_diffusion_xl_unet.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/step1x_connector.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/step1x_text_encoder.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/unified_reward_2.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/unified_reward_edit.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/wan_animate_2_dit.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/wan_video_animate_adapter.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/wan_video_camera_controller.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/wan_video_dit.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/wan_video_dit_s2v.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/wan_video_image_encoder.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/wan_video_mot.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/wan_video_motion_controller.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/wan_video_text_encoder.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/wan_video_vace.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/wan_video_vae.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/wantodance.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/wav2vec.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/z_image_controlnet.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/z_image_dit.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/z_image_image2lora.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/models/z_image_text_encoder.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/pipelines/anima_image.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/pipelines/boogu_image.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/pipelines/ernie_image.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/pipelines/flux2_image.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/pipelines/flux_image.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/pipelines/hidream_o1_image.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/pipelines/ideogram4.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/pipelines/joyai_image.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/pipelines/krea2.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/pipelines/lingbot_video.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/pipelines/ltx2_audio_video.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/pipelines/mova_audio_video.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/pipelines/qwen_image.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/pipelines/stable_diffusion.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/pipelines/stable_diffusion_xl.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/pipelines/wan_video.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/pipelines/z_image.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/controlnet/__init__.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/controlnet/annotator.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/controlnet/controlnet_input.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/data/__init__.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/data/audio.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/data/audio_video.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/data/media_io_ltx2.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/data/minimax_h3.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/demucs/__init__.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/dequantizer/__init__.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/lora/__init__.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/lora/flux.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/lora/flux_timestep.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/lora/general.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/lora/krea2.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/lora/merge.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/lora/minimax_h3.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/lora/reset_rank.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/lora/sdxl.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/quant/serialization.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/ses/__init__.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/ses/ses.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/__init__.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/ace_step_conditioner.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/ace_step_dit.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/ace_step_text_encoder.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/ace_step_tokenizer.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/anima_dit.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/dino_v3.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/ernie_image_text_encoder.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/flux2_text_encoder.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/flux_controlnet.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/flux_dit.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/flux_infiniteyou.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/flux_ipadapter.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/flux_text_encoder_clip.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/flux_text_encoder_t5.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/flux_vae.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/ideogram4_text_encoder.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/image_metrics.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/joyai_image_text_encoder.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/krea2_dit.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/krea2_text_encoder.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/lingbot_video_dit.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/ltx2_audio_vae.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/ltx2_dit.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/ltx2_text_encoder.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/ltx2_video_vae.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/minimax_h3_audio_vae.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/minimax_h3_text_encoder.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/minimax_h3_video_vae.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/minimax_music3_text_encoder.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/nexus_gen.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/nexus_gen_projector.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/qwen_image_text_encoder.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/sdxl.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/sdxl_text_encoder.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/sdxl_text_encoder_2.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/sdxl_vae.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/stable_diffusion_text_encoder.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/stable_diffusion_vae.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/stable_diffusion_xl_text_encoder.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/step1x_connector.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/wan_video_animate_adapter.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/wan_video_dit.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/wan_video_image_encoder.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/wan_video_mot.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/wan_video_vace.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/wan_video_vae.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/wans2v_audio_encoder.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/z_image_dit.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/state_dict_converters/z_image_text_encoder.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/tile/__init__.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/tile/tile_worker.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/xfuser/__init__.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth/utils/xfuser/xdit_context_parallel.py +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth.egg-info/SOURCES.txt +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth.egg-info/dependency_links.txt +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth.egg-info/requires.txt +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/diffsynth.egg-info/top_level.txt +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/pyproject.toml +0 -0
- {diffsynth-2.1.4 → diffsynth-2.1.5}/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.5
|
|
4
4
|
Summary: Enjoy the magic of Diffusion models!
|
|
5
5
|
Author: ModelScope Team
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -804,6 +804,9 @@ https://github.com/Artiprocher/DiffSynth-Studio/assets/35051019/59fb2f7b-8de0-44
|
|
|
804
804
|
| FLUX.1 | [black-forest-labs/FLUX.1-dev](https://www.modelscope.cn/models/black-forest-labs/FLUX.1-dev) | [code](/examples/flux/model_inference/FLUX.1-dev.py) | [code](/examples/flux/model_inference_low_vram/FLUX.1-dev.py) | [code](/examples/flux/model_training/full/FLUX.1-dev.sh) | [code](/examples/flux/model_training/validate_full/FLUX.1-dev.py) | [code](/examples/flux/model_training/lora/FLUX.1-dev.sh) | [code](/examples/flux/model_training/validate_lora/FLUX.1-dev.py) |
|
|
805
805
|
| FLUX.1 | [black-forest-labs/FLUX.1-Krea-dev](https://www.modelscope.cn/models/black-forest-labs/FLUX.1-Krea-dev) | [code](/examples/flux/model_inference/FLUX.1-Krea-dev.py) | [code](/examples/flux/model_inference_low_vram/FLUX.1-Krea-dev.py) | [code](/examples/flux/model_training/full/FLUX.1-Krea-dev.sh) | [code](/examples/flux/model_training/validate_full/FLUX.1-Krea-dev.py) | [code](/examples/flux/model_training/lora/FLUX.1-Krea-dev.sh) | [code](/examples/flux/model_training/validate_lora/FLUX.1-Krea-dev.py) |
|
|
806
806
|
| FLUX.1 | [black-forest-labs/FLUX.1-Kontext-dev](https://www.modelscope.cn/models/black-forest-labs/FLUX.1-Kontext-dev) | [code](/examples/flux/model_inference/FLUX.1-Kontext-dev.py) | [code](/examples/flux/model_inference_low_vram/FLUX.1-Kontext-dev.py) | [code](/examples/flux/model_training/full/FLUX.1-Kontext-dev.sh) | [code](/examples/flux/model_training/validate_full/FLUX.1-Kontext-dev.py) | [code](/examples/flux/model_training/lora/FLUX.1-Kontext-dev.sh) | [code](/examples/flux/model_training/validate_lora/FLUX.1-Kontext-dev.py) |
|
|
807
|
+
| FLUX.1 | [black-forest-labs/FLUX.1-Fill-dev](https://www.modelscope.cn/models/black-forest-labs/FLUX.1-Fill-dev) | [code](/examples/flux/model_inference/FLUX.1-Fill-dev.py) | [code](/examples/flux/model_inference_low_vram/FLUX.1-Fill-dev.py) | [code](/examples/flux/model_training/full/FLUX.1-Fill-dev.sh) | [code](/examples/flux/model_training/validate_full/FLUX.1-Fill-dev.py) | [code](/examples/flux/model_training/lora/FLUX.1-Fill-dev.sh) | [code](/examples/flux/model_training/validate_lora/FLUX.1-Fill-dev.py) |
|
|
808
|
+
| FLUX.1 | [black-forest-labs/FLUX.1-Redux-dev](https://www.modelscope.cn/models/black-forest-labs/FLUX.1-Redux-dev) | [code](/examples/flux/model_inference/FLUX.1-Redux-dev.py) | [code](/examples/flux/model_inference_low_vram/FLUX.1-Redux-dev.py) | [code](/examples/flux/model_training/full/FLUX.1-Redux-dev.sh) | [code](/examples/flux/model_training/validate_full/FLUX.1-Redux-dev.py) | [code](/examples/flux/model_training/lora/FLUX.1-Redux-dev.sh) | [code](/examples/flux/model_training/validate_lora/FLUX.1-Redux-dev.py) |
|
|
809
|
+
| FLUX.1 | [HuanJue/Insert-Anything](https://www.modelscope.cn/models/HuanJue/Insert-Anything) | [code](/examples/flux/model_inference/Insert-Anything.py) | [code](/examples/flux/model_inference_low_vram/Insert-Anything.py) | - | - | [code](/examples/flux/model_training/lora/Insert-Anything.sh) | [code](/examples/flux/model_training/validate_lora/Insert-Anything.py) |
|
|
807
810
|
| FLUX.1 | [alimama-creative/FLUX.1-dev-Controlnet-Inpainting-Beta](https://www.modelscope.cn/models/alimama-creative/FLUX.1-dev-Controlnet-Inpainting-Beta) | [code](/examples/flux/model_inference/FLUX.1-dev-Controlnet-Inpainting-Beta.py) | [code](/examples/flux/model_inference_low_vram/FLUX.1-dev-Controlnet-Inpainting-Beta.py) | [code](/examples/flux/model_training/full/FLUX.1-dev-Controlnet-Inpainting-Beta.sh) | [code](/examples/flux/model_training/validate_full/FLUX.1-dev-Controlnet-Inpainting-Beta.py) | [code](/examples/flux/model_training/lora/FLUX.1-dev-Controlnet-Inpainting-Beta.sh) | [code](/examples/flux/model_training/validate_lora/FLUX.1-dev-Controlnet-Inpainting-Beta.py) |
|
|
808
811
|
| FLUX.1 | [InstantX/FLUX.1-dev-Controlnet-Union-alpha](https://www.modelscope.cn/models/InstantX/FLUX.1-dev-Controlnet-Union-alpha) | [code](/examples/flux/model_inference/FLUX.1-dev-Controlnet-Union-alpha.py) | [code](/examples/flux/model_inference_low_vram/FLUX.1-dev-Controlnet-Union-alpha.py) | [code](/examples/flux/model_training/full/FLUX.1-dev-Controlnet-Union-alpha.sh) | [code](/examples/flux/model_training/validate_full/FLUX.1-dev-Controlnet-Union-alpha.py) | [code](/examples/flux/model_training/lora/FLUX.1-dev-Controlnet-Union-alpha.sh) | [code](/examples/flux/model_training/validate_lora/FLUX.1-dev-Controlnet-Union-alpha.py) |
|
|
809
812
|
| FLUX.1 | [jasperai/Flux.1-dev-Controlnet-Upscaler](https://www.modelscope.cn/models/jasperai/Flux.1-dev-Controlnet-Upscaler) | [code](/examples/flux/model_inference/FLUX.1-dev-Controlnet-Upscaler.py) | [code](/examples/flux/model_inference_low_vram/FLUX.1-dev-Controlnet-Upscaler.py) | [code](/examples/flux/model_training/full/FLUX.1-dev-Controlnet-Upscaler.sh) | [code](/examples/flux/model_training/validate_full/FLUX.1-dev-Controlnet-Upscaler.py) | [code](/examples/flux/model_training/lora/FLUX.1-dev-Controlnet-Upscaler.sh) | [code](/examples/flux/model_training/validate_lora/FLUX.1-dev-Controlnet-Upscaler.py) |
|
|
@@ -737,6 +737,9 @@ https://github.com/Artiprocher/DiffSynth-Studio/assets/35051019/59fb2f7b-8de0-44
|
|
|
737
737
|
| FLUX.1 | [black-forest-labs/FLUX.1-dev](https://www.modelscope.cn/models/black-forest-labs/FLUX.1-dev) | [code](/examples/flux/model_inference/FLUX.1-dev.py) | [code](/examples/flux/model_inference_low_vram/FLUX.1-dev.py) | [code](/examples/flux/model_training/full/FLUX.1-dev.sh) | [code](/examples/flux/model_training/validate_full/FLUX.1-dev.py) | [code](/examples/flux/model_training/lora/FLUX.1-dev.sh) | [code](/examples/flux/model_training/validate_lora/FLUX.1-dev.py) |
|
|
738
738
|
| FLUX.1 | [black-forest-labs/FLUX.1-Krea-dev](https://www.modelscope.cn/models/black-forest-labs/FLUX.1-Krea-dev) | [code](/examples/flux/model_inference/FLUX.1-Krea-dev.py) | [code](/examples/flux/model_inference_low_vram/FLUX.1-Krea-dev.py) | [code](/examples/flux/model_training/full/FLUX.1-Krea-dev.sh) | [code](/examples/flux/model_training/validate_full/FLUX.1-Krea-dev.py) | [code](/examples/flux/model_training/lora/FLUX.1-Krea-dev.sh) | [code](/examples/flux/model_training/validate_lora/FLUX.1-Krea-dev.py) |
|
|
739
739
|
| FLUX.1 | [black-forest-labs/FLUX.1-Kontext-dev](https://www.modelscope.cn/models/black-forest-labs/FLUX.1-Kontext-dev) | [code](/examples/flux/model_inference/FLUX.1-Kontext-dev.py) | [code](/examples/flux/model_inference_low_vram/FLUX.1-Kontext-dev.py) | [code](/examples/flux/model_training/full/FLUX.1-Kontext-dev.sh) | [code](/examples/flux/model_training/validate_full/FLUX.1-Kontext-dev.py) | [code](/examples/flux/model_training/lora/FLUX.1-Kontext-dev.sh) | [code](/examples/flux/model_training/validate_lora/FLUX.1-Kontext-dev.py) |
|
|
740
|
+
| FLUX.1 | [black-forest-labs/FLUX.1-Fill-dev](https://www.modelscope.cn/models/black-forest-labs/FLUX.1-Fill-dev) | [code](/examples/flux/model_inference/FLUX.1-Fill-dev.py) | [code](/examples/flux/model_inference_low_vram/FLUX.1-Fill-dev.py) | [code](/examples/flux/model_training/full/FLUX.1-Fill-dev.sh) | [code](/examples/flux/model_training/validate_full/FLUX.1-Fill-dev.py) | [code](/examples/flux/model_training/lora/FLUX.1-Fill-dev.sh) | [code](/examples/flux/model_training/validate_lora/FLUX.1-Fill-dev.py) |
|
|
741
|
+
| FLUX.1 | [black-forest-labs/FLUX.1-Redux-dev](https://www.modelscope.cn/models/black-forest-labs/FLUX.1-Redux-dev) | [code](/examples/flux/model_inference/FLUX.1-Redux-dev.py) | [code](/examples/flux/model_inference_low_vram/FLUX.1-Redux-dev.py) | [code](/examples/flux/model_training/full/FLUX.1-Redux-dev.sh) | [code](/examples/flux/model_training/validate_full/FLUX.1-Redux-dev.py) | [code](/examples/flux/model_training/lora/FLUX.1-Redux-dev.sh) | [code](/examples/flux/model_training/validate_lora/FLUX.1-Redux-dev.py) |
|
|
742
|
+
| FLUX.1 | [HuanJue/Insert-Anything](https://www.modelscope.cn/models/HuanJue/Insert-Anything) | [code](/examples/flux/model_inference/Insert-Anything.py) | [code](/examples/flux/model_inference_low_vram/Insert-Anything.py) | - | - | [code](/examples/flux/model_training/lora/Insert-Anything.sh) | [code](/examples/flux/model_training/validate_lora/Insert-Anything.py) |
|
|
740
743
|
| FLUX.1 | [alimama-creative/FLUX.1-dev-Controlnet-Inpainting-Beta](https://www.modelscope.cn/models/alimama-creative/FLUX.1-dev-Controlnet-Inpainting-Beta) | [code](/examples/flux/model_inference/FLUX.1-dev-Controlnet-Inpainting-Beta.py) | [code](/examples/flux/model_inference_low_vram/FLUX.1-dev-Controlnet-Inpainting-Beta.py) | [code](/examples/flux/model_training/full/FLUX.1-dev-Controlnet-Inpainting-Beta.sh) | [code](/examples/flux/model_training/validate_full/FLUX.1-dev-Controlnet-Inpainting-Beta.py) | [code](/examples/flux/model_training/lora/FLUX.1-dev-Controlnet-Inpainting-Beta.sh) | [code](/examples/flux/model_training/validate_lora/FLUX.1-dev-Controlnet-Inpainting-Beta.py) |
|
|
741
744
|
| FLUX.1 | [InstantX/FLUX.1-dev-Controlnet-Union-alpha](https://www.modelscope.cn/models/InstantX/FLUX.1-dev-Controlnet-Union-alpha) | [code](/examples/flux/model_inference/FLUX.1-dev-Controlnet-Union-alpha.py) | [code](/examples/flux/model_inference_low_vram/FLUX.1-dev-Controlnet-Union-alpha.py) | [code](/examples/flux/model_training/full/FLUX.1-dev-Controlnet-Union-alpha.sh) | [code](/examples/flux/model_training/validate_full/FLUX.1-dev-Controlnet-Union-alpha.py) | [code](/examples/flux/model_training/lora/FLUX.1-dev-Controlnet-Union-alpha.sh) | [code](/examples/flux/model_training/validate_lora/FLUX.1-dev-Controlnet-Union-alpha.py) |
|
|
742
745
|
| FLUX.1 | [jasperai/Flux.1-dev-Controlnet-Upscaler](https://www.modelscope.cn/models/jasperai/Flux.1-dev-Controlnet-Upscaler) | [code](/examples/flux/model_inference/FLUX.1-dev-Controlnet-Upscaler.py) | [code](/examples/flux/model_inference_low_vram/FLUX.1-dev-Controlnet-Upscaler.py) | [code](/examples/flux/model_training/full/FLUX.1-dev-Controlnet-Upscaler.sh) | [code](/examples/flux/model_training/validate_full/FLUX.1-dev-Controlnet-Upscaler.py) | [code](/examples/flux/model_training/lora/FLUX.1-dev-Controlnet-Upscaler.sh) | [code](/examples/flux/model_training/validate_lora/FLUX.1-dev-Controlnet-Upscaler.py) |
|
|
@@ -75,11 +75,11 @@ class ModelConfig:
|
|
|
75
75
|
def parse_download_source(self):
|
|
76
76
|
if self.download_source is None:
|
|
77
77
|
if os.environ.get('DIFFSYNTH_DOWNLOAD_SOURCE') is not None:
|
|
78
|
-
return os.environ.get('DIFFSYNTH_DOWNLOAD_SOURCE')
|
|
78
|
+
return os.environ.get('DIFFSYNTH_DOWNLOAD_SOURCE').lower()
|
|
79
79
|
else:
|
|
80
80
|
return "modelscope"
|
|
81
81
|
else:
|
|
82
|
-
return self.download_source
|
|
82
|
+
return self.download_source.lower()
|
|
83
83
|
|
|
84
84
|
def parse_skip_download(self):
|
|
85
85
|
if self.skip_download is None:
|
|
@@ -119,6 +119,9 @@ def load_model(model_class, path, config=None, torch_dtype=torch.bfloat16, devic
|
|
|
119
119
|
# Because some models override the behavior of `to()`,
|
|
120
120
|
# especially those from libraries like Transformers.
|
|
121
121
|
model = model.to(dtype=torch_dtype, device=device)
|
|
122
|
+
if quantize is not None:
|
|
123
|
+
# Downstream steps (e.g. LoRA hot-loading) need the config to handle the quantized layers.
|
|
124
|
+
model.quantize_config = quantize
|
|
122
125
|
if hasattr(model, "eval"):
|
|
123
126
|
model = model.eval()
|
|
124
127
|
return model
|
|
@@ -11,26 +11,27 @@ except ImportError:
|
|
|
11
11
|
BITSANDBYTES_AVAILABLE = False
|
|
12
12
|
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
14
|
+
if BITSANDBYTES_AVAILABLE:
|
|
15
|
+
class BitsAndBytesLinear4bit(bnb.nn.Linear4bit):
|
|
16
|
+
def _load_from_state_dict(self, state_dict, prefix, local_metadata, strict, missing_keys, unexpected_keys, error_msgs):
|
|
17
|
+
local_names = set()
|
|
18
|
+
for name, current in list(self._parameters.items()) + list(self._buffers.items()):
|
|
19
|
+
if current is None:
|
|
20
|
+
continue
|
|
21
|
+
local_names.add(name)
|
|
22
|
+
key = prefix + name
|
|
23
|
+
if key in state_dict:
|
|
24
|
+
value = state_dict[key]
|
|
25
|
+
if name in self._parameters:
|
|
26
|
+
self._parameters[name] = value if isinstance(value, torch.nn.Parameter) else torch.nn.Parameter(value, requires_grad=False)
|
|
27
|
+
else:
|
|
28
|
+
self._buffers[name] = value
|
|
29
|
+
elif strict:
|
|
30
|
+
missing_keys.append(key)
|
|
31
|
+
if strict:
|
|
32
|
+
for key in state_dict:
|
|
33
|
+
if key.startswith(prefix) and key[len(prefix):].split(".", 1)[0] not in local_names:
|
|
34
|
+
unexpected_keys.append(key)
|
|
34
35
|
|
|
35
36
|
|
|
36
37
|
@register_quant_backend("bitsandbytes")
|
|
@@ -55,7 +56,7 @@ class BitsAndBytesQuantBackend(QuantBackend):
|
|
|
55
56
|
}
|
|
56
57
|
|
|
57
58
|
def quantized_linear_classes(self):
|
|
58
|
-
return (
|
|
59
|
+
return (BitsAndBytesLinear4bit,)
|
|
59
60
|
|
|
60
61
|
def create_quantized_linear(self, linear, compute_device=None, model_device=None):
|
|
61
62
|
"""The `meta` shell avoids allocating an fp weight; bnb quantizes while `Params4bit` moves to `compute_device`."""
|
|
@@ -65,7 +66,7 @@ class BitsAndBytesQuantBackend(QuantBackend):
|
|
|
65
66
|
compute_device = linear.weight.device
|
|
66
67
|
|
|
67
68
|
with torch.device("meta"):
|
|
68
|
-
quant_linear =
|
|
69
|
+
quant_linear = BitsAndBytesLinear4bit(
|
|
69
70
|
linear.in_features,
|
|
70
71
|
linear.out_features,
|
|
71
72
|
bias=linear.bias is not None,
|
|
@@ -89,7 +90,7 @@ class BitsAndBytesQuantBackend(QuantBackend):
|
|
|
89
90
|
|
|
90
91
|
def create_quantized_linear_shell(self, linear, compute_dtype):
|
|
91
92
|
with torch.device("meta"):
|
|
92
|
-
shell =
|
|
93
|
+
shell = BitsAndBytesLinear4bit(
|
|
93
94
|
linear.in_features,
|
|
94
95
|
linear.out_features,
|
|
95
96
|
bias=linear.bias is not None,
|
|
@@ -98,7 +99,6 @@ class BitsAndBytesQuantBackend(QuantBackend):
|
|
|
98
99
|
quant_type=self.config.quant_type,
|
|
99
100
|
quant_storage=self.config.quant_storage,
|
|
100
101
|
)
|
|
101
|
-
shell._load_from_state_dict = _assign_params_from_state_dict.__get__(shell)
|
|
102
102
|
return shell
|
|
103
103
|
|
|
104
104
|
def unflatten_state_dict(self, state_dict, metadata):
|
|
@@ -442,7 +442,7 @@ class AutoWrappedLinear(torch.nn.Linear, AutoTorchModule, LoRAHotLoadMixin):
|
|
|
442
442
|
return out
|
|
443
443
|
|
|
444
444
|
|
|
445
|
-
class AutoWrappedQuantizedModule(AutoTorchModule, LoRAHotLoadMixin):
|
|
445
|
+
class AutoWrappedQuantizedModule(torch.nn.Linear, AutoTorchModule, LoRAHotLoadMixin):
|
|
446
446
|
def __init__(
|
|
447
447
|
self,
|
|
448
448
|
module: torch.nn.Module,
|
|
@@ -467,7 +467,8 @@ class AutoWrappedQuantizedModule(AutoTorchModule, LoRAHotLoadMixin):
|
|
|
467
467
|
"Disk offload for quantized layers requires both `disk_map` and `quantize`, "
|
|
468
468
|
"so each layer can rebuild its packed weight and quant state lazily."
|
|
469
469
|
)
|
|
470
|
-
|
|
470
|
+
AutoTorchModule.__init__(
|
|
471
|
+
self,
|
|
471
472
|
offload_dtype,
|
|
472
473
|
offload_device,
|
|
473
474
|
onload_dtype,
|
|
@@ -478,6 +479,8 @@ class AutoWrappedQuantizedModule(AutoTorchModule, LoRAHotLoadMixin):
|
|
|
478
479
|
computation_device,
|
|
479
480
|
vram_limit,
|
|
480
481
|
)
|
|
482
|
+
self.in_features = module.in_features
|
|
483
|
+
self.out_features = module.out_features
|
|
481
484
|
self.module = module
|
|
482
485
|
self.name = name
|
|
483
486
|
self.disk_offload = disk_offload
|
|
@@ -240,6 +240,13 @@ class BasePipeline(torch.nn.Module):
|
|
|
240
240
|
module.computation_device = device
|
|
241
241
|
|
|
242
242
|
|
|
243
|
+
def check_quant_hot_load(self, module: torch.nn.Module):
|
|
244
|
+
# A quantized weight cannot absorb a fused LoRA, so hot-loading is the only option for it.
|
|
245
|
+
if getattr(module, "quantize_config", None) is None:
|
|
246
|
+
return module
|
|
247
|
+
return self.enable_lora_hot_loading(module)
|
|
248
|
+
|
|
249
|
+
|
|
243
250
|
def load_lora(
|
|
244
251
|
self,
|
|
245
252
|
module: torch.nn.Module,
|
|
@@ -249,6 +256,7 @@ class BasePipeline(torch.nn.Module):
|
|
|
249
256
|
state_dict=None,
|
|
250
257
|
verbose=1,
|
|
251
258
|
):
|
|
259
|
+
module = self.check_quant_hot_load(module)
|
|
252
260
|
if state_dict is None:
|
|
253
261
|
if isinstance(lora_config, str):
|
|
254
262
|
lora = load_state_dict(lora_config, torch_dtype=self.torch_dtype, device=self.device)
|
|
@@ -370,7 +378,7 @@ class BasePipeline(torch.nn.Module):
|
|
|
370
378
|
"computation_dtype": self.torch_dtype,
|
|
371
379
|
"computation_device": self.device,
|
|
372
380
|
}
|
|
373
|
-
model = enable_vram_management(model, module_map, vram_config=vram_config)
|
|
381
|
+
model = enable_vram_management(model, module_map, vram_config=vram_config, quantize=getattr(model, "quantize_config", None))
|
|
374
382
|
return model
|
|
375
383
|
|
|
376
384
|
def compile_pipeline(self, mode: str = "default", dynamic: bool = True, fullgraph: bool = False, compile_models: list = None, **kwargs):
|
|
@@ -63,7 +63,7 @@ def FlowMatchSFTAudioVideoLoss(pipe: BasePipeline, **inputs):
|
|
|
63
63
|
return loss
|
|
64
64
|
|
|
65
65
|
|
|
66
|
-
def FlowMatchSFTMiniMaxH3AudioVideoLoss(pipe: BasePipeline, **inputs):
|
|
66
|
+
def FlowMatchSFTMiniMaxH3AudioVideoLoss(pipe: BasePipeline, training_cfg_scale: float = 1.0, inputs_nega: dict | None = None, **inputs):
|
|
67
67
|
max_timestep_boundary = int(inputs.get("max_timestep_boundary", 1) * len(pipe.scheduler.timesteps))
|
|
68
68
|
min_timestep_boundary = int(inputs.get("min_timestep_boundary", 0) * len(pipe.scheduler.timesteps))
|
|
69
69
|
|
|
@@ -81,11 +81,34 @@ def FlowMatchSFTMiniMaxH3AudioVideoLoss(pipe: BasePipeline, **inputs):
|
|
|
81
81
|
training_target_audio = pipe.scheduler_audio.training_target(inputs["audio_input_latents"], audio_noise, timestep_audio)
|
|
82
82
|
|
|
83
83
|
models = {name: getattr(pipe, name) for name in pipe.in_iteration_models}
|
|
84
|
+
if training_cfg_scale > 1.0:
|
|
85
|
+
if not inputs_nega:
|
|
86
|
+
raise ValueError(
|
|
87
|
+
"MiniMax-H3 CFG-aware training requires unconditional inputs. "
|
|
88
|
+
"When using split training, rebuild the data cache with the same "
|
|
89
|
+
"--training_cfg_scale value."
|
|
90
|
+
)
|
|
91
|
+
inputs_uncond = {**inputs, **inputs_nega}
|
|
92
|
+
inputs_uncond["use_gradient_checkpointing"] = False
|
|
93
|
+
inputs_uncond["use_gradient_checkpointing_offload"] = False
|
|
94
|
+
with torch.no_grad():
|
|
95
|
+
noise_pred_uncond, noise_pred_audio_uncond = pipe.model_fn(
|
|
96
|
+
**models, **inputs_uncond,
|
|
97
|
+
timestep_video=timestep_video, timestep_audio=timestep_audio,
|
|
98
|
+
)
|
|
99
|
+
|
|
84
100
|
noise_pred, noise_pred_audio = pipe.model_fn(
|
|
85
101
|
**models, **inputs,
|
|
86
102
|
timestep_video=timestep_video, timestep_audio=timestep_audio,
|
|
87
103
|
)
|
|
88
104
|
|
|
105
|
+
if training_cfg_scale > 1.0:
|
|
106
|
+
# The checkpoint's conditional prediction has CFG distilled into it.
|
|
107
|
+
# Rearrange the CFG equation to recover the raw velocity fitted to the
|
|
108
|
+
# standard flow-matching target, using the current model as the teacher.
|
|
109
|
+
noise_pred = (noise_pred + (training_cfg_scale - 1.0) * noise_pred_uncond) / training_cfg_scale
|
|
110
|
+
noise_pred_audio = (noise_pred_audio + (training_cfg_scale - 1.0) * noise_pred_audio_uncond) / training_cfg_scale
|
|
111
|
+
|
|
89
112
|
loss = torch.nn.functional.mse_loss(noise_pred.float(), training_target.float())
|
|
90
113
|
loss = loss * pipe.scheduler.training_weight(timestep_video)
|
|
91
114
|
if "audio_input_latents" in inputs:
|
|
@@ -359,7 +359,7 @@ class DiffusionTrainingModule(torch.nn.Module):
|
|
|
359
359
|
# TODO: set `remove_unnecessary_params` to `True` by default
|
|
360
360
|
remove_unnecessary_params=False,
|
|
361
361
|
# TODO: move `loss_required_params` to `loss.py`
|
|
362
|
-
loss_required_params=("input_latents", "max_timestep_boundary", "min_timestep_boundary", "first_frame_latents", "video_latents", "audio_input_latents", "num_inference_steps"),
|
|
362
|
+
loss_required_params=("input_latents", "max_timestep_boundary", "min_timestep_boundary", "first_frame_latents", "video_latents", "audio_input_latents", "num_inference_steps", "cfg_scale"),
|
|
363
363
|
force_remove_params_shared=tuple(),
|
|
364
364
|
force_remove_params_posi=tuple(),
|
|
365
365
|
force_remove_params_nega=tuple(),
|
|
@@ -70,7 +70,8 @@ class AceStepPipeline(BasePipeline):
|
|
|
70
70
|
pipe.conditioner = model_pool.fetch_model("ace_step_conditioner")
|
|
71
71
|
pipe.dit = model_pool.fetch_model("ace_step_dit")
|
|
72
72
|
pipe.vae = model_pool.fetch_model("ace_step_vae")
|
|
73
|
-
pipe.vae
|
|
73
|
+
if pipe.vae is not None:
|
|
74
|
+
pipe.vae.remove_weight_norm()
|
|
74
75
|
pipe.tokenizer_model = model_pool.fetch_model("ace_step_tokenizer")
|
|
75
76
|
|
|
76
77
|
if text_tokenizer_config is not None:
|
|
@@ -58,7 +58,21 @@ class MiniMaxH3Pipeline(BasePipeline):
|
|
|
58
58
|
model_configs: list[ModelConfig] = [],
|
|
59
59
|
processor_config: ModelConfig = ModelConfig(model_id="MiniMax/MiniMax-H3", origin_file_pattern="FL2VA/processor/"),
|
|
60
60
|
vram_limit: float = None,
|
|
61
|
+
redirect_common_files: bool = True,
|
|
61
62
|
):
|
|
63
|
+
if redirect_common_files:
|
|
64
|
+
redirect_dict = {
|
|
65
|
+
"MiniMax/MiniMax-H3": "MiniMaxAI/MiniMax-H3",
|
|
66
|
+
}
|
|
67
|
+
for model_config in model_configs:
|
|
68
|
+
if model_config.require_downloading() and model_config.parse_download_source() == "huggingface":
|
|
69
|
+
if model_config.model_id is not None and model_config.model_id in redirect_dict:
|
|
70
|
+
print(f"The model is detected to be downloading from HuggingFace. {model_config.model_id} is redirected to {redirect_dict[model_config.model_id]}. You can use `redirect_common_files=False` to disable file redirection.")
|
|
71
|
+
model_config.model_id = redirect_dict[model_config.model_id]
|
|
72
|
+
if processor_config is not None and processor_config.require_downloading() and processor_config.parse_download_source() == "huggingface":
|
|
73
|
+
if processor_config.model_id is not None and processor_config.model_id in redirect_dict:
|
|
74
|
+
print(f"The model is detected to be downloading from HuggingFace. {processor_config.model_id} is redirected to {redirect_dict[processor_config.model_id]}. You can use `redirect_common_files=False` to disable file redirection.")
|
|
75
|
+
processor_config.model_id = redirect_dict[processor_config.model_id]
|
|
62
76
|
pipe = MiniMaxH3Pipeline(device=device, torch_dtype=torch_dtype)
|
|
63
77
|
model_pool = pipe.download_and_load_models(model_configs, vram_limit)
|
|
64
78
|
pipe.text_encoder = model_pool.fetch_model("minimax_h3_text_encoder")
|
|
@@ -45,7 +45,21 @@ class MiniMaxMusic3Pipeline(BasePipeline):
|
|
|
45
45
|
model_configs: list[ModelConfig] = [],
|
|
46
46
|
tokenizer_config: ModelConfig = None,
|
|
47
47
|
vram_limit: float = None,
|
|
48
|
+
redirect_common_files: bool = True,
|
|
48
49
|
):
|
|
50
|
+
if redirect_common_files:
|
|
51
|
+
redirect_dict = {
|
|
52
|
+
"MiniMax/MiniMax-Music3": "MiniMaxAI/MiniMax-Music3",
|
|
53
|
+
}
|
|
54
|
+
for model_config in model_configs:
|
|
55
|
+
if model_config.require_downloading() and model_config.parse_download_source() == "huggingface":
|
|
56
|
+
if model_config.model_id is not None and model_config.model_id in redirect_dict:
|
|
57
|
+
print(f"The model is detected to be downloading from HuggingFace. {model_config.model_id} is redirected to {redirect_dict[model_config.model_id]}. You can use `redirect_common_files=False` to disable file redirection.")
|
|
58
|
+
model_config.model_id = redirect_dict[model_config.model_id]
|
|
59
|
+
if tokenizer_config is not None and tokenizer_config.require_downloading() and tokenizer_config.parse_download_source() == "huggingface":
|
|
60
|
+
if tokenizer_config.model_id is not None and tokenizer_config.model_id in redirect_dict:
|
|
61
|
+
print(f"The model is detected to be downloading from HuggingFace. {tokenizer_config.model_id} is redirected to {redirect_dict[tokenizer_config.model_id]}. You can use `redirect_common_files=False` to disable file redirection.")
|
|
62
|
+
tokenizer_config.model_id = redirect_dict[tokenizer_config.model_id]
|
|
49
63
|
pipe = MiniMaxMusic3Pipeline(device=device, torch_dtype=torch_dtype)
|
|
50
64
|
model_pool = pipe.download_and_load_models(model_configs, vram_limit)
|
|
51
65
|
pipe.text_encoder = model_pool.fetch_model("minimax_music3_text_encoder")
|
|
@@ -348,4 +362,4 @@ class MiniMaxMusic3Unit_Vocoder(PipelineUnit):
|
|
|
348
362
|
waveform_chunks.append(waveform[...,
|
|
349
363
|
left:waveform.shape[-1] - right])
|
|
350
364
|
song = torch.cat(waveform_chunks, dim=-1)[0]
|
|
351
|
-
return {"audio": song.float().clamp(-1.0, 1.0)}
|
|
365
|
+
return {"audio": song.float().clamp(-1.0, 1.0).cpu()}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# Make sure to modify __release_datetime__ to release time when making official release.
|
|
2
|
-
__version__ = '2.1.
|
|
2
|
+
__version__ = '2.1.5'
|
|
3
3
|
# default release datetime for branches under active development is set
|
|
4
4
|
# to be a time far-far-away-into-the-future
|
|
5
5
|
__release_datetime__ = '2099-10-13 08:56:12'
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: diffsynth
|
|
3
|
-
Version: 2.1.
|
|
3
|
+
Version: 2.1.5
|
|
4
4
|
Summary: Enjoy the magic of Diffusion models!
|
|
5
5
|
Author: ModelScope Team
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -804,6 +804,9 @@ https://github.com/Artiprocher/DiffSynth-Studio/assets/35051019/59fb2f7b-8de0-44
|
|
|
804
804
|
| FLUX.1 | [black-forest-labs/FLUX.1-dev](https://www.modelscope.cn/models/black-forest-labs/FLUX.1-dev) | [code](/examples/flux/model_inference/FLUX.1-dev.py) | [code](/examples/flux/model_inference_low_vram/FLUX.1-dev.py) | [code](/examples/flux/model_training/full/FLUX.1-dev.sh) | [code](/examples/flux/model_training/validate_full/FLUX.1-dev.py) | [code](/examples/flux/model_training/lora/FLUX.1-dev.sh) | [code](/examples/flux/model_training/validate_lora/FLUX.1-dev.py) |
|
|
805
805
|
| FLUX.1 | [black-forest-labs/FLUX.1-Krea-dev](https://www.modelscope.cn/models/black-forest-labs/FLUX.1-Krea-dev) | [code](/examples/flux/model_inference/FLUX.1-Krea-dev.py) | [code](/examples/flux/model_inference_low_vram/FLUX.1-Krea-dev.py) | [code](/examples/flux/model_training/full/FLUX.1-Krea-dev.sh) | [code](/examples/flux/model_training/validate_full/FLUX.1-Krea-dev.py) | [code](/examples/flux/model_training/lora/FLUX.1-Krea-dev.sh) | [code](/examples/flux/model_training/validate_lora/FLUX.1-Krea-dev.py) |
|
|
806
806
|
| FLUX.1 | [black-forest-labs/FLUX.1-Kontext-dev](https://www.modelscope.cn/models/black-forest-labs/FLUX.1-Kontext-dev) | [code](/examples/flux/model_inference/FLUX.1-Kontext-dev.py) | [code](/examples/flux/model_inference_low_vram/FLUX.1-Kontext-dev.py) | [code](/examples/flux/model_training/full/FLUX.1-Kontext-dev.sh) | [code](/examples/flux/model_training/validate_full/FLUX.1-Kontext-dev.py) | [code](/examples/flux/model_training/lora/FLUX.1-Kontext-dev.sh) | [code](/examples/flux/model_training/validate_lora/FLUX.1-Kontext-dev.py) |
|
|
807
|
+
| FLUX.1 | [black-forest-labs/FLUX.1-Fill-dev](https://www.modelscope.cn/models/black-forest-labs/FLUX.1-Fill-dev) | [code](/examples/flux/model_inference/FLUX.1-Fill-dev.py) | [code](/examples/flux/model_inference_low_vram/FLUX.1-Fill-dev.py) | [code](/examples/flux/model_training/full/FLUX.1-Fill-dev.sh) | [code](/examples/flux/model_training/validate_full/FLUX.1-Fill-dev.py) | [code](/examples/flux/model_training/lora/FLUX.1-Fill-dev.sh) | [code](/examples/flux/model_training/validate_lora/FLUX.1-Fill-dev.py) |
|
|
808
|
+
| FLUX.1 | [black-forest-labs/FLUX.1-Redux-dev](https://www.modelscope.cn/models/black-forest-labs/FLUX.1-Redux-dev) | [code](/examples/flux/model_inference/FLUX.1-Redux-dev.py) | [code](/examples/flux/model_inference_low_vram/FLUX.1-Redux-dev.py) | [code](/examples/flux/model_training/full/FLUX.1-Redux-dev.sh) | [code](/examples/flux/model_training/validate_full/FLUX.1-Redux-dev.py) | [code](/examples/flux/model_training/lora/FLUX.1-Redux-dev.sh) | [code](/examples/flux/model_training/validate_lora/FLUX.1-Redux-dev.py) |
|
|
809
|
+
| FLUX.1 | [HuanJue/Insert-Anything](https://www.modelscope.cn/models/HuanJue/Insert-Anything) | [code](/examples/flux/model_inference/Insert-Anything.py) | [code](/examples/flux/model_inference_low_vram/Insert-Anything.py) | - | - | [code](/examples/flux/model_training/lora/Insert-Anything.sh) | [code](/examples/flux/model_training/validate_lora/Insert-Anything.py) |
|
|
807
810
|
| FLUX.1 | [alimama-creative/FLUX.1-dev-Controlnet-Inpainting-Beta](https://www.modelscope.cn/models/alimama-creative/FLUX.1-dev-Controlnet-Inpainting-Beta) | [code](/examples/flux/model_inference/FLUX.1-dev-Controlnet-Inpainting-Beta.py) | [code](/examples/flux/model_inference_low_vram/FLUX.1-dev-Controlnet-Inpainting-Beta.py) | [code](/examples/flux/model_training/full/FLUX.1-dev-Controlnet-Inpainting-Beta.sh) | [code](/examples/flux/model_training/validate_full/FLUX.1-dev-Controlnet-Inpainting-Beta.py) | [code](/examples/flux/model_training/lora/FLUX.1-dev-Controlnet-Inpainting-Beta.sh) | [code](/examples/flux/model_training/validate_lora/FLUX.1-dev-Controlnet-Inpainting-Beta.py) |
|
|
808
811
|
| FLUX.1 | [InstantX/FLUX.1-dev-Controlnet-Union-alpha](https://www.modelscope.cn/models/InstantX/FLUX.1-dev-Controlnet-Union-alpha) | [code](/examples/flux/model_inference/FLUX.1-dev-Controlnet-Union-alpha.py) | [code](/examples/flux/model_inference_low_vram/FLUX.1-dev-Controlnet-Union-alpha.py) | [code](/examples/flux/model_training/full/FLUX.1-dev-Controlnet-Union-alpha.sh) | [code](/examples/flux/model_training/validate_full/FLUX.1-dev-Controlnet-Union-alpha.py) | [code](/examples/flux/model_training/lora/FLUX.1-dev-Controlnet-Union-alpha.sh) | [code](/examples/flux/model_training/validate_lora/FLUX.1-dev-Controlnet-Union-alpha.py) |
|
|
809
812
|
| FLUX.1 | [jasperai/Flux.1-dev-Controlnet-Upscaler](https://www.modelscope.cn/models/jasperai/Flux.1-dev-Controlnet-Upscaler) | [code](/examples/flux/model_inference/FLUX.1-dev-Controlnet-Upscaler.py) | [code](/examples/flux/model_inference_low_vram/FLUX.1-dev-Controlnet-Upscaler.py) | [code](/examples/flux/model_training/full/FLUX.1-dev-Controlnet-Upscaler.sh) | [code](/examples/flux/model_training/validate_full/FLUX.1-dev-Controlnet-Upscaler.py) | [code](/examples/flux/model_training/lora/FLUX.1-dev-Controlnet-Upscaler.sh) | [code](/examples/flux/model_training/validate_lora/FLUX.1-dev-Controlnet-Upscaler.py) |
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|