huchenlei / ComfyUI-layerdiffuse

Layer Diffuse custom nodes
Apache License 2.0
1.49k stars 145 forks source link

[Bug]: The Issue of y.shape[1] == 4 and Directml, a lack of torch.median() and the solution. #50

Open MythicalChu opened 8 months ago

MythicalChu commented 8 months ago

What happened?

Everyone on Directml will fail to use this node encountering the tuple error.

Steps to reproduce the problem

Be me. Be everyone using DirectML. ??? Don't profit. Ever.

What should have happened?

~Alpha Translucentiation~

Commit where the problem happens

ComfyUI: ComfyUI-layerdiffuse:

Sysinfo

AMD, DirectML, Pain Incarnate.

Console logs

-

Workflow json file

-

Additional information

I had posted about this on forge's layerdiffuse and totally forgot, my bad. There I detail the exact cause of the problem and the workaround: https://github.com/layerdiffusion/sd-forge-layerdiffuse/issues/10#issue-2164698715

tl;dr: on line 300 of lib_layerdiffusion\modesl.py , median = torch.median(result, dim=0).values FAILS. DirectML doesn't know torch.median() . The solution is to cast the previous line .to("cpu") and the next line back .to(self.load_device)

So, lines 299, 300, 301 look like this: result = torch.stack(result, dim=0).to("cpu") median = torch.median(result, dim=0).values return median.to(self.load_device)