stable-diffusion icon indicating copy to clipboard operation
stable-diffusion copied to clipboard

RuntimeError: "LayerNormKernelImpl" not implemented for 'Half' when trying inpaining

Open Fqlox opened this issue 3 years ago • 2 comments

I wanted to use the boilerplate of the inpainting module

from diffusers import StableDiffusionInpaintPipeline
import torch
from PIL import Image

pipe = StableDiffusionInpaintPipeline.from_pretrained(
    "runwayml/stable-diffusion-inpainting",
    revision="fp16",
    torch_dtype=torch.float16,
)
prompt = "Face of a yellow cat, high resolution, sitting on a park bench"
#image and mask_image should be PIL images.
#The mask structure is white for inpainting and black for keeping as is

image_input = Image.open("img1.png")
image_mask = Image.open("mask.png")

image = pipe(prompt=prompt, image=image_input, mask_image=image_mask).images[0]
image.save("./yellow_cat_on_park_bench.png")

And got :


python inpainting_example.py
Fetching 15 files: 100%|██████████████████████████████████████████████████████████████████████████████████████| 15/15 [00:00<00:00, 1873.29it/s] Traceback (most recent call last):
  File "inpainting_example.py", line 17, in <module>
    image = pipe(prompt=prompt, image=image_input, mask_image=image_mask).images[0]
  File "G:\Anaconda3\envs\ldm\lib\site-packages\torch\autograd\grad_mode.py", line 27, in decorate_context
    return func(*args, **kwargs)
  File "G:\Anaconda3\envs\ldm\lib\site-packages\diffusers\pipelines\stable_diffusion\pipeline_stable_diffusion_inpaint.py", line 649, in __call__
    text_embeddings = self._encode_prompt(
  File "G:\Anaconda3\envs\ldm\lib\site-packages\diffusers\pipelines\stable_diffusion\pipeline_stable_diffusion_inpaint.py", line 384, in _encode_prompt
    text_embeddings = self.text_encoder(
  File "G:\Anaconda3\envs\ldm\lib\site-packages\torch\nn\modules\module.py", line 1110, in _call_impl
    return forward_call(*input, **kwargs)
  File "G:\Anaconda3\envs\ldm\lib\site-packages\transformers\models\clip\modeling_clip.py", line 722, in forward
    return self.text_model(
  File "G:\Anaconda3\envs\ldm\lib\site-packages\torch\nn\modules\module.py", line 1110, in _call_impl
    return forward_call(*input, **kwargs)
  File "G:\Anaconda3\envs\ldm\lib\site-packages\transformers\models\clip\modeling_clip.py", line 643, in forward
    encoder_outputs = self.encoder(
  File "G:\Anaconda3\envs\ldm\lib\site-packages\torch\nn\modules\module.py", line 1110, in _call_impl
    return forward_call(*input, **kwargs)
  File "G:\Anaconda3\envs\ldm\lib\site-packages\transformers\models\clip\modeling_clip.py", line 574, in forward
    layer_outputs = encoder_layer(
  File "G:\Anaconda3\envs\ldm\lib\site-packages\torch\nn\modules\module.py", line 1110, in _call_impl
    return forward_call(*input, **kwargs)
  File "G:\Anaconda3\envs\ldm\lib\site-packages\transformers\models\clip\modeling_clip.py", line 316, in forward
    hidden_states = self.layer_norm1(hidden_states)
  File "G:\Anaconda3\envs\ldm\lib\site-packages\torch\nn\modules\module.py", line 1110, in _call_impl
    return forward_call(*input, **kwargs)
  File "G:\Anaconda3\envs\ldm\lib\site-packages\torch\nn\modules\normalization.py", line 189, in forward
    return F.layer_norm(
  File "G:\Anaconda3\envs\ldm\lib\site-packages\torch\nn\functional.py", line 2486, in layer_norm
    return torch.layer_norm(input, normalized_shape, weight, bias, eps, torch.backends.cudnn.enabled)
RuntimeError: "LayerNormKernelImpl" not implemented for 'Half'

Fqlox avatar Dec 09 '22 13:12 Fqlox

I had the same problem, fixed with

# ...
pipe = pipe.to('cuda')
# ...

oscarnevarezleal avatar Feb 08 '23 00:02 oscarnevarezleal

I just ran into this, you saved me, I'm flabbergasted that this is not in the main repo

jtoy avatar Feb 14 '23 23:02 jtoy