add no-metadata

This commit is contained in:
Vladimir Mandic
2023-09-10 08:32:53 -04:00
parent 4898c0ffa7
commit 60df52f636
7 changed files with 20 additions and 24 deletions
+6 -4
View File
@@ -1,17 +1,19 @@
# Change Log for SD.Next
## Update for 2023-09-07
## Update for 2023-09-10
Mostly a service release
- tons of fixes
- new option **inference mode**
- default is standard `torch.no_grad`
new option is `torch.inference_only` which is slightly faster and uses less vram, but only works on some gpus
- updated gradio
- styles support for subfolders
- new cmdline param `--no-metadata`
skips reading metadata from models that are not already cached
- updated gradio
- styles support for subfolders
- clean-up logging
- capture system info in startup log
- better diagnostic output
- better diagnostic output
- capture extension output
- capture ldm output
- cleaner server restart
-9
View File
@@ -77,19 +77,16 @@ class LoraOnDisk:
self.filename = filename
self.metadata = {}
self.is_safetensors = os.path.splitext(filename)[1].lower() == ".safetensors"
if self.is_safetensors:
try:
self.metadata = sd_models.read_metadata_from_safetensors(filename)
except Exception as e:
errors.display(e, f"reading lora metadata: {filename}")
if self.metadata:
m = {}
for k, v in sorted(self.metadata.items(), key=lambda x: metadata_tags_order.get(x[0], 999)):
m[k] = v
self.metadata = m
self.ssmd_cover_images = self.metadata.pop('ssmd_cover_images', None) # those are cover images and they are too big to display in UI as text
self.alias = self.metadata.get('ss_output_name', self.name)
self.hash = None
@@ -442,19 +439,13 @@ def list_available_loras():
forbidden_lora_aliases.clear()
available_lora_hash_lookup.clear()
forbidden_lora_aliases.update({"none": 1, "Addams": 1})
os.makedirs(shared.cmd_opts.lora_dir, exist_ok=True)
for filename in sorted([*filter(extension_filter(['.PT', '.CKPT', '.SAFETENSORS']), directory_files(shared.cmd_opts.lora_dir))], key=str.lower):
name = os.path.splitext(os.path.basename(filename))[0]
entry = LoraOnDisk(name, filename)
available_loras[name] = entry
if entry.alias in available_lora_aliases:
forbidden_lora_aliases[entry.alias.lower()] = 1
available_lora_aliases[name] = entry
available_lora_aliases[entry.alias] = entry
@@ -13,13 +13,13 @@ class ExtraNetworksPageLora(ui_extra_networks.ExtraNetworksPage):
lora.list_available_loras()
def list_items(self):
for name, lora_on_disk in lora.available_loras.items():
path, _ext = os.path.splitext(lora_on_disk.filename)
alias = lora_on_disk.get_alias()
for name, l in lora.available_loras.items():
path, _ext = os.path.splitext(l.filename)
alias = l.get_alias()
prompt = f" <lora:{alias}:{shared.opts.extra_networks_default_multiplier}>"
prompt = json.dumps(prompt)
metadata = json.dumps(lora_on_disk.metadata, indent=4) if lora_on_disk.metadata else None
possible_tags = lora_on_disk.metadata.get('ss_tag_frequency', {}) if lora_on_disk.metadata is not None else {}
metadata = json.dumps(l.metadata, indent=4) if l.metadata else None
possible_tags = l.metadata.get('ss_tag_frequency', {}) if l.metadata is not None else {}
if isinstance(possible_tags, str):
possible_tags = {}
shared.log.debug(f'Lora has invalid metadata: {path}')
@@ -33,12 +33,12 @@ class ExtraNetworksPageLora(ui_extra_networks.ExtraNetworksPage):
yield {
"name": name,
"filename": path,
"fullname": lora_on_disk.filename,
"hash": lora_on_disk.shorthash,
"fullname": l.filename,
"hash": l.shorthash,
"preview": self.find_preview(path),
"description": self.find_description(path),
"info": self.find_info(path),
"search_term": self.search_terms_from_path(lora_on_disk.filename) + ' '.join(tags.keys()),
"search_term": self.search_terms_from_path(l.filename) + ' '.join(tags.keys()),
"prompt": prompt,
"local_preview": f"{path}.{shared.opts.samples_format}",
"metadata": metadata,
+2 -2
View File
@@ -19,7 +19,7 @@ div.gradio-html.min{ min-height: 0; }
.gradio-dropdown label span:not(.has-info), .gradio-textbox label span:not(.has-info), .gradio-number label span:not(.has-info) { margin-bottom: 0; }
.gradio-dropdown ul.options li.item { padding: 0.05em 0; }
.gradio-dropdown ul.options li.item:not(:has(.hide)) { background-color: var(--neutral-100); }
.gradio-dropdown ul.options { z-index: 3000; min-width: fit-content; max-width: inherit; max-height: 25vh !important; white-space: nowrap; }
.gradio-dropdown ul.options { z-index: 3000; min-width: fit-content; max-width: fit-content; max-height: 25vh !important; white-space: nowrap; }
.gradio-dropdown:not(.multiselect) .wrap-inner.wrap-inner.wrap-inner{ flex-wrap: unset; }
.gradio-dropdown.multiselect .token-remove.remove-all.remove-all{ display: flex; }
.gradio-dropdown.multiselect div.wrap-inner { overflow-x: hidden; overflow-y: auto; max-height: 50vh; overflow-wrap: anywhere; }
@@ -120,7 +120,7 @@ div#extras_scale_to_tab div.form{ flex-direction: row; }
#quicksettings > button { margin-left: -0.5em; }
#settings { display: flex; gap: var(--layout-gap); }
#settings div { border: none; justify-content: normal; gap: 0.5em; }
#settings div { border: none; gap: 0.5em; width: fit-content; }
#settings > div.tab-content { flex: 10 0 75%; display: grid; }
#settings > div.tab-content > div { border: none; padding: 0; }
+1
View File
@@ -36,6 +36,7 @@ group.add_argument("--tls-certfile", type=str, help="Enable TLS and specify cert
group.add_argument("--tls-selfsign", action="store_true", help="Enable TLS with self-signed certificates, default: %(default)s", default=None)
group.add_argument("--server-name", type=str, help="Sets hostname of server, default: %(default)s", default=None)
group.add_argument("--no-hashing", action='store_true', help="Disable hashing of checkpoints, default: %(default)s", default=False)
group.add_argument("--no-metadata", action='store_true', help="Disable reading of metadata from models, default: %(default)s", default=False)
group.add_argument("--no-download", action='store_true', help="Disable download of default model, default: %(default)s", default=False)
group.add_argument("--profile", action='store_true', help="Run profiler, default: %(default)s")
group.add_argument("--disable-queue", action='store_true', help="Disable queues, default: %(default)s")
+2
View File
@@ -321,6 +321,8 @@ def read_metadata_from_safetensors(filename):
if res is not None:
return res
res = {}
if shared.cmd_opts.no_metadata:
return {}
try:
t0 = time.time()
with open(filename, mode="rb") as file:
+1 -1
Submodule wiki updated: de31c082f8...c069991c32