mindspore-lab / mindone

one for all, Optimal generator with No Exception
Apache License 2.0
330 stars 63 forks source link

sdxl: configure edm inference and dynamic thresholding #383

Closed Fzilan closed 3 months ago

Fzilan commented 3 months ago

What does this PR do?

Adds : args of EDMDiscretization & DynamicThresholding

1 Support args setting of EDMDiscretization in SDXL inference.

Usage of EDMDiscretization:

=======Example ① EDMEulerScheduler======= directly set the following args in sampling_without_streamlit.py:

--sampler EulerEDMSampler
--discretization EDMDiscretization 
--sigma_min 0.002
--sigma_max 80.0
--rho 7.0

or

set --sampler EulerEDMSampler in sampling_without_streamlit.py and set discretization_config as follows in denoiser_config of examples/stable_diffusion_xl/configs/inference/sd_xl_base.yaml

...
        discretization_config:
          target: gm.modules.diffusionmodules.discretizer.EDMDiscretization
          params:
            sigma_min: 0.02
            sigma_max: 80.0
            rho: 7.0

=======Example ② EDMDPMSolverMultistepScheduler======= directly set the following args in sampling_without_streamlit.py:

--sampler DPMPP2MSampler  #dpm++ 2nd order solver, multistep
--discretization EDMDiscretization 
--sigma_min 0.002
--sigma_max 80.0
--rho 7.0

or

set --sampler DPMPP2MSampler in sampling_without_streamlit.py and set discretization_config as follows in denoiser_config of examples/stable_diffusion_xl/configs/inference/sd_xl_base.yaml

...
        discretization_config:
          target: gm.modules.diffusionmodules.discretizer.EDMDiscretization
          params:
            sigma_min: 0.02
            sigma_max: 80.0
            rho: 7.0

2 Support dynamic thresholding method for CFG (classifier-free guidance)

Useage:

python sampling_without_streamlit.py \
...
--thresholding True 
--dynamic_thresholding_ratio 0.995 
--sample_max_value 1.0
... 

fixs

  1. dreambooth sdxl config updates
  2. timestepbias bug

Before submitting

Who can review?

Anyone in the community is free to review the PR once the tests have passed. Feel free to tag members/contributors who may be interested in your PR.

@xxx