mirror of
https://github.com/vladmandic/automatic
synced 2026-09-19 09:14:35 +02:00
add no-metadata
This commit is contained in:
+6
-4
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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; }
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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
Reference in New Issue
Block a user