Error on macbook with pipe.to('mps') #53

by williamhCode - opened
import torch
from diffusers import StableDiffusionPipeline

pipe = StableDiffusionPipeline.from_pretrained('hakurei/waifu-diffusion', torch_dtype=torch.float32)
pipe = pipe.to('mps')

pipe.enable_attention_slicing()

prompt = "test"

_ = pipe(prompt, num_inference_steps=1)

image = pipe(prompt, guidance_scale=6).images[0]
    
image.save("test.png")

This throws the error

...
line 11, in <module>
    _ = pipe(prompt, num_inference_steps=1)
  File "/opt/homebrew/Caskroom/miniforge/base/envs/waifu/lib/python3.10/site-packages/torch/autograd/grad_mode.py", line 27, in decorate_context
    return func(*args, **kwargs)
  File "/opt/homebrew/Caskroom/miniforge/base/envs/waifu/lib/python3.10/site-packages/diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion.py", line 362, in __call__
    timesteps_tensor = self.scheduler.timesteps.to(self.device)
TypeError: Cannot convert a MPS Tensor to float64 dtype as the MPS framework doesn't support float64. Please use float32 instead.

It works if I use runwayml/stable-diffusion-v1-5 instead of waifu diffusion.
This issue might be related, https://github.com/pytorch/pytorch/issues/78168, but it has been fixed. This issue only happens when I use waifu-diffusion, not stable-diffusion