From efbe364f7dc5073d2ad35ce510c7c364c5985941 Mon Sep 17 00:00:00 2001 From: Vladimir Mandic Date: Mon, 5 Jun 2023 14:25:57 -0400 Subject: [PATCH] js optimizations --- .eslintrc.json | 5 +- CHANGELOG.md | 16 +- cli/{hfsearch.py => hf-search.py} | 2 + cli/validate-locale.py | 31 ++ extensions-builtin/a1111-sd-webui-lycoris | 2 +- html/locale_en.json | 570 ++++++++++++++++++++++ installer.py | 9 +- javascript/aspectRatioOverlay.js | 4 +- javascript/contextMenus.js | 4 +- javascript/generationParams.js | 3 +- javascript/hires.js | 1 - javascript/imageMaskFix.js | 3 +- javascript/imageParams.js | 1 - javascript/imageviewer.js | 3 +- javascript/notification.js | 2 +- javascript/progressbar.js | 1 - javascript/script.js | 36 +- javascript/set-hints.js | 6 +- javascript/ui.js | 7 +- modules/cmd_args.py | 1 + modules/devices.py | 2 +- modules/extensions.py | 2 + modules/paths.py | 1 + modules/scripts.py | 27 +- modules/shared.py | 2 +- modules/ui.py | 14 +- modules/ui_extensions.py | 2 +- scripts/prompt_matrix.py | 2 +- scripts/xyz_grid.py | 2 +- webui.py | 6 +- 30 files changed, 697 insertions(+), 70 deletions(-) rename cli/{hfsearch.py => hf-search.py} (96%) mode change 100644 => 100755 create mode 100755 cli/validate-locale.py create mode 100755 html/locale_en.json diff --git a/.eslintrc.json b/.eslintrc.json index 2958fbc79..e34b2792c 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -51,13 +51,14 @@ "globals": { //script.js "gradioApp": "readonly", + "executeCallbacks": "readonly", + "onAfterUiUpdate": "readonly", + "onOptionsChanged": "readonly", "onUiLoaded": "readonly", "onUiUpdate": "readonly", - "onOptionsChanged": "readonly", "uiCurrentTab": "writable", "uiElementIsVisible": "readonly", "uiElementInSight": "readonly", - "executeCallbacks": "readonly", //ui.js "opts": "writable", "all_gallery_buttons": "readonly", diff --git a/CHANGELOG.md b/CHANGELOG.md index 8dd418e4b..5c62d2c26 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,12 +2,16 @@ ## Update for 06/03/2023 -- added extra networks to xyz grid options - now you can have more fun with all your loras :) -- new vae decode method to help with larger batch sizes, thanks @bigdog -- profiling of scripts/extensions callbacks -- additional exception handling so bad exception does not crash main app -- additional background removal models +- added extra networks to **xyz grid** options + now you can have more fun with all your embeddings and loras :) +- new **vae decode** method to help with larger batch sizes, thanks @bigdog +- new setting -> lora -> **use lycoris to handle all lora types** + this is still experimental, but the goal is to obsolete old built-in lora module + as it doesn't understand many new loras and built-in lyco module can handle it all +- optimize browser page loading +- profiling of scripts/extensions callbacks +- additional exception handling so bad exception does not crash main app +- additional background removal models ## Update for 06/02/2023 diff --git a/cli/hfsearch.py b/cli/hf-search.py old mode 100644 new mode 100755 similarity index 96% rename from cli/hfsearch.py rename to cli/hf-search.py index b0fc9040c..bbb4a4f0f --- a/cli/hfsearch.py +++ b/cli/hf-search.py @@ -1,3 +1,5 @@ +#!/usr/bin/env python + import sys import huggingface_hub as hf from rich import print # pylint: disable=redefined-builtin diff --git a/cli/validate-locale.py b/cli/validate-locale.py new file mode 100755 index 000000000..45841b7a3 --- /dev/null +++ b/cli/validate-locale.py @@ -0,0 +1,31 @@ +#!/usr/bin/env python + +import sys +import json +from rich import print # pylint: disable=redefined-builtin + +if __name__ == "__main__": + sys.argv.pop(0) + fn = sys.argv[0] if len(sys.argv) > 0 else 'locale_en.json' + with open(fn, 'r') as f: + data = json.load(f) + keys = [] + t_names = 0 + t_hints = 0 + for k in data.keys(): + print(f'Section: {k}') + names = len(data[k]) + t_names += names + print(f' Names: {names}') + hints = len([k for k in data[k] if k["hint"] != ""]) + t_hints += hints + print(f' Hints: {hints}') + print(f' Missing: {names - hints}') + for v in data[k]: + if v['text'] in keys: + print(f' Duplicate: {k}.{v["text"]}') + else: + keys.append(v['text']) + print(f'Total entries: {t_names}') + print(f'Total hints: {t_hints}') + print(f'Total missing: {t_names - t_hints}') diff --git a/extensions-builtin/a1111-sd-webui-lycoris b/extensions-builtin/a1111-sd-webui-lycoris index 21e9ea0f5..1e5db3921 160000 --- a/extensions-builtin/a1111-sd-webui-lycoris +++ b/extensions-builtin/a1111-sd-webui-lycoris @@ -1 +1 @@ -Subproject commit 21e9ea0f58dfdbee12b08389fd2cd1aa545e058d +Subproject commit 1e5db39210df4dd3bb6f3667d9e690c447939e71 diff --git a/html/locale_en.json b/html/locale_en.json new file mode 100755 index 000000000..448bb79a0 --- /dev/null +++ b/html/locale_en.json @@ -0,0 +1,570 @@ +{ "icons": [ + {"id":"","text":"📘","localized":"","hint":"Read generation parameters from prompt or last generation if prompt is empty into user interface"}, + {"id":"","text":"🚮","localized":"","hint":"Clear prompt"}, + {"id":"","text":"🌐","localized":"","hint":"Show/hide extra networks"}, + {"id":"","text":"🧳","localized":"","hint":"Apply selected styles to current prompt"}, + {"id":"","text":"🛅","localized":"","hint":"Save style"}, + {"id":"","text":"🔄","localized":"","hint":"Refresh"}, + {"id":"","text":"❌","localized":"","hint":"Close"}, + {"id":"","text":"📒","localized":"","hint":"Fill"}, + {"id":"","text":"🎲️","localized":"","hint":"Use random seed"}, + {"id":"","text":"♻️","localized":"","hint":"Reuse previous seed"}, + {"id":"","text":"⇅","localized":"","hint":"Switch values"} + ], + "prompts": [ + {"id":"","text":"Prompt","localized":"","hint":"Prompt"}, + {"id":"","text":"Negative prompt","localized":"","hint":"Negative Prompt"} + ], + "tabs": [ + {"id":"","text":"From Text ","localized":"","hint":"Create image from text"}, + {"id":"","text":"From Image ","localized":"","hint":"Create image from image"}, + {"id":"","text":"Process Image ","localized":"","hint":"Process existing image"}, + {"id":"","text":"Train ","localized":"","hint":"Run training or model merging"}, + {"id":"","text":"Settings ","localized":"","hint":"Application settings"}, + {"id":"","text":"Extensions ","localized":"","hint":"Application extensions"} + ], + "action panel": [ + {"id":"","text":"Generate","localized":"","hint":"Start processing"}, + {"id":"","text":"Stop","localized":"","hint":"Stop processing"}, + {"id":"","text":"Skip","localized":"","hint":"Stop processing current job and continue processing"}, + {"id":"","text":"Pause","localized":"","hint":"Pause processing"}, + {"id":"","text":"Interrogate\nCLIP","localized":"","hint":"Run interrogate using CLIP model"}, + {"id":"","text":"Interrogate\nDeepBooru","localized":"","hint":"Run interrogate using DeepBooru model"} + ], + "extra networks": [ + {"id":"","text":"Save preview","localized":"","hint":"Save current image as extra network preview"}, + {"id":"","text":"Save description","localized":"","hint":"Save current text as extra network description"}, + {"id":"","text":"Read description","localized":"","hint":"Read stored extra network description"} + ], + "gallery buttons": [ + {"id":"","text":"show","localized":"","hint":"Show image location"}, + {"id":"","text":"save","localized":"","hint":"Save image"}, + {"id":"","text":"zip","localized":"","hint":"Create zip archive from images"}, + {"id":"","text":"delete","localized":"","hint":"Delete image"}, + {"id":"","text":"➠ text","localized":"","hint":"Transfer image to text interface"}, + {"id":"","text":"➠ image","localized":"","hint":"Transfer image to image interface"}, + {"id":"","text":"➠ inpaint","localized":"","hint":"Transfer image to inpaint interface"}, + {"id":"","text":"➠ sketch","localized":"","hint":"Transfer image to sketch interface"}, + {"id":"","text":"➠ inpaint sketch","localized":"","hint":"Transfer image to inpaint sketch interface"}, + {"id":"","text":"➠ process","localized":"","hint":"Transfer image to process interface"} + ], + "extensions": [ + {"id":"","text":"Install","localized":"","hint":""}, + {"id":"","text":"Search","localized":"","hint":""}, + {"id":"","text":"Sort by","localized":"","hint":""}, + {"id":"","text":"Manage Extensions ","localized":"","hint":""}, + {"id":"","text":"Manual install ","localized":"","hint":""}, + {"id":"","text":"Extension GIT repository URL","localized":"","hint":""}, + {"id":"","text":"Specific branch name","localized":"","hint":""}, + {"id":"","text":"Local directory name","localized":"","hint":""}, + {"id":"","text":"Refresh extension list","localized":"","hint":""}, + {"id":"","text":"Update installed extensions","localized":"","hint":""}, + {"id":"","text":"Apply changes & restart server","localized":"","hint":""} + ], + "txt2img tab": [ + {"id":"","text":"Sampling method","localized":"","hint":"Which algorithm to use to produce the image"}, + {"id":"","text":"Sampling steps","localized":"","hint":"How many times to improve the generated image iteratively; higher values take longer; very low values can produce bad results"}, + {"id":"","text":"Restore faces","localized":"","hint":""}, + {"id":"","text":"Tiling","localized":"","hint":"Produce an image that can be tiled"}, + {"id":"","text":"Hires fix","localized":"","hint":""}, + {"id":"","text":"Denoising strength","localized":"","hint":"Determines how little respect the algorithm should have for image's content. At 0, nothing will change, and at 1 you'll get an unrelated image. With values below 1.0, processing will take less steps than the Sampling Steps slider specifies"}, + {"id":"","text":"Hires steps","localized":"","hint":"Number of sampling steps for upscaled picture. If 0, uses same as for original"}, + {"id":"","text":"Upscaler","localized":"","hint":""}, + {"id":"","text":"Upscale by","localized":"","hint":"Adjusts the size of the image by multiplying the original width and height by the selected value. Ignored if either Resize width to or Resize height to are non-zero"}, + {"id":"","text":"Resize width to","localized":"","hint":"Resizes image to this width. If 0, width is inferred from either of two nearby sliders"}, + {"id":"","text":"Resize height to","localized":"","hint":"Resizes image to this height. If 0, height is inferred from either of two nearby sliders"}, + {"id":"","text":"Width","localized":"","hint":""}, + {"id":"","text":"Height","localized":"","hint":""}, + {"id":"","text":"Batch count","localized":"","hint":"How many batches of images to create (has no impact on generation performance or VRAM usage)"}, + {"id":"","text":"Batch size","localized":"","hint":"How many image to create in a single batch (increases generation performance at cost of higher VRAM usage)"}, + {"id":"","text":"CFG Scale","localized":"","hint":"Classifier Free Guidance Scale - how strongly the image should conform to prompt - lower values produce more creative results"}, + {"id":"","text":"CLIP skip","localized":"","hint":""}, + {"id":"","text":"Seed","localized":"","hint":"A value that determines the output of random number generator - if you create an image with same parameters and seed as another image, you'll get the same result"}, + {"id":"","text":"Extra","localized":"","hint":""}, + {"id":"","text":"Variation seed","localized":"","hint":"Seed of a different picture to be mixed into the generation"}, + {"id":"","text":"Variation strength","localized":"","hint":"How strong of a variation to produce. At 0, there will be no effect. At 1, you will get the complete picture with variation seed (except for ancestral samplers, where you will just get something)"}, + {"id":"","text":"Resize seed from width","localized":"","hint":"Make an attempt to produce a picture similar to what would have been produced with same seed at specified resolution"}, + {"id":"","text":"Resize seed from height","localized":"","hint":"Make an attempt to produce a picture similar to what would have been produced with same seed at specified resolution"}, + {"id":"","text":"Override settings","localized":"","hint":""} + ], + "process tab": [ + {"id":"","text":"Single Image ","localized":"","hint":""}, + {"id":"","text":"Process Batch ","localized":"","hint":""}, + {"id":"","text":"Process Folder ","localized":"","hint":""}, + {"id":"","text":"Scale by ","localized":"","hint":""}, + {"id":"","text":"Scale to ","localized":"","hint":""}, + {"id":"","text":"Input directory","localized":"","hint":""}, + {"id":"","text":"Output directory","localized":"","hint":""}, + {"id":"","text":"Show result images","localized":"","hint":""}, + {"id":"","text":"Resize","localized":"","hint":""}, + {"id":"","text":"Crop to fit","localized":"","hint":""}, + {"id":"","text":"Secondary Upscaler","localized":"","hint":""}, + {"id":"","text":"Upscaler 2 visibility","localized":"","hint":""}, + {"id":"","text":"GFPGAN visibility","localized":"","hint":""}, + {"id":"","text":"CodeFormer visibility","localized":"","hint":""}, + {"id":"","text":"CodeFormer weight (0 = max), 1 = min)","localized":"","hint":""} + ], + "settings menu": [ + {"id":"settings_submit","text":"Apply settings","localized":"","hint":""}, + {"id":"restart_submit","text":"Restart server","localized":"","hint":""}, + {"id":"shutdown_submit","text":"Shutdown server","localized":"","hint":""}, + {"id":"settings_preview_theme","text":"Preview theme","localized":"","hint":""}, + {"id":"defaults_submit","text":"Restore defaults","localized":"","hint":""}, + {"id":"sett_unload_sd_model","text":"Unload checkpoint","localized":"","hint":""}, + {"id":"sett_reload_sd_model","text":"Reload checkpoint","localized":"","hint":""} + ], + "settings sections": [ + {"id":"","text":"Stable Diffusion ","localized":"","hint":""}, + {"id":"","text":"Compute Settings ","localized":"","hint":""}, + {"id":"","text":"System Paths ","localized":"","hint":""}, + {"id":"","text":"Image Options ","localized":"","hint":""}, + {"id":"","text":"Image Processing ","localized":"","hint":""}, + {"id":"","text":"Output Paths ","localized":"","hint":""}, + {"id":"","text":"User interface ","localized":"","hint":""}, + {"id":"","text":"Live previews ","localized":"","hint":""}, + {"id":"","text":"Sampler Settings ","localized":"","hint":""}, + {"id":"","text":"Postprocessing ","localized":"","hint":""}, + {"id":"","text":"Training ","localized":"","hint":""}, + {"id":"","text":"Interrogate ","localized":"","hint":""}, + {"id":"","text":"Upscaling ","localized":"","hint":""}, + {"id":"","text":"Lora ","localized":"","hint":""}, + {"id":"","text":"Face restoration ","localized":"","hint":""}, + {"id":"","text":"Extra Networks ","localized":"","hint":""}, + {"id":"","text":"Token Merging ","localized":"","hint":""}, + {"id":"","text":"Licenses ","localized":"","hint":""}, + {"id":"","text":"Show all pages","localized":"","hint":""}, + {"id":"","text":"Request browser notifications","localized":"","hint":""} + ], + "img2img tabs": [ + {"id":"","text":"Image ","localized":"","hint":""}, + {"id":"","text":"Sketch ","localized":"","hint":""}, + {"id":"","text":"Inpaint ","localized":"","hint":""}, + {"id":"","text":"Inpaint sketch ","localized":"","hint":""}, + {"id":"","text":"Inpaint upload ","localized":"","hint":""}, + {"id":"","text":"Batch ","localized":"","hint":""} + ], + "img2img tab": [ + {"id":"","text":"Inpaint Batch input directory","localized":"","hint":""}, + {"id":"","text":"Inpaint Batch output directory","localized":"","hint":""}, + {"id":"","text":"Inpaint batch mask directory","localized":"","hint":""}, + {"id":"","text":"Resize fixed","localized":"","hint":"Resize image to target resolution. Unless height and width match, you will get incorrect aspect ratio"}, + {"id":"","text":"Crop and resize","localized":"","hint":"Resize the image so that entirety of target resolution is filled with the image. Crop parts that stick out"}, + {"id":"","text":"Resize and fill","localized":"","hint":"Resize the image so that entirety of image is inside target resolution. Fill empty space with image's colors"}, + {"id":"","text":"Resize using Latent upscale","localized":"","hint":""}, + {"id":"","text":"Mask blur","localized":"","hint":"How much to blur the mask before processing, in pixels"}, + {"id":"","text":"Mask transparency","localized":"","hint":""}, + {"id":"","text":"Inpaint masked","localized":"","hint":""}, + {"id":"","text":"Inpaint not masked","localized":"","hint":""}, + {"id":"","text":"fill","localized":"","hint":"fill it with colors of the image"}, + {"id":"","text":"original","localized":"","hint":"keep whatever was there originally"}, + {"id":"","text":"latent noise","localized":"","hint":"fill it with latent space noise"}, + {"id":"","text":"latent nothing","localized":"","hint":"fill it with latent space zeroes"}, + {"id":"","text":"Whole picture","localized":"","hint":""}, + {"id":"","text":"Only masked","localized":"","hint":""}, + {"id":"","text":"Only masked padding, pixels","localized":"","hint":""}, + {"id":"","text":"Scale","localized":"","hint":""}, + {"id":"","text":"Unused","localized":"","hint":""}, + {"id":"","text":"Image CFG Scale","localized":"","hint":""} + ], + "train tabs": [ + {"id":"","text":"Merge models ","localized":"","hint":""}, + {"id":"","text":"Create embedding ","localized":"","hint":""}, + {"id":"","text":"Create hypernetwork ","localized":"","hint":""}, + {"id":"","text":"Preprocess images ","localized":"","hint":""}, + {"id":"","text":"Merge","localized":"","hint":""}, + {"id":"","text":"Calculate hash for all models (may take a long time)","localized":"","hint":""}, + {"id":"","text":"Create embedding","localized":"","hint":""}, + {"id":"","text":"Create hypernetwork","localized":"","hint":""}, + {"id":"","text":"Preprocess","localized":"","hint":""}, + {"id":"","text":"Train Embedding","localized":"","hint":""}, + {"id":"","text":"Train Hypernetwork","localized":"","hint":""} + ], + "train tab": [ + {"id":"","text":"Primary model","localized":"","hint":""}, + {"id":"","text":"Secondary model","localized":"","hint":""}, + {"id":"","text":"Tertiary model","localized":"","hint":""}, + {"id":"","text":"New model name","localized":"","hint":""}, + {"id":"","text":"No interpolation","localized":"","hint":"Result = A"}, + {"id":"","text":"Weighted sum","localized":"","hint":"Result = A * (1 - M) + B * M"}, + {"id":"","text":"Add difference","localized":"","hint":"Result = A + (B - C) * M"}, + {"id":"","text":"Interpolation ratio from Primary to Secondary","localized":"","hint":""}, + {"id":"","text":"ckpt","localized":"","hint":""}, + {"id":"","text":"safetensors","localized":"","hint":""}, + {"id":"","text":"Use FP16","localized":"","hint":""}, + {"id":"","text":"Save metadata","localized":"","hint":""}, + {"id":"","text":"Primary","localized":"","hint":""}, + {"id":"","text":"Secondary","localized":"","hint":""}, + {"id":"","text":"Tertiary","localized":"","hint":""}, + {"id":"","text":"Bake in VAE","localized":"","hint":""}, + {"id":"","text":"Discard weights with matching name","localized":"","hint":"Regular expression; if weights's name matches it, the weights is not written to the resulting checkpoint. Use ^model_ema to discard EMA weights"}, + {"id":"","text":"Name","localized":"","hint":""}, + {"id":"","text":"Initialization text","localized":"","hint":"If the number of tokens is more than the number of vectors, some may be skipped.\nLeave the textbox empty to start with zeroed out vectors"}, + {"id":"","text":"Number of vectors per token","localized":"","hint":""}, + {"id":"","text":"Overwrite Old Embedding","localized":"","hint":""}, + {"id":"","text":"Enter hypernetwork layer structure","localized":"","hint":""}, + {"id":"","text":"Select activation function of hypernetwork. Recommended : Swish / Linear(none)","localized":"","hint":""}, + {"id":"","text":"Select Layer weights initialization. Recommended: Kaiming for relu-like, Xavier for sigmoid-like, Normal otherwise","localized":"","hint":""}, + {"id":"","text":"Add layer normalization","localized":"","hint":""}, + {"id":"","text":"Use dropout","localized":"","hint":""}, + {"id":"","text":"Enter hypernetwork Dropout structure (or empty). Recommended : 0~0.35 incrementing sequence: 0, 0.05, 0.15","localized":"","hint":""}, + {"id":"","text":"Overwrite Old Hypernetwork","localized":"","hint":""}, + {"id":"","text":"Source directory","localized":"","hint":""}, + {"id":"","text":"Destination directory","localized":"","hint":""}, + {"id":"","text":"Existing Caption txt Action","localized":"","hint":""}, + {"id":"","text":"Keep original size","localized":"","hint":""}, + {"id":"","text":"Keep original image channels","localized":"","hint":""}, + {"id":"","text":"Create flipped copies","localized":"","hint":""}, + {"id":"","text":"Split oversized images","localized":"","hint":""}, + {"id":"","text":"Auto focal point crop","localized":"","hint":""}, + {"id":"","text":"Auto-sized crop","localized":"","hint":""}, + {"id":"","text":"Create captions only","localized":"","hint":""}, + {"id":"","text":"Create BLIP captions","localized":"","hint":""}, + {"id":"","text":"Create Deepbooru captions","localized":"","hint":""}, + {"id":"","text":"Split image threshold","localized":"","hint":""}, + {"id":"","text":"Split image overlap ratio","localized":"","hint":""}, + {"id":"","text":"Focal point face weight","localized":"","hint":""}, + {"id":"","text":"Focal point entropy weight","localized":"","hint":""}, + {"id":"","text":"Focal point edges weight","localized":"","hint":""}, + {"id":"","text":"Create debug image","localized":"","hint":""}, + {"id":"","text":"Dimension lower bound","localized":"","hint":""}, + {"id":"","text":"Dimension upper bound","localized":"","hint":""}, + {"id":"","text":"Area lower bound","localized":"","hint":""}, + {"id":"","text":"Area upper bound","localized":"","hint":""}, + {"id":"","text":"Maximize area","localized":"","hint":""}, + {"id":"","text":"Minimize error","localized":"","hint":""}, + {"id":"","text":"Error threshold","localized":"","hint":""}, + {"id":"","text":"Embedding","localized":"","hint":""}, + {"id":"","text":"Hypernetwork","localized":"","hint":""}, + {"id":"","text":"Embedding Learning rate","localized":"","hint":""}, + {"id":"","text":"Hypernetwork Learning rate","localized":"","hint":""}, + {"id":"","text":"Gradient Clipping","localized":"","hint":""}, + {"id":"","text":"Gradient accumulation steps","localized":"","hint":""}, + {"id":"","text":"Dataset directory","localized":"","hint":""}, + {"id":"","text":"Log directory","localized":"","hint":""}, + {"id":"","text":"Prompt template","localized":"","hint":""}, + {"id":"","text":"Do not resize images","localized":"","hint":""}, + {"id":"","text":"Max steps","localized":"","hint":""}, + {"id":"","text":"Save an image to log directory every N steps, 0 to disable","localized":"","hint":""}, + {"id":"","text":"Save a copy of embedding to log directory every N steps, 0 to disable","localized":"","hint":""}, + {"id":"","text":"Use PNG alpha channel as loss weight","localized":"","hint":""}, + {"id":"","text":"Save images with embedding in PNG chunks","localized":"","hint":""}, + {"id":"","text":"Read parameters (prompt, etc...) from txt2img tab when making previews","localized":"","hint":""}, + {"id":"","text":"Shuffle tags by ',' when creating prompts","localized":"","hint":""}, + {"id":"","text":"Drop out tags when creating prompts","localized":"","hint":""}, + {"id":"","text":"once","localized":"","hint":""}, + {"id":"","text":"deterministic","localized":"","hint":""}, + {"id":"","text":"random","localized":"","hint":""} + ], + "settings": [ + {"id":"","text":"Number of cached model checkpoints","localized":"","hint":""}, + {"id":"","text":"Number of cached VAE checkpoints","localized":"","hint":""}, + {"id":"","text":"Select VAE","localized":"","hint":""}, + {"id":"","text":"Enable splitting of hires batch processing","localized":"","hint":""}, + {"id":"","text":"When loading models attempt stream loading optimized for slow or network storage","localized":"","hint":""}, + {"id":"","text":"When loading models attempt to reuse previous model dictionary","localized":"","hint":""}, + {"id":"","text":"Disable cross-attention layer optimization","localized":"","hint":""}, + {"id":"","text":"xFormers","localized":"","hint":""}, + {"id":"","text":"Scaled-Dot-Product","localized":"","hint":""}, + {"id":"","text":"Doggettx's","localized":"","hint":""}, + {"id":"","text":"InvokeAI's","localized":"","hint":""}, + {"id":"","text":"Sub-quadratic","localized":"","hint":""}, + {"id":"","text":"Split attention","localized":"","hint":""}, + {"id":"","text":"xFormers enable flash Attention","localized":"","hint":""}, + {"id":"","text":"SDP disable memory attention","localized":"","hint":""}, + {"id":"","text":"Sub-quadratic cross-attention query chunk size","localized":"","hint":""}, + {"id":"","text":"Sub-quadratic cross-attention kv chunk size","localized":"","hint":""}, + {"id":"","text":"Sub-quadratic cross-attention chunking threshold","localized":"","hint":""}, + {"id":"","text":"Full parser","localized":"","hint":""}, + {"id":"","text":"Compel parser","localized":"","hint":""}, + {"id":"","text":"A1111 parser","localized":"","hint":""}, + {"id":"","text":"Fixed attention","localized":"","hint":""}, + {"id":"","text":"Prompt attention mean normalization","localized":"","hint":""}, + {"id":"","text":"Disable conditional batching enabled on low memory systems","localized":"","hint":""}, + {"id":"","text":"Enable samplers quantization for sharper and cleaner results","localized":"","hint":""}, + {"id":"","text":"Increase coherency by padding from the last comma within n tokens when using more than 75 tokens","localized":"","hint":""}, + {"id":"","text":"Original","localized":"","hint":""}, + {"id":"","text":"Diffusers","localized":"","hint":""}, + {"id":"","text":"VRAM usage polls per second during generation","localized":"","hint":""}, + {"id":"","text":"Autocast","localized":"","hint":""}, + {"id":"","text":"Full","localized":"","hint":""}, + {"id":"","text":"FP32","localized":"","hint":""}, + {"id":"","text":"FP16","localized":"","hint":""}, + {"id":"","text":"BF16","localized":"","hint":""}, + {"id":"","text":"Use full precision for model (--no-half)","localized":"","hint":""}, + {"id":"","text":"Use full precision for VAE (--no-half-vae)","localized":"","hint":""}, + {"id":"","text":"Enable upcast sampling","localized":"","hint":""}, + {"id":"","text":"Enable upcast cross attention layer","localized":"","hint":""}, + {"id":"","text":"Disable NaN check in produced images/latent spaces","localized":"","hint":""}, + {"id":"","text":"Attempt to roll back VAE when produced NaN values, requires NaN check (experimental)","localized":"","hint":""}, + {"id":"","text":"Use channels last as torch memory format ","localized":"","hint":""}, + {"id":"","text":"Enable full-depth cuDNN benchmark feature","localized":"","hint":""}, + {"id":"","text":"Allow TF32 math ops","localized":"","hint":""}, + {"id":"","text":"Allow TF16 reduced precision math ops","localized":"","hint":""}, + {"id":"","text":"Enable model compile (experimental)","localized":"","hint":""}, + {"id":"","text":"inductor","localized":"","hint":""}, + {"id":"","text":"cudagraphs","localized":"","hint":""}, + {"id":"","text":"aot_ts_nvfuser","localized":"","hint":""}, + {"id":"","text":"hidet","localized":"","hint":""}, + {"id":"","text":"ipex","localized":"","hint":""}, + {"id":"","text":"Model compile verbose mode","localized":"","hint":""}, + {"id":"","text":"Model compile suppress errors","localized":"","hint":""}, + {"id":"","text":"Disable Torch memory garbage collection (experimental)","localized":"","hint":""}, + {"id":"","text":"Directory for temporary images; leave empty for default","localized":"","hint":""}, + {"id":"","text":"Cleanup non-default temporary directory when starting webui","localized":"","hint":""}, + {"id":"","text":"Path to directory with stable diffusion checkpoints","localized":"","hint":""}, + {"id":"","text":"Path to directory with stable diffusion diffusers","localized":"","hint":""}, + {"id":"","text":"Path to directory with VAE files","localized":"","hint":""}, + {"id":"","text":"Embeddings directory for textual inversion","localized":"","hint":""}, + {"id":"","text":"Hypernetwork directory","localized":"","hint":""}, + {"id":"","text":"Path to directory with codeformer model file(s)","localized":"","hint":""}, + {"id":"","text":"Path to directory with GFPGAN model file(s)","localized":"","hint":""}, + {"id":"","text":"Path to directory with ESRGAN model file(s)","localized":"","hint":""}, + {"id":"","text":"Path to directory with BSRGAN model file(s)","localized":"","hint":""}, + {"id":"","text":"Path to directory with RealESRGAN model file(s)","localized":"","hint":""}, + {"id":"","text":"Path to directory with ScuNET model file(s)","localized":"","hint":""}, + {"id":"","text":"Path to directory with SwinIR model file(s)","localized":"","hint":""}, + {"id":"","text":"Path to directory with LDSR model file(s)","localized":"","hint":""}, + {"id":"","text":"Path to directory with CLIP model file(s)","localized":"","hint":""}, + {"id":"","text":"Path to directory with Lora network(s)","localized":"","hint":""}, + {"id":"","text":"Path to directory with LyCORIS network(s)","localized":"","hint":""}, + {"id":"","text":"Path to user-defined styles file","localized":"","hint":""}, + {"id":"","text":"Always save all generated images","localized":"","hint":""}, + {"id":"","text":"File format for generated images","localized":"","hint":""}, + {"id":"","text":"Images filename pattern","localized":"","hint":"Use following tags to define how filenames for images are chosen: [steps], [cfg], [prompt_hash], [prompt], [prompt_no_styles], [prompt_spaces], [width], [height], [styles], [sampler], [seed], [model_hash], [model_name], [prompt_words], [date], [datetime], [datetime], [datetime