Potential regression in deterministic outputs
See original GitHub issueDescribe the bug
I’ve started noticing different outputs in the latest version of diffusers starting from diffusers 0.4.0
when compared against 0.3.0
. This is my test code (extracted from a notebook):
import diffusers
from diffusers import StableDiffusionPipeline, DDIMScheduler
import torch
from IPython.display import display
def run_tests(pipe):
torch.manual_seed(1000)
display(pipe("A photo of Barack Obama smiling with a big grin").images[0])
torch.manual_seed(1000)
display(pipe("Labrador in the style of Vermeer").images[0])
pipe = StableDiffusionPipeline.from_pretrained("CompVis/stable-diffusion-v1-4")
pipe = pipe.to("cuda")
run_tests(pipe)
The first prompt produces identical results. The second one, however, results in different outputs:
0.3.0
main@a3efa433eac5feba842350c38a1db29244963fb5
Using DDIM, both prompts generate different images.
scheduler = DDIMScheduler(beta_start=0.00085, beta_end=0.012, beta_schedule="scaled_linear", num_train_timesteps=1000)
pipe = StableDiffusionPipeline.from_pretrained("CompVis/stable-diffusion-v1-4", scheduler=scheduler)
pipe = pipe.to("cuda")
run_tests(pipe)
DDIM 0.3.0
DDIM main
DDIM 0.3.0
DDIM main
In addition, there’s this post from a forum user with very different results in the img2img pipeline: https://discuss.huggingface.co/t/notable-differences-between-other-implementations-of-stable-diffusion-particularly-in-the-img2img-pipeline/24635/5. They opened another issue recently #901. Cross-referencing, may or may not be related to this issue.
Reproduction
As explained above.
Logs
No response
System Info
diffusers: main
@ a3efa433eac5feba842350c38a1db29244963fb5
vs v0.3.0
Issue Analytics
- State:
- Created a year ago
- Reactions:1
- Comments:19 (17 by maintainers)
Top GitHub Comments
Once the pipeline tests are fully updated we should also make a doc explaining the problem with reproducibility in general with diffusion models. cc @anton-l
Small update here:
between 0.3.0 and 0.7.0dev using a V100
Overall this issue to me now seems much less severe than originally and a bit part of it is probably simply to “uncontrollable” randomness
Next: