nullquant / ComfyUI-BrushNet

ComfyUI BrushNet nodes
Apache License 2.0
384 stars 14 forks source link

PowerPaint‘s model seems to only work properly with float32 precision types #77

Closed jokero3answer closed 3 weeks ago

jokero3answer commented 1 month ago

image

but image

Error occurred when executing KSamplerAdvanced //Inspire:

"LayerNormKernelImpl" not implemented for 'Half'

File "D:\ComfyUI\execution.py", line 151, in recursive_execute output_data, output_ui = get_output_data(obj, input_data_all) File "D:\ComfyUI\execution.py", line 81, in get_output_data return_values = map_node_over_list(obj, input_data_all, obj.FUNCTION, allow_interrupt=True) File "D:\ComfyUI\execution.py", line 74, in map_node_over_list results.append(getattr(obj, func)(slice_dict(input_data_all, i))) File "D:\ComfyUI\custom_nodes\ComfyUI-Inspire-Pack\inspire\a1111_compat.py", line 120, in doit return (self.sample(*args, *kwargs)[0],) File "D:\ComfyUI\custom_nodes\ComfyUI-Inspire-Pack\inspire\a1111_compat.py", line 114, in sample return inspire_ksampler(model, noise_seed, steps, cfg, sampler_name, scheduler, positive, negative, latent_image, File "D:\ComfyUI\custom_nodes\ComfyUI-Inspire-Pack\inspire\a1111_compat.py", line 33, in inspire_ksampler samples = common.impact_sampling( File "D:\ComfyUI\custom_nodes\ComfyUI-Inspire-Pack\inspire\libs\common.py", line 14, in impact_sampling return nodes.NODE_CLASS_MAPPINGS['RegionalSampler'].separated_sample(args, kwargs) File "D:\ComfyUI\custom_nodes\ComfyUI-Impact-Pack\modules\impact\special_samplers.py", line 307, in separated_sample return separated_sample(*args, kwargs) File "D:\ComfyUI\custom_nodes\ComfyUI-Impact-Pack\modules\impact\impact_sampling.py", line 179, in separated_sample res = sample_with_custom_noise(model, add_noise, seed, cfg, positive, negative, impact_sampler, sigmas, latent_image, noise=noise, callback=callback) File "D:\ComfyUI\custom_nodes\ComfyUI-Impact-Pack\modules\impact\impact_sampling.py", line 135, in sample_with_custom_noise samples = comfy.sample.sample_custom(model, noise, cfg, sampler, sigmas, positive, negative, latent_image, noise_mask=noise_mask, callback=touched_callback, disable_pbar=disable_pbar, seed=noise_seed) File "D:\ComfyUI\custom_nodes\ComfyUI-Advanced-ControlNet\adv_control\control_reference.py", line 47, in refcn_sample return orig_comfy_sample(model, *args, kwargs) File "D:\ComfyUI\comfy\sample.py", line 42, in sample_custom samples = comfy.samplers.sample(model, noise, positive, negative, cfg, model.load_device, sampler, sigmas, model_options=model.model_options, latent_image=latent_image, denoise_mask=noise_mask, callback=callback, disable_pbar=disable_pbar, seed=seed) File "D:\ComfyUI\custom_nodes\ComfyUI-BrushNet\brushnet_nodes.py", line 652, in modified_sample return cfg_guider.sample(noise, latent_image, sampler, sigmas, denoise_mask, callback, disable_pbar, seed) File "D:\ComfyUI\comfy\samplers.py", line 650, in sample output = self.inner_sample(noise, latent_image, device, sampler, sigmas, denoise_mask, callback, disable_pbar, seed) File "D:\ComfyUI\comfy\samplers.py", line 629, in inner_sample samples = sampler.sample(self, sigmas, extra_args, callback, noise, latent_image, denoise_mask, disable_pbar) File "D:\ComfyUI\comfy\samplers.py", line 534, in sample samples = self.sampler_function(model_k, noise, sigmas, extra_args=extra_args, callback=k_callback, disable=disable_pbar, self.extra_options) File "D:\ComfyUI\custom_nodes\ComfyUI-Impact-Pack\modules\impact\impact_sampling.py", line 69, in sample_dpmpp_sde return k_diffusion_sampling.sample_dpmpp_2m_sde(model, x, sigmas, *kwargs) File "D:\ComfyUI\venv\lib\site-packages\torch\utils_contextlib.py", line 115, in decorate_context return func(args, kwargs) File "D:\ComfyUI\comfy\k_diffusion\sampling.py", line 618, in sample_dpmpp_2m_sde denoised = model(x, sigmas[i] * s_in, extra_args) File "D:\ComfyUI\comfy\samplers.py", line 272, in call out = self.inner_model(x, sigma, model_options=model_options, seed=seed) File "D:\ComfyUI\comfy\samplers.py", line 616, in call return self.predict_noise(*args, kwargs) File "D:\ComfyUI\comfy\samplers.py", line 619, in predict_noise return sampling_function(self.inner_model, x, timestep, self.conds.get("negative", None), self.conds.get("positive", None), self.cfg, model_options=model_options, seed=seed) File "D:\ComfyUI\comfy\samplers.py", line 258, in sampling_function out = calc_cond_batch(model, conds, x, timestep, model_options) File "D:\ComfyUI\comfy\samplers.py", line 218, in calc_cond_batch output = model.apply_model(inputx, timestep, c).chunk(batch_chunks) File "D:\ComfyUI\comfy\model_base.py", line 97, in apply_model model_output = self.diffusion_model(xc, t, context=context, control=control, transformer_options=transformer_options, *extra_conds).float() File "D:\ComfyUI\venv\lib\site-packages\torch\nn\modules\module.py", line 1511, in _wrapped_call_impl return self._call_impl(args, kwargs) File "D:\ComfyUI\venv\lib\site-packages\torch\nn\modules\module.py", line 1520, in _call_impl return forward_call(*args, kwargs) File "D:\ComfyUI\custom_nodes\ComfyUI-BrushNet\brushnet_nodes.py", line 827, in forward_patched_by_brushnet input_samples, mid_sample, output_samples = brushnet_inference(x, timesteps, transformer_options) File "D:\ComfyUI\venv\lib\site-packages\torch\utils_contextlib.py", line 115, in decorate_context return func(*args, *kwargs) File "D:\ComfyUI\custom_nodes\ComfyUI-BrushNet\brushnet_nodes.py", line 757, in brushnet_inference return brushnet(x, File "D:\ComfyUI\venv\lib\site-packages\torch\nn\modules\module.py", line 1511, in _wrapped_call_impl return self._call_impl(args, kwargs) File "D:\ComfyUI\venv\lib\site-packages\torch\nn\modules\module.py", line 1520, in _call_impl return forward_call(*args, kwargs) File "D:\ComfyUI\custom_nodes\ComfyUI-BrushNet\brushnet\brushnet_ca.py", line 827, in forward sample, res_samples = downsample_block( File "D:\ComfyUI\venv\lib\site-packages\torch\nn\modules\module.py", line 1511, in _wrapped_call_impl return self._call_impl(*args, *kwargs) File "D:\ComfyUI\venv\lib\site-packages\torch\nn\modules\module.py", line 1520, in _call_impl return forward_call(args, kwargs) File "D:\ComfyUI\custom_nodes\ComfyUI-BrushNet\brushnet\unet_2d_blocks.py", line 1380, in forward hidden_states = attn( File "D:\ComfyUI\venv\lib\site-packages\torch\nn\modules\module.py", line 1511, in _wrapped_call_impl return self._call_impl(*args, kwargs) File "D:\ComfyUI\venv\lib\site-packages\torch\nn\modules\module.py", line 1520, in _call_impl return forward_call(*args, *kwargs) File "D:\ComfyUI\venv\lib\site-packages\diffusers\models\transformers\transformer_2d.py", line 397, in forward hidden_states = block( File "D:\ComfyUI\venv\lib\site-packages\torch\nn\modules\module.py", line 1511, in _wrapped_call_impl return self._call_impl(args, kwargs) File "D:\ComfyUI\venv\lib\site-packages\torch\nn\modules\module.py", line 1520, in _call_impl return forward_call(*args, kwargs) File "D:\ComfyUI\venv\lib\site-packages\diffusers\models\attention.py", line 309, in forward norm_hidden_states = self.norm1(hidden_states) File "D:\ComfyUI\venv\lib\site-packages\torch\nn\modules\module.py", line 1511, in _wrapped_call_impl return self._call_impl(*args, *kwargs) File "D:\ComfyUI\venv\lib\site-packages\torch\nn\modules\module.py", line 1520, in _call_impl return forward_call(args, kwargs) File "D:\ComfyUI\venv\lib\site-packages\torch\nn\modules\normalization.py", line 201, in forward return F.layer_norm( File "D:\ComfyUI\venv\lib\site-packages\torch\nn\functional.py", line 2546, in layer_norm return torch.layer_norm(input, normalized_shape, weight, bias, eps, torch.backends.cudnn.enabled)

jokero3answer commented 1 month ago

@nullquant Diagnostics-1715261661.log

nullquant commented 1 month ago

But it is working. This switch was added to ensure all users can find a configuration that works for them. It seems that some layers of PowerPaint model in your specific run was unloaded to CPU. Probably VRAM was full, I suppose. And CPU device in pytorch don't have float16 implementation. So, just use float32 :)