Skip to content
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

image embedding data cache #16556

Merged
merged 1 commit into from
Oct 29, 2024
Merged

image embedding data cache #16556

merged 1 commit into from
Oct 29, 2024

Conversation

w-e-w
Copy link
Collaborator

@w-e-w w-e-w commented Oct 17, 2024

Description

tldr

  • reduce future unnecessary disk read for determining if an image is an image embedding or not
  • if addition option is enabled potentially reduce embedding load time by cacheing the embedding data

in embedding dir webui will scan and load image embedding

images that has textual inversion data embedded inside the image file

all png webp jxl avif in the dir will be considered as potential image embedding unless the image file name has a second suffix of preview
webui will attempt to read and extract the textual inversion data from the image file
this is a rather slow operation as it requires reading of the entire image from disk


if a user does not know about or forgot about image embedding (I don't think this is commonly used)
they may decide to sotre extra image files that alongside the embedding file, like previews but don't have the .preview 2nd suffix
if there are lots of images then they may found that loading embedded is taking exceedingly long

this happened to me, when I decided to dump lots of PNGs files that doesn't have .preview 2nd suffix into the embedded dir, took me some time to realize what happened

to solve this I use the diskcache from cache models to caching the results of loading an image as embedding
this was able to drastically reduces the time that it takes to load the textual inversion

I implemented so that if an image is not an image embedding then the result is always cache, so next time it won't need to read from disk

if actual image embeddings won't be cached by default unless option textual_inversion_image_embedding_data_cache : Cache the data of image embeddings is enabled
the reason why is an option is because even though I believe this reduce load time for the "actual image embedding" it will also takes up extra disk space


Notes:

I don't think I've done any changes that will cause things to break
but I don't have any actual image embedding so this PR tested not teste with real data
if someone that regularly use image embedding please verify this PR

Checklist:

@w-e-w w-e-w requested a review from AUTOMATIC1111 as a code owner October 17, 2024 01:24
@w-e-w
Copy link
Collaborator Author

w-e-w commented Oct 20, 2024

this PR can be summed up as

  1. take a block of existing code, move it into a function
  2. add persistent cache mechanism using existing modules

@catboxanon catboxanon merged commit deb3803 into dev Oct 29, 2024
6 checks passed
@catboxanon catboxanon deleted the image-embedding-data-cache branch October 29, 2024 14:28
bluelovers added a commit to bluelovers/stable-diffusion-webui that referenced this pull request Nov 26, 2024
* dev-a1111:
  fix passing of literal backslash (AUTOMATIC1111#16671)
  fix prompt-bracket-checker miscounting of literal tokens (AUTOMATIC1111#16669)
  Bump safetensors to v0.4.5
  Honor lossless webp compression option in API
  use shared.hf_endpoint (AUTOMATIC1111#16611)
  Warn if WebUI is installed under a dot directory (AUTOMATIC1111#16584)
  sd_xl_v.yaml: use_checkpoint = False
  XYZ option to disable grid (AUTOMATIC1111#16416)
  Fix Default system None filter logic (AUTOMATIC1111#16309)
  Fix weighting config for SDXL v-pred
  InputAccordion duplicate elem_id handling (AUTOMATIC1111#16381)
  addEventListener {passive: false} (AUTOMATIC1111#16575)
  pyenv-win compatibility - another approach (AUTOMATIC1111#16287)
  Disable Hires checkpoint if same as First pass checkpoint (AUTOMATIC1111#16269)
  Fix postprocessing_enable_in_main_ui ScriptPostprocessing elem_id (AUTOMATIC1111#16373)
  extra_only / main_ui_only ScriptPostprocessing (AUTOMATIC1111#16374)
  Allow newline in Extra Network activation text (AUTOMATIC1111#16428)
  image embedding data cache (AUTOMATIC1111#16556)
  Fix typo
THClements added a commit to THClements/stable-diffusion-webui that referenced this pull request Feb 1, 2025
commit dc34c00
Author: w-e-w <[email protected]>
Date:   Fri Dec 27 22:10:13 2024 +0900

    fix shadows name 'k' from outer scope

    while syntactically correct this triggers a false Unresolved reference 'k' error in PyCharms

commit fc54833
Author: w-e-w <[email protected]>
Date:   Fri Dec 27 08:58:44 2024 +0900

    Authenticated Sysinfo

commit 078d04e
Author: w-e-w <[email protected]>
Date:   Fri Dec 27 10:40:15 2024 +0900

    ruff <path> is deprecated. Use ruff check <path> (AUTOMATIC1111#16753)

commit 1a773bf
Merge: f25c3fc f113474
Author: w-e-w <[email protected]>
Date:   Thu Dec 26 06:33:04 2024 +0900

    Merge pull request AUTOMATIC1111#16751 from Neokmi/master

    Fix  Codeformer and gfpgan extension , Inconsistent overlay layer types when visibility value is less than 1

commit f113474
Author: w-e-w <[email protected]>
Date:   Thu Dec 26 06:26:47 2024 +0900

    lint

commit 6577e06
Author: klx <[email protected]>
Date:   Thu Dec 26 02:16:05 2024 +0800

    Update postprocessing_gfpgan.py

    Fix  gfpgan extension , Inconsistent overlay layer types when visibility value is less than 1

commit 7953c57
Author: klx <[email protected]>
Date:   Thu Dec 26 02:14:49 2024 +0800

    Update postprocessing_codeformer.py

    Fix  Codeformer extension , Inconsistent overlay layer types when visibility value is less than 1

commit f25c3fc
Author: w-e-w <[email protected]>
Date:   Wed Dec 25 05:43:55 2024 +0900

    fix sd_vae_explanation (AUTOMATIC1111#16748)

commit fc0952a
Merge: 04903af b414c62
Author: w-e-w <[email protected]>
Date:   Tue Dec 24 22:58:43 2024 +0900

    Merge pull request AUTOMATIC1111#16745 from Sanchows/removed-unused-import-modules-errors

    removed unnecessary import 'modules.errors'

commit b414c62
Author: Alexander Sachenko <[email protected]>
Date:   Tue Dec 24 15:45:10 2024 +0300

    removed unnecessary import modules.errors

commit 04903af
Merge: e8c3b1f 9568622
Author: w-e-w <[email protected]>
Date:   Wed Dec 18 03:21:48 2024 +0900

    Merge pull request AUTOMATIC1111#16604 from Haoming02/ext-updt-parallel

    Check for Extension Updates in Parallel

commit e8c3b1f
Merge: 0120768 8bf30e3
Author: w-e-w <[email protected]>
Date:   Wed Dec 18 02:37:30 2024 +0900

    Merge pull request AUTOMATIC1111#16718 from Haoming02/bracket-checker-order

    [Bracket Checker] Also check for the order of brackets

commit 8bf30e3
Author: Haoming <[email protected]>
Date:   Wed Dec 18 01:02:40 2024 +0800

    revert IIFE

commit fbc51fa
Author: Haoming <[email protected]>
Date:   Mon Dec 16 09:47:38 2024 +0800

    skip escaped

commit 7025a2c
Author: Haoming <[email protected]>
Date:   Thu Dec 12 16:08:15 2024 +0800

    check-for-order

commit 0120768
Merge: 023454b b425b97
Author: w-e-w <[email protected]>
Date:   Thu Nov 28 17:39:12 2024 +0900

    Merge pull request AUTOMATIC1111#16687 from Haoming02/dropdown4format

    Use gr.Dropdown for Image Formats

commit b425b97
Author: w-e-w <[email protected]>
Date:   Thu Nov 28 16:56:10 2024 +0900

    improve img fromat description

commit 539ea39
Author: w-e-w <[email protected]>
Date:   Thu Nov 28 14:02:33 2024 +0900

    use DropdownEditable

    use DropdownEditable so user can input other formats if they require it
    make the default png the first on the list

commit 65bd61e
Author: Haoming <[email protected]>
Date:   Wed Nov 27 10:42:50 2024 +0800

    format-dropdown

commit 023454b
Author: w-e-w <[email protected]>
Date:   Thu Nov 21 11:33:59 2024 +0900

    fix passing of literal backslash (AUTOMATIC1111#16671)

commit cd869bb
Author: w-e-w <[email protected]>
Date:   Thu Nov 21 02:29:41 2024 +0900

    fix prompt-bracket-checker miscounting of literal tokens (AUTOMATIC1111#16669)

commit 957888a
Merge: 7799859 d2c9efb
Author: w-e-w <[email protected]>
Date:   Tue Nov 19 14:41:37 2024 +0900

    Merge pull request AUTOMATIC1111#16667 from AUTOMATIC1111/fix/safetensors-bump

    Bump safetensors to v0.4.5

commit d2c9efb
Author: catboxanon <[email protected]>
Date:   Mon Nov 18 20:48:36 2024 -0500

    Bump safetensors to v0.4.5

    Resolves AUTOMATIC1111#16650

commit 7799859
Merge: 1b16c62 ca3bedb
Author: w-e-w <[email protected]>
Date:   Sat Nov 2 01:28:12 2024 +0900

    Merge pull request AUTOMATIC1111#16620 from AUTOMATIC1111/fix/api-webp-lossless

    Honor lossless WebP compression option in API

commit ca3bedb
Author: catboxanon <[email protected]>
Date:   Fri Nov 1 11:32:52 2024 -0400

    Honor lossless webp compression option in API

commit 1b16c62
Author: w-e-w <[email protected]>
Date:   Thu Oct 31 02:01:32 2024 +0900

    use shared.hf_endpoint (AUTOMATIC1111#16611)

commit 91de919
Author: w-e-w <[email protected]>
Date:   Wed Oct 30 22:34:37 2024 +0900

    Warn if WebUI is installed under a dot directory (AUTOMATIC1111#16584)

commit aa52408
Merge: 28323cf e6f36d9
Author: w-e-w <[email protected]>
Date:   Wed Oct 30 09:51:41 2024 +0900

    Merge pull request AUTOMATIC1111#16606 from AUTOMATIC1111/fix/vweighting

    Fix config for SDXL v-pred

commit e6f36d9
Author: catboxanon <[email protected]>
Date:   Tue Oct 29 13:27:32 2024 -0400

    sd_xl_v.yaml: use_checkpoint = False

    In accordance with AUTOMATIC1111#15803

commit 28323cf
Author: w-e-w <[email protected]>
Date:   Wed Oct 30 02:18:38 2024 +0900

    XYZ option to disable grid (AUTOMATIC1111#16416)

commit 533c7b7
Author: w-e-w <[email protected]>
Date:   Wed Oct 30 02:13:16 2024 +0900

    Fix Default system None filter logic (AUTOMATIC1111#16309)

commit ac28cad
Author: catboxanon <[email protected]>
Date:   Tue Oct 29 11:49:09 2024 -0400

    Fix weighting config for SDXL v-pred

    Fixes a small oversight I made.

commit 5206b93
Author: w-e-w <[email protected]>
Date:   Wed Oct 30 00:03:21 2024 +0900

    InputAccordion duplicate elem_id handling (AUTOMATIC1111#16381)

commit 5948143
Author: w-e-w <[email protected]>
Date:   Tue Oct 29 23:59:04 2024 +0900

    addEventListener {passive: false} (AUTOMATIC1111#16575)

commit f31faf6
Author: viking1304 <[email protected]>
Date:   Tue Oct 29 15:54:58 2024 +0100

    pyenv-win compatibility - another approach (AUTOMATIC1111#16287)

commit 14c6d6c
Author: w-e-w <[email protected]>
Date:   Tue Oct 29 23:45:45 2024 +0900

    Disable Hires checkpoint if same as First pass checkpoint (AUTOMATIC1111#16269)

commit 4ec10bc
Author: w-e-w <[email protected]>
Date:   Tue Oct 29 23:38:55 2024 +0900

    Fix postprocessing_enable_in_main_ui ScriptPostprocessing elem_id (AUTOMATIC1111#16373)

commit 0bf36cf
Author: w-e-w <[email protected]>
Date:   Tue Oct 29 23:35:46 2024 +0900

    extra_only / main_ui_only ScriptPostprocessing (AUTOMATIC1111#16374)

commit 820fe8d
Author: w-e-w <[email protected]>
Date:   Tue Oct 29 23:30:08 2024 +0900

    Allow newline in Extra Network activation text (AUTOMATIC1111#16428)

commit deb3803
Author: w-e-w <[email protected]>
Date:   Tue Oct 29 23:28:21 2024 +0900

    image embedding data cache (AUTOMATIC1111#16556)

commit 9568622
Author: w-e-w <[email protected]>
Date:   Tue Oct 29 20:16:15 2024 +0900

    limit number of simultaneous updates

    shared.opts.concurrent_git_fetch_limit

commit df74c3c
Author: Haoming <[email protected]>
Date:   Tue Oct 29 14:12:42 2024 +0800

    threading

commit d88a3c1
Merge: 38c8043 ee0ad5c
Author: w-e-w <[email protected]>
Date:   Sun Oct 27 10:28:23 2024 +0900

    Merge pull request AUTOMATIC1111#16588 from bluelovers/patch-3

    chore(js): avoid lots of `Wake Lock is not supported.`

commit 38c8043
Merge: 984b952 d8ad364
Author: w-e-w <[email protected]>
Date:   Sun Oct 27 01:09:41 2024 +0900

    Merge pull request AUTOMATIC1111#16523 from changeworld/fix/typo

    Fix typo: Github -> GitHub

commit ee0ad5c
Author: bluelovers <[email protected]>
Date:   Fri Oct 25 09:59:45 2024 +0800

    chore(js): avoid lots of `Wake Lock is not supported.`

commit 984b952
Author: w-e-w <[email protected]>
Date:   Thu Oct 24 22:05:51 2024 +0900

    Fix DAT models download (AUTOMATIC1111#16302)

commit 5865da2
Merge: bb1f391 c2ce1d3
Author: w-e-w <[email protected]>
Date:   Sun Oct 20 11:40:02 2024 +0900

    Merge pull request AUTOMATIC1111#16569 from AUTOMATIC1111/feat/ztsnr-auto

    Automatically enable ztSNR based on existence of key in `state_dict`

commit bb1f391
Author: w-e-w <[email protected]>
Date:   Sun Oct 20 09:58:53 2024 +0900

    clarify readme: weget ... chmod +x webui.sh (AUTOMATIC1111#16251)

commit 6a59766
Author: w-e-w <[email protected]>
Date:   Sun Oct 20 09:56:12 2024 +0900

    Add Skip Early CFG to XYZ (AUTOMATIC1111#16282)

    Co-authored-by: Yevhenii Hurin <[email protected]>

commit 65423d2
Author: w-e-w <[email protected]>
Date:   Sun Oct 20 09:52:47 2024 +0900

    MIME type text/css (AUTOMATIC1111#16406)

commit c2bc187
Author: w-e-w <[email protected]>
Date:   Sun Oct 20 09:51:59 2024 +0900

    fix modalImageViewer preview/result flicker (AUTOMATIC1111#16426)

commit d0b27dc
Merge: bb4cbaf cbaaf0a
Author: w-e-w <[email protected]>
Date:   Sun Oct 20 09:42:21 2024 +0900

    Merge pull request AUTOMATIC1111#16300 from hello2564/fix_NGMS_pr_typo

    fix NGMS pr typo

commit c2ce1d3
Author: catboxanon <[email protected]>
Date:   Sat Oct 19 19:58:13 2024 -0400

    Automatically enable ztSNR based on existence of key in state_dict

commit bb4cbaf
Merge: c462e5a 9677b09
Author: w-e-w <[email protected]>
Date:   Sun Oct 20 08:27:12 2024 +0900

    Merge pull request AUTOMATIC1111#16341 from gutris1/devv

    add break-word for geninfo in pnginfo

commit c462e5a
Merge: 8b19b75 c9a06d1
Author: catboxanon <[email protected]>
Date:   Sat Oct 19 10:51:16 2024 -0400

    Merge pull request AUTOMATIC1111#16460 from AUTOMATIC1111/sd-1.5-url

commit 8b19b75
Merge: 907bfb5 1ae073c
Author: AUTOMATIC1111 <[email protected]>
Date:   Sat Oct 19 17:40:56 2024 +0300

    Merge pull request AUTOMATIC1111#16567 from AUTOMATIC1111/feat/sdxl-vpred

    Support and automatically detect SDXL V-prediction models

commit 907bfb5
Author: AUTOMATIC1111 <[email protected]>
Date:   Sat Oct 19 17:33:58 2024 +0300

    add w-e-w and catboxanon to codeowners file

commit 1ae073c
Author: catboxanon <[email protected]>
Date:   Sat Oct 19 06:53:19 2024 -0400

    Support SDXL v-pred models

commit c9a06d1
Author: missionfloyd <[email protected]>
Date:   Tue Oct 8 16:50:39 2024 -0600

    Use stable-diffusion-v1-5 repo instead

commit d8ad364
Author: Takashi Takebayashi <[email protected]>
Date:   Thu Oct 3 14:33:37 2024 +0900

    Fix typo

    Github -> GitHub

commit f57ec2b
Author: missionfloyd <[email protected]>
Date:   Tue Sep 3 19:58:29 2024 -0600

    Update stable diffusion 1.5 URL

commit 9677b09
Author: gutris1 <[email protected]>
Date:   Wed Aug 7 17:37:23 2024 +0700

    add break-word for geninfo in pnginfo

commit cbaaf0a
Author: hello2564 <[email protected]>
Date:   Wed Jul 31 14:55:30 2024 +0800

    fix NGMS pr typo

commit 4823909
Merge: 850e149 82a973c
Author: AUTOMATIC1111 <[email protected]>
Date:   Sat Jul 27 15:50:26 2024 +0300

    Merge branch 'master' into dev

commit 850e149
Merge: 834297b 8e0881d
Author: AUTOMATIC1111 <[email protected]>
Date:   Sat Jul 27 15:47:49 2024 +0300

    Merge pull request AUTOMATIC1111#16275 from AUTOMATIC1111/fix-image-upscale-on-cpu

    fix image upscale on cpu

commit 8e0881d
Author: w-e-w <[email protected]>
Date:   Sat Jul 27 21:10:20 2024 +0900

    fix image upscale on cpu

    for some reason upscale using cpu will fail with
    RuntimeError: Inplace update to inference tensor outside InferenceMode
    switch from no_grad to inference_mode seems to have fixed it

commit 834297b
Merge: 9f5a98d c19d044
Author: AUTOMATIC1111 <[email protected]>
Date:   Sat Jul 27 07:09:08 2024 +0300

    Merge branch 'master' into dev
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants