diff options
author | AUTOMATIC1111 <16777216c@gmail.com> | 2023-08-02 15:37:16 +0000 |
---|---|---|
committer | AUTOMATIC1111 <16777216c@gmail.com> | 2023-08-02 15:37:16 +0000 |
commit | 10ff071e3368a028ddb6d68d3c3bfd028094aabb (patch) | |
tree | bfeafa65ec969b6e74c9564701062faac4bcd850 /modules/sd_hijack_optimizations.py | |
parent | 6a0d498c8ec5287a75e2a3bc8a4fa79e82e64c18 (diff) | |
download | stable-diffusion-webui-gfx803-10ff071e3368a028ddb6d68d3c3bfd028094aabb.tar.gz stable-diffusion-webui-gfx803-10ff071e3368a028ddb6d68d3c3bfd028094aabb.tar.bz2 stable-diffusion-webui-gfx803-10ff071e3368a028ddb6d68d3c3bfd028094aabb.zip |
update doggettx cross attention optimization to not use an unreasonable amount of memory in some edge cases -- suggestion by MorkTheOrk
Diffstat (limited to 'modules/sd_hijack_optimizations.py')
-rw-r--r-- | modules/sd_hijack_optimizations.py | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/modules/sd_hijack_optimizations.py b/modules/sd_hijack_optimizations.py index b5f85ba5..0e810eec 100644 --- a/modules/sd_hijack_optimizations.py +++ b/modules/sd_hijack_optimizations.py @@ -256,9 +256,9 @@ def split_cross_attention_forward(self, x, context=None, mask=None, **kwargs): raise RuntimeError(f'Not enough memory, use lower resolution (max approx. {max_res}x{max_res}). '
f'Need: {mem_required / 64 / gb:0.1f}GB free, Have:{mem_free_total / gb:0.1f}GB free')
- slice_size = q.shape[1] // steps if (q.shape[1] % steps) == 0 else q.shape[1]
+ slice_size = q.shape[1] // steps
for i in range(0, q.shape[1], slice_size):
- end = i + slice_size
+ end = min(i + slice_size, q.shape[1])
s1 = einsum('b i d, b j d -> b i j', q[:, i:end], k)
s2 = s1.softmax(dim=-1, dtype=q.dtype)
|