aboutsummaryrefslogtreecommitdiff
path: root/modules/devices.py
AgeCommit message (Collapse)Author
2023-05-10ruff auto fixesAUTOMATIC
2023-04-29rename CPU RNG to RNG source in settings, add infotext and parameters ↵AUTOMATIC
copypaste support to RNG source
2023-04-18Option to use CPU for random number generation.Deciare
Makes a given manual seed generate the same images across different platforms, independently of the GPU architecture in use. Fixes #9613.
2023-02-01Refactor Mac specific code to a separate filebrkirch
Move most Mac related code to a separate file, don't even load it unless web UI is run under macOS.
2023-02-01Refactor MPS fixes to CondFuncbrkirch
2023-02-01MPS fix is still needed :(brkirch
Apparently I did not test with large enough images to trigger the bug with torch.narrow on MPS
2023-01-28Merge pull request #7309 from brkirch/fix-embeddingsAUTOMATIC1111
Fix embeddings, upscalers, and refactor `--upcast-sampling`
2023-01-28Remove MPS fix no longer needed for PyTorchbrkirch
The torch.narrow fix was required for nightly PyTorch builds for a while to prevent a hard crash, but newer nightly builds don't have this issue.
2023-01-28Refactor conditional casting, fix upscalersbrkirch
2023-01-27clarify the option to disable NaN check.AUTOMATIC
2023-01-27remove the need to place configs near modelsAUTOMATIC
2023-01-25Add UI setting for upcasting attention to float32brkirch
Adds "Upcast cross attention layer to float32" option in Stable Diffusion settings. This allows for generating images using SD 2.1 models without --no-half or xFormers. In order to make upcasting cross attention layer optimizations possible it is necessary to indent several sections of code in sd_hijack_optimizations.py so that a context manager can be used to disable autocast. Also, even though Stable Diffusion (and Diffusers) only upcast q and k, unfortunately my findings were that most of the cross attention layer optimizations could not function unless v is upcast also.
2023-01-25Add option for float32 sampling with float16 UNetbrkirch
This also handles type casting so that ROCm and MPS torch devices work correctly without --no-half. One cast is required for deepbooru in deepbooru_model.py, some explicit casting is required for img2img and inpainting. depth_model can't be converted to float16 or it won't work correctly on some systems (it's known to have issues on MPS) so in sd_models.py model.depth_model is removed for model.half().
2023-01-19Merge pull request #6922 from brkirch/cumsum-fixAUTOMATIC1111
Improve cumsum fix for MPS
2023-01-17Fix cumsum for MPS in newer torchbrkirch
The prior fix assumed that testing int16 was enough to determine if a fix is needed, but a recent fix for cumsum has int16 working but not bool.
2023-01-17disable the new NaN check for the CIAUTOMATIC
2023-01-16Add a check and explanation for tensor with all NaNs.AUTOMATIC
2023-01-05Add support for PyTorch nightly and local buildsbrkirch
2022-12-17Add numpy fix for MPS on PyTorch 1.12.1brkirch
When saving training results with torch.save(), an exception is thrown: "RuntimeError: Can't call numpy() on Tensor that requires grad. Use tensor.detach().numpy() instead." So for MPS, check if Tensor.requires_grad and detach() if necessary.
2022-12-03add built-in extension systemAUTOMATIC
add support for adding upscalers in extensions move LDSR, ScuNET and SwinIR to built-in extensions
2022-12-03add comment for #4407 and remove seemingly unnecessary cudnn.enabledAUTOMATIC
2022-12-03fix #4407 breaking UI entirely for card other than ones related to the PRAUTOMATIC
2022-12-03Merge pull request #4407 from yoinked-h/patch-1AUTOMATIC1111
Fix issue with 16xx cards
2022-11-30Rework MPS randn fix, add randn_like fixbrkirch
torch.manual_seed() already sets a CPU generator, so there is no reason to create a CPU generator manually. torch.randn_like also needs a MPS fix for k-diffusion, but a torch hijack with randn_like already exists so it can also be used for that.
2022-11-27Merge pull request #4918 from brkirch/pytorch-fixesAUTOMATIC1111
Fixes for PyTorch 1.12.1 when using MPS
2022-11-27eliminate duplicated code from #5095AUTOMATIC
2022-11-26torch.cuda.empty_cache() defaults to cuda:0 device unless explicitly set ↵Matthew McGoogan
otherwise first. Updating torch_gc() to use the device set by --device-id if specified to avoid OOM edge cases on multi-GPU systems.
2022-11-21Add fixes for PyTorch 1.12.1brkirch
Fix typo "MasOS" -> "macOS" If MPS is available and PyTorch is an earlier version than 1.13: * Monkey patch torch.Tensor.to to ensure all tensors sent to MPS are contiguous * Monkey patch torch.nn.functional.layer_norm to ensure input tensor is contiguous (required for this program to work with MPS on unmodified PyTorch 1.12.1)
2022-11-17Revert "MPS Upscalers Fix"brkirch
This reverts commit 768b95394a8500da639b947508f78296524f1836.
2022-11-12change formatting to match the main program in devices.pyAUTOMATIC
2022-11-12Update devices.py源文雨
2022-11-12Fix wrong mps selection below MasOS 12.3源文雨
2022-11-08actual better fixpepe10-gpu
thanks C43H66N12O12S2
2022-11-07terrible hackpepe10-gpu
2022-11-0616xx card fixpepe10-gpu
cudnn
2022-10-25MPS Upscalers Fixbrkirch
Get ESRGAN, SCUNet, and SwinIR working correctly on MPS by ensuring memory is contiguous for tensor views before sending to MPS device.
2022-10-25Remove BSRGAN from --use-cpu, add SwinIRbrkirch
2022-10-22remove parsing command line from devices.pyAUTOMATIC
2022-10-22implement CUDA device selection by IDExtraltodeus
2022-10-14Add 'interrogate' and 'all' choices to --use-cpubrkirch
* Add 'interrogate' and 'all' choices to --use-cpu * Change type for --use-cpu argument to str.lower, so that choices are case insensitive
2022-10-10--no-half-vaeAUTOMATIC
2022-10-04Merge branch 'master' into cpu-cmdline-optbrkirch
2022-10-04send all three of GFPGAN's and codeformer's models to CPU memory instead of ↵AUTOMATIC
just one for #1283
2022-10-04Add BSRGAN to --add-cpubrkirch
2022-10-04Add --use-cpu command line optionbrkirch
Remove MPS detection to use CPU for GFPGAN / CodeFormer and add a --use-cpu command line option.
2022-10-04Merge branch 'master' into masterbrkirch
2022-10-02initial support for training textual inversionAUTOMATIC
2022-09-30When device is MPS, use CPU for GFPGAN insteadbrkirch
GFPGAN will not work if the device is MPS, so default to CPU instead.
2022-09-13first attempt to produce crrect seeds in batchAUTOMATIC
2022-09-12changes for #294AUTOMATIC