-
Notifications
You must be signed in to change notification settings - Fork 328
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Corrupted images on Vukan backend #439
Corrupted images on Vukan backend #439
Comments
Good catch. Using the same prompt, i get a smilar behavior as you. I might try to investigate what's going on, but I'm not confident I'll figure it out. |
@0cc4m Do you have a clue? |
This also happens with images bigger than 512x512 if the resolution isn't a multiple of 128... |
Thank you for the detailed report, I'll look into it when I find some time. |
Fix bad calculation of the end of the range. Add a backend test that covers the bad case (taken from stable diffusion). Fixes leejet/stable-diffusion.cpp#439.
I used GGML_VULKAN_CHECK_RESULTS to narrow down that group_norm was failing, reproduced it with a backend test, and pushed a fix to ggerganov/llama.cpp#10496. BTW, GGML_VULKAN_CHECK_RESULTS is really helpful, but it looks like it may get harder to build with the recent backend split. |
Fix bad calculation of the end of the range. Add a backend test that covers the bad case (taken from stable diffusion). Fixes leejet/stable-diffusion.cpp#439.
Yeah, I built it to narrow down these kinds of model issues. I hope we can keep it around. |
Fix bad calculation of the end of the range. Add a backend test that covers the bad case (taken from stable diffusion). Fixes leejet/stable-diffusion.cpp#439.
I manually applied 56d8a95 on a local build, and it seems to fix this issue. Thanks! |
Fix bad calculation of the end of the range. Add a backend test that covers the bad case (taken from stable diffusion). Fixes leejet/stable-diffusion.cpp#439.
Fix bad calculation of the end of the range. Add a backend test that covers the bad case (taken from stable diffusion). Fixes leejet/stable-diffusion.cpp#439.
Fix bad calculation of the end of the range. Add a backend test that covers the bad case (taken from stable diffusion). Fixes leejet/stable-diffusion.cpp#439.
Fix bad calculation of the end of the range. Add a backend test that covers the bad case (taken from stable diffusion). Fixes leejet/stable-diffusion.cpp#439.
Fix bad calculation of the end of the range. Add a backend test that covers the bad case (taken from stable diffusion). Fixes leejet/stable-diffusion.cpp#439.
I'm getting either corrupted or inconsistent images on Vulkan backend, for any resolution other than 512x512.
My system is a Linux PC with a Ryzen 3400G, almost-vanilla Debian 12 (using the distro graphic stack). All following tests with:
--type f16 --lora-model-dir ./LoRA --model ./SD/dreamshaper_8.safetensors --prompt 'a fantasy character, detailed background, colorful<lora:lcm-lora-sdv1-5:1>' --cfg-scale 1.0 --sampling-method lcm --steps 4 --rng cuda --seed 42 -b 1 --color
, and a script alternating resolution and compiled binary (Vulkan or CPU backend).
320x512:
Vulkan images look ok-ish (for such a small resolution anyway), but the same seed should produce the same image. And the CPU render looks quite different.
Second test, 384x384; similar behavior (changes between Vulkan 1 and 2 may not be apparent on the thumbnail):
The third test, 448x448, gets weird:
At first, I blamed my PC drivers. But then, the 512x512 test:
Looks absolutely fine, and identical between Vulkan and CPU.
In summary:
(related: #122 )
The text was updated successfully, but these errors were encountered: