diff --git a/data/previews.json b/data/previews.json index 187ea71c1..4f70c4922 100644 --- a/data/previews.json +++ b/data/previews.json @@ -30,7 +30,7 @@ "THUDM--CogVideoX-5b": "THUDM--CogView3-Plus-3B.jpg", "vladmandic--Anima-1.0-Base-Merge-sdnq-hadamard-uint4": "vladmandic--Anima-1.0-Base.jpg", "vladmandic--Anima-1.0-Base-sdnq-svd-dynamic-uint4": "vladmandic--Anima-1.0-Base.jpg", - "vladmandic--Anima-1.0-Turbo-sdnq-svd-dynamic-uint4": "vladmandic--Anima-1.0-Turbo-sdnq-svd-dynamic-uint4.jpg", + "vladmandic--Anima-1.0-Turbo": "vladmandic--Anima-1.0-Turbo-sdnq-svd-dynamic-uint4.jpg", "vladmandic--Flux.2-Klein-9B-KV-sdnq-hadamard-uint4": "black-forest-labs--FLUX.2-klein-9b-kv.jpg", "vladmandic--Flux.2-Klein-9B-KV-Merge-sdnq-hadamard-uint4": "black-forest-labs--FLUX.2-klein-9b-kv.jpg", "vladmandic--Krea-2-Base-sdnq-hadamard-uint4": "CalamitousFelicitousness--Krea-2-Base-Diffusers.jpg", @@ -40,5 +40,7 @@ "vladmandic--Qwen-Lightning": "Qwen-Lightning.jpg", "Wan-AI--Wan2.1-T2V-14B-Diffusers": "Wan-AI--Wan2.1-T2V-14B-Diffusers.jpg", "Wan-AI--Wan2.2-T2V-A14B-Diffusers": "Wan-AI--Wan2.2-T2V-A14B-Diffusers.jpg", - "OzzyGT--MiniMax_H3_sdnq_dynamic_4bit": "MiniMaxAI--MiniMax-H3.jpg" + "OzzyGT--MiniMax_H3_sdnq_dynamic_4bit": "MiniMaxAI--MiniMax-H3.jpg", + "OzzyGT--MiniMax_H3_sdnq_dynamic_8bit": "MiniMaxAI--MiniMax-H3.jpg", + "OzzyGT--MiniMax_H3_sdnq_8bit_pruned": "OzzyGT--MiniMax_H3_sdnq_4bit_pruned.jpg" } diff --git a/extensions-builtin/sdnext-kanvas b/extensions-builtin/sdnext-kanvas index e55743904..22b431b9c 160000 --- a/extensions-builtin/sdnext-kanvas +++ b/extensions-builtin/sdnext-kanvas @@ -1 +1 @@ -Subproject commit e5574390433e2311b399dc90ab9d2ae259961c8c +Subproject commit 22b431b9cbb6e46ddc73da3d5975124b3dea3d65 diff --git a/modules/lora/network.py b/modules/lora/network.py index 5f23407ca..9194ed155 100644 --- a/modules/lora/network.py +++ b/modules/lora/network.py @@ -1,5 +1,6 @@ import os import enum +import json from collections import namedtuple import torch from modules import hashes, shared, sd_checkpoint @@ -53,14 +54,14 @@ class NetworkOnDisk: def detect_version(self): base = str(self.metadata.get('ss_base_model_version', "")).lower() - arch = str(self.metadata.get('modelspec.architecture', "")).lower() + # base.startswith("sd_1.5") # ostris/ai-toolkit uses this nearly-always and its wrong if base.startswith("sd_v1"): return 'sd1' if base.startswith("sdxl"): return 'xl' if base.startswith("stable_cascade"): return 'sc' - if base.startswith("sd3"): + if base.startswith("sd3") or base.startswith("3-5-"): return 'sd3' if base.startswith("flux2") or "klein" in base: return 'f2' @@ -81,10 +82,15 @@ class NetworkOnDisk: if base.startswith('minimax'): return 'minimax' + arch = str(self.metadata.get('modelspec.architecture', "")).lower() if arch.startswith("stable-diffusion-v1"): return 'sd1' if arch.startswith("stable-diffusion-xl"): return 'xl' + if arch.startswith("stable-diffusion-2") or arch.startswith("stable-diffusion-v2"): + return 'sd2' + if arch.startswith("stable-diffusion-3") or arch.startswith("stable-diffusion-v3"): + return 'sd3' if arch.startswith("stable-cascade"): return 'sc' if arch.startswith("flux2") or arch.startswith("flux-2") or ("klein" in arch): @@ -101,11 +107,22 @@ class NetworkOnDisk: return 'anima' if arch.startswith('krea2'): return 'krea2' + if arch.startswith('pixart-sigma'): + return 'pixart-sigma' - if "v1-5" in str(self.metadata.get('ss_sd_model_name', "")): + metadata = json.dumps(self.metadata).lower() + if 'z-image' in metadata: + return 'zimage' + if 'v1-5' in metadata: return 'sd1' + if 'stable-diffusion-2-1' in metadata: + return 'sd2' + if 'minimax-h3' in metadata: + return 'minimax' + if str(self.metadata.get('ss_v2', "")) == "True": return 'sd2' + if 'klein' in self.name.lower() or ('klein' in self.fullname.lower()): return 'f2' if 'flux' in self.name.lower(): @@ -116,6 +133,12 @@ class NetworkOnDisk: return 'chroma' if 'anima' in self.name.lower(): return 'anima' + if 'qwen' in self.name.lower(): + return 'qwen' + if 'wan' in self.name.lower(): + return 'wan' + if 'minimax' in self.name.lower(): + return 'minimax' return '' diff --git a/modules/ui_extra_networks.py b/modules/ui_extra_networks.py index 09f1f3356..40c27d945 100644 --- a/modules/ui_extra_networks.py +++ b/modules/ui_extra_networks.py @@ -26,7 +26,6 @@ allowed_dirs = [] refresh_time = 0 extra_pages = shared.extra_networks debug = log.trace if os.environ.get('SD_EN_DEBUG', None) is not None else lambda *args, **kwargs: None -debug('Trace: EN') card_empty = '
' card_full = ''' diff --git a/modules/ui_extra_networks_checkpoints.py b/modules/ui_extra_networks_checkpoints.py index a7db53fbc..5ff806d7a 100644 --- a/modules/ui_extra_networks_checkpoints.py +++ b/modules/ui_extra_networks_checkpoints.py @@ -23,8 +23,6 @@ version_map = { "StableDiffusionXL": "SD XL", "WanToVideo": "Wan", "WanVACE": "Wan", - "ZImage": "Z-Image", - "Z-Image": "Z-Image", "Glm": "GLM-Image", "Krea2": "Krea 2", "AnimaTextTo": "Anima", @@ -34,6 +32,9 @@ version_map = { "Flux2KleinKV": "Flux 2 Klein", "MiniMaxH3": "MiniMax H3", "MiniMax_H3": "MiniMax H3", + "ZImageTurbo": "Z-Image", + "ZImage": "Z-Image", + "Z": "Z-Image", } class ExtraNetworksPageCheckpoints(ui_extra_networks.ExtraNetworksPage): diff --git a/modules/ui_extra_networks_lora.py b/modules/ui_extra_networks_lora.py index 0052217e6..2a71bbd03 100644 --- a/modules/ui_extra_networks_lora.py +++ b/modules/ui_extra_networks_lora.py @@ -1,4 +1,5 @@ import os +import re import json import concurrent.futures from modules import shared, ui_extra_networks, modelstats @@ -77,17 +78,30 @@ class ExtraNetworksPageLora(ui_extra_networks.ExtraNetworksPage): return clean_tags _VERSION_DISPLAY = { - 'f1': 'Flux', 'sd1': 'SD 1.5', 'sd2': 'SD 2', 'xl': 'SDXL', - 'sd3': 'SD3', 'sc': 'Cascade', 'hv': 'HunyuanVideo', - 'chroma': 'Chroma', 'zimage': 'zImage', 'qwen': 'Qwen', + 'f1': 'Flux 1', 'flux.1 d': 'Flux 1', + 'f2': 'Flux 2', + 'sd1': 'SD 1.5', + 'sd2': 'SD 2', + 'sd3': 'SD 3', + 'xl': 'SDXL', + 'sc': 'Cascade', + 'hv': 'Hunyuan Video', + 'chroma': 'Chroma', + 'qwen': 'Qwen', 'krea2': 'Krea 2', + 'wan': 'Wan', + 'minimax': 'MiniMax H3', + 'pixart-sigma': 'Pixart Sigma', + 'wan video 2.2 a14b': 'Wan Video A14B', 'wan video 14b': 'Wan Video A14B', + 'zimage': 'Z-Image', 'zimagebase': 'Z-Image', 'zimageturbo': 'Z-Image', + 'other': '' } def cleanup_version(self, dct, lora): ver = dct.get("baseModel", lora.sd_version) - ver = self._VERSION_DISPLAY.get(ver, ver) - for suffix in (' 0.9', ' 1.0'): # strip uninformative minor versions - ver = ver.replace(suffix, '') + for suffix in ('0.9', '1.0', '768', 'lightning', 'hyper', 'turbo', 'i2v', 't2v-', 't2v', '720p'): # strip uninformative minor versions + ver = re.sub(suffix, '', ver, flags=re.IGNORECASE).strip() + ver = self._VERSION_DISPLAY.get(ver.lower(), ver) return ver def create_item(self, name): diff --git a/scripts/dlss_ext.py b/scripts/dlss_ext.py index bc042d6b1..b59ca501b 100644 --- a/scripts/dlss_ext.py +++ b/scripts/dlss_ext.py @@ -99,7 +99,6 @@ def install(): def verify(pkg_path): - log.info(f'DLSS verify: path="{pkg_path}"') if not os.path.exists(pkg_path) or not os.path.isdir(pkg_path): log.error(f'DLSS: path="{pkg_path}" not found') return { 'error': 'package path not found' } @@ -108,7 +107,7 @@ def verify(pkg_path): response = c.controller.call(pkg_path, 'verify', { 'gpu_uuid': 'auto', 'options': { 'level': 'deep' } }) if response.get('status') != 'ok': error = response.get('error') or {} - log.error(f'DLSS: {error.get("message")}') + log.error(f'DLSS: path="{pkg_path}" {response}') return { 'error': error.get('message', 'unknown error') } report = (response.get('result') or {}).get('report', {}) if debug: @@ -116,33 +115,34 @@ def verify(pkg_path): checks = { 'passed': 0, 'failed': 0 } for check in report.get('checks', []): if check.get('passed', False): + log.debug(f'DLSS verify: {check}') checks['passed'] += 1 else: checks['failed'] += 1 - log.error(f'DLSS : {check}') + log.error(f'DLSS verify: {check}') shared.opts.dlss_pkg_path = pkg_path shared.opts.save() - log.debug(f'DLSS: gpu={report.get("gpu", "unknown")} checks={checks}') + log.debug(f'DLSS: path="{pkg_path}" gpu={report.get("gpu", "unknown")} checks={checks}') return report def status(pkg_path): - log.info(f'DLSS status: path="{pkg_path}"') response = c.controller.call(pkg_path, 'status', {}) if response.get('status') != 'ok': error = response.get('error') or {} - log.error(f'DLSS: {error.get("message")}') + log.error(f'DLSS status: path="{pkg_path}" {response}') return { 'error': error.get('message', 'unknown error') } + log.debug(f'DLSS status: path="{pkg_path}" {response}') return response.get('result', {}) def reset(pkg_path): - log.info(f'DLSS reset: path="{pkg_path}"') response = c.controller.call(pkg_path, 'reset', {}) if response.get('status') != 'ok': error = response.get('error') or {} log.error(f'DLSS: {error.get("message")}') return { 'error': error.get('message', 'unknown error') } + log.info(f'DLSS reset: path="{pkg_path}" {response}') return response.get('result', {})