AUTOMATIC1111 / stable-diffusion-webui

Stable Diffusion web UI
GNU Affero General Public License v3.0
139.92k stars 26.51k forks source link

[Bug]: macOS M1: AttributeError: 'UnetHook' object has no attribute 'control_params' #8057

Closed danielraffel closed 1 year ago

danielraffel commented 1 year ago

Is there an existing issue for this?

What happened?

Can't generate txt2image get an error on macOS m1 Ventura 13.2.1

AttributeError: 'UnetHook' object has no attribute 'control_params'

Steps to reproduce the problem

  1. Go to txt2image, enter prompt
  2. Press generate
  3. Get error in UX: AttributeError: 'UnetHook' object has no attribute 'control_params'

What should have happened?

instead of error expected to see a generated image

Commit where the problem happens

0cc0ee1b

What platforms do you use to access the UI ?

MacOS

What browsers do you use to access the UI ?

Apple Safari

Command Line Arguments

No

List of extensions

Extension URL Version Update
deforum-for-automatic1111-webui https://github.com/deforum-art/deforum-for-automatic1111-webui.git aa7ce2ba (Thu Feb 23 19:59:13 2023) unknown
sd-webui-controlnet https://github.com/Mikubill/sd-webui-controlnet d4573603 (Thu Feb 23 11:55:52 2023) unknown
sd_dreambooth_extension https://github.com/d8ahazard/sd_dreambooth_extension.git 43ae9d55 (Sat Feb 11 20:49:57 2023) unknown
LDSR built-in    
Lora built-in    
ScuNET built-in    
SwinIR built-in    
prompt-bracket-checker built-in  


Extension URL Version Update deforum-for-automatic1111-webui https://github.com/deforum-art/deforum-for-automatic1111-webui.git aa7ce2ba (Thu Feb 23 19:59:13 2023) unknown sd-webui-controlnet https://github.com/Mikubill/sd-webui-controlnet d4573603 (Thu Feb 23 11:55:52 2023) unknown sd_dreambooth_extension https://github.com/d8ahazard/sd_dreambooth_extension.git 43ae9d55 (Sat Feb 11 20:49:57 2023) unknown LDSR built-in
Lora built-in
ScuNET built-in
SwinIR built-in
prompt-bracket-checker built-in

Console logs

Error running process: /Users/username/stable-diffusion-webui/extensions/sd-webui-controlnet/scripts/controlnet.py
Traceback (most recent call last):
  File "/Users/username/stable-diffusion-webui/modules/scripts.py", line 386, in process
    script.process(p, *script_args)
  File "/Users/username/stable-diffusion-webui/extensions/sd-webui-controlnet/scripts/controlnet.py", line 613, in process
    self.latest_network.notify(forward_params, p.sampler_name in ["DDIM", "PLMS"])
TypeError: UnetHook.notify() takes 2 positional arguments but 3 were given

  0%|                                                                      | 0/20 [00:00<?, ?it/s]Error executing callback cfg_denoiser_callback for /Users/username/stable-diffusion-webui/extensions/sd-webui-controlnet/scripts/hook.py
Traceback (most recent call last):
  File "/Users/username/stable-diffusion-webui/modules/script_callbacks.py", line 161, in cfg_denoiser_callback
    c.callback(params)
  File "/Users/username/stable-diffusion-webui/extensions/sd-webui-controlnet/scripts/hook.py", line 73, in guidance_schedule_handler
    for param in self.control_params:
  File "/Users/username/stable-diffusion-webui/venv/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1269, in __getattr__
    raise AttributeError("'{}' object has no attribute '{}'".format(
AttributeError: 'UnetHook' object has no attribute 'control_params'

  0%|                                                                      | 0/20 [00:00<?, ?it/s]
Error completing request
Arguments: ('task(yimwjs7a9w37prm)', '', '', ['3D Look'], 20, 0, False, False, 1, 1, 7, -1.0, -1.0, 0, 0, 0, False, 512, 512, False, 0.7, 2, 'Latent', 0, 0, 0, [], 0, False, 'none', 'None', 1, None, False, 'Scale to Fit (Inner Fit)', False, False, 64, 64, 64, 1, False, False, False, 'positive', 'comma', 0, False, False, '', 1, '', 0, '', 0, '', True, False, False, False, 0) {}
Traceback (most recent call last):
  File "/Users/username/stable-diffusion-webui/modules/call_queue.py", line 56, in f
    res = list(func(*args, **kwargs))
  File "/Users/username/stable-diffusion-webui/modules/call_queue.py", line 37, in f
    res = func(*args, **kwargs)
  File "/Users/username/stable-diffusion-webui/modules/txt2img.py", line 56, in txt2img
    processed = process_images(p)
  File "/Users/username/stable-diffusion-webui/modules/processing.py", line 486, in process_images
    res = process_images_inner(p)
  File "/Users/username/stable-diffusion-webui/modules/processing.py", line 632, in process_images_inner
    samples_ddim = p.sample(conditioning=c, unconditional_conditioning=uc, seeds=seeds, subseeds=subseeds, subseed_strength=p.subseed_strength, prompts=prompts)
  File "/Users/username/stable-diffusion-webui/modules/processing.py", line 832, in sample
    samples = self.sampler.sample(self, x, conditioning, unconditional_conditioning, image_conditioning=self.txt2img_image_conditioning(x))
  File "/Users/username/stable-diffusion-webui/modules/sd_samplers_kdiffusion.py", line 349, in sample
    samples = self.launch_sampling(steps, lambda: self.func(self.model_wrap_cfg, x, extra_args={
  File "/Users/username/stable-diffusion-webui/modules/sd_samplers_kdiffusion.py", line 225, in launch_sampling
    return func()
  File "/Users/username/stable-diffusion-webui/modules/sd_samplers_kdiffusion.py", line 349, in <lambda>
    samples = self.launch_sampling(steps, lambda: self.func(self.model_wrap_cfg, x, extra_args={
  File "/Users/username/stable-diffusion-webui/venv/lib/python3.10/site-packages/torch/autograd/grad_mode.py", line 27, in decorate_context
    return func(*args, **kwargs)
  File "/Users/username/stable-diffusion-webui/repositories/k-diffusion/k_diffusion/sampling.py", line 145, in sample_euler_ancestral
    denoised = model(x, sigmas[i] * s_in, **extra_args)
  File "/Users/username/stable-diffusion-webui/venv/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1194, in _call_impl
    return forward_call(*input, **kwargs)
  File "/Users/username/stable-diffusion-webui/modules/sd_samplers_kdiffusion.py", line 117, in forward
    x_out = self.inner_model(x_in, sigma_in, cond={"c_crossattn": [cond_in], "c_concat": [image_cond_in]})
  File "/Users/username/stable-diffusion-webui/venv/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1194, in _call_impl
    return forward_call(*input, **kwargs)
  File "/Users/username/stable-diffusion-webui/repositories/k-diffusion/k_diffusion/external.py", line 114, in forward
    eps = self.get_eps(input * c_in, self.sigma_to_t(sigma), **kwargs)
  File "/Users/username/stable-diffusion-webui/repositories/k-diffusion/k_diffusion/external.py", line 140, in get_eps
    return self.inner_model.apply_model(*args, **kwargs)
  File "/Users/username/stable-diffusion-webui/modules/sd_hijack_utils.py", line 17, in <lambda>
    setattr(resolved_obj, func_path[-1], lambda *args, **kwargs: self(*args, **kwargs))
  File "/Users/username/stable-diffusion-webui/modules/sd_hijack_utils.py", line 26, in __call__
    return self.__sub_func(self.__orig_func, *args, **kwargs)
  File "/Users/username/stable-diffusion-webui/modules/sd_hijack_unet.py", line 45, in apply_model
    return orig_func(self, x_noisy.to(devices.dtype_unet), t.to(devices.dtype_unet), cond, **kwargs).float()
  File "/Users/username/stable-diffusion-webui/repositories/stable-diffusion-stability-ai/ldm/models/diffusion/ddpm.py", line 858, in apply_model
    x_recon = self.model(x_noisy, t, **cond)
  File "/Users/username/stable-diffusion-webui/venv/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1194, in _call_impl
    return forward_call(*input, **kwargs)
  File "/Users/username/stable-diffusion-webui/repositories/stable-diffusion-stability-ai/ldm/models/diffusion/ddpm.py", line 1329, in forward
    out = self.diffusion_model(x, t, context=cc)
  File "/Users/username/stable-diffusion-webui/venv/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1194, in _call_impl
    return forward_call(*input, **kwargs)
  File "/Users/username/stable-diffusion-webui/extensions/sd-webui-controlnet/scripts/hook.py", line 178, in forward2
    h = th.cat([h, cfg_based_adder(hs_input, control_input, require_inpaint_hijack)], dim=1)
  File "/Users/username/stable-diffusion-webui/extensions/sd-webui-controlnet/scripts/hook.py", line 99, in forward
    return torch.cat([cond + x_cond, uncond], dim=0)
  File "/Users/username/stable-diffusion-webui/venv/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1269, in __getattr__
    raise AttributeError("'{}' object has no attribute '{}'".format(
AttributeError: 'UnetHook' object has no attribute 'control_params'

Additional information

Note: Worked yesterday, stopped working today. Did update extensions today in the client (sd_dreambooth_extension, sd-webui-controlnet) however disabling those and restarting did not fix things.

danielraffel commented 1 year ago

Got things working again. The solution

1) manually trashed /extensions/sd-webui-controlnet <<-- appeared to be the root cause 2) restarted at the command line vs in the webui