From adbff39ca581bfe9fff56d6da2f0c088b345178d Mon Sep 17 00:00:00 2001 From: Vladimir Mandic Date: Thu, 23 Oct 2025 20:59:48 -0400 Subject: [PATCH] reference models add distilled and community sections Signed-off-by: Vladimir Mandic --- CHANGELOG.md | 5 +++- extensions-builtin/sdnext-modernui | 2 +- html/reference.json | 37 ++++++++++++++++++++++++ javascript/extraNetworks.js | 10 ++++++- javascript/settings.js | 2 +- modules/ui_extra_networks.py | 13 +++++---- modules/ui_extra_networks_checkpoints.py | 1 + 7 files changed, 61 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 452a30766..941d5238b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,8 +4,10 @@ - **Features** - **offline mode**: enable in *settings -> hugginface* - enables fully offline mode where previously downloaded models are used as-is + enables fully offline mode where previously downloaded models can be used as-is *note*: must be enabled only after all packages have been installed and model has been run online at least once + - **networks**: add additional sections for **Reference** models: + **Distilled** which shows distilled variants of base models and **Community** which shows community highlights - **Backend** - switch to `torch==2.9` for *ipex, rocm and openvino* - switch to `rocm==7.0` for nightlies @@ -26,6 +28,7 @@ - video tab create `params.txt` with metadata - fix full-screen image-viewer toolbar actions with control tab - improve filename sanitization + - fix networks display with extended characters, thanks @awsr ## Update for 2025-10-18 diff --git a/extensions-builtin/sdnext-modernui b/extensions-builtin/sdnext-modernui index 80d1030c6..eea7fc5d9 160000 --- a/extensions-builtin/sdnext-modernui +++ b/extensions-builtin/sdnext-modernui @@ -1 +1 @@ -Subproject commit 80d1030c6bf161c301bed7ec14ba43eabe8c69bb +Subproject commit eea7fc5d94564e5d1eda76b6db7e906fc792cffe diff --git a/html/reference.json b/html/reference.json index 7c49aac11..b401cb544 100644 --- a/html/reference.json +++ b/html/reference.json @@ -3,12 +3,18 @@ "path": "tempestByVlad_baseV01.safetensors@https://civitai.com/api/download/models/1301775", "preview": "tempestByVlad_baseV01.jpg", "desc": "Flexible SDXL model with custom encoder and finetuned for larger landscape resolutions with high details and high contrast.", + "tags": "community", + "size": 6.94, + "date": "2025 January", "extras": "" }, "Tempest-by-Vlad XL Hyper": { "path": "tempestByVlad_hyperV01.safetensors@https://civitai.com/api/download/models/1343512", "preview": "tempestByVlad_hyperV01.jpg", "desc": "Custom distilled variant with goal to get as-normal-as-possible model that works with low steps and guidance-free", + "tags": "community", + "size": 6.94, + "date": "2025 January", "extras": "" }, @@ -16,12 +22,18 @@ "path": "juggernautXL_juggXIByRundiffusion.safetensors@https://civitai.com/api/download/models/782002", "preview": "juggernautXL_juggXIByRundiffusion.jpg", "desc": "Showcase finetuned model based on Stable diffusion XL", + "date": "2024 August", + "size": 6.94, + "tags": "community", "extras": "sampler: DEIS, steps: 20, cfg_scale: 6.0" }, "Juggernaut XL XI Lightning": { "path": "juggernautXL_juggXILightningByRD.safetensors@https://civitai.com/api/download/models/920957", "preview": "juggernautXL_juggXILightningByRD.jpg", "desc": "Showcase finetuned model based on Stable diffusion XL", + "date": "2024 August", + "size": 6.94, + "tags": "community", "extras": "sampler: DPM SDE, steps: 6, cfg_scale: 2.0" }, "Juggernaut SD Reborn": { @@ -29,6 +41,9 @@ "path": "juggernaut_reborn.safetensors@https://civitai.com/api/download/models/274039", "preview": "juggernaut_reborn.jpg", "desc": "Showcase finetuned model based on Stable diffusion 1.5", + "date": "2023 December", + "size": 2.28, + "tags": "community", "extras": "width: 512, height: 512, sampler: DEIS, steps: 20, cfg_scale: 6.0" }, @@ -56,6 +71,8 @@ "preview": "stabilityai--stable-diffusion-2-1.jpg", "skip": true, "variant": "fp16", + "size": 2.58, + "date": "2022 December", "desc": "This stable-diffusion-2 model is resumed from stable-diffusion-2-base (512-base-ema.ckpt) and trained for 150k steps using a v-objective on the same dataset. Resumed for another 140k steps on 768x768 images", "extras": "width: 768, height: 768, sampler: DEIS, steps: 20, cfg_scale: 6.0" }, @@ -75,6 +92,7 @@ "desc": "SDXL-Turbo is a fast generative text-to-image model that can synthesize photorealistic images from a text prompt in a 1-4 steps.", "skip": true, "variant": "fp16", + "tags": "distilled", "extras": "steps: 4, cfg_scale: 0.0" }, "StabilityAI Stable Cascade": { @@ -95,6 +113,7 @@ "preview": "stabilityai--stable-cascade-lite.jpg", "extras": "sampler: Default, cfg_scale: 4.0, image_cfg_scale: 1.0", "size": 4.97, + "tags": "distilled", "date": "2024 February" }, "StabilityAI Stable Diffusion 3 Medium": { @@ -133,6 +152,7 @@ "variant": "fp16", "desc": "Stable Diffusion 3.5 Large Turbo is a Multimodal Diffusion Transformer (MMDiT) text-to-image model with Adversarial Diffusion Distillation (ADD) that features improved performance in image quality, typography, complex prompt understanding, and resource-efficiency, with a focus on fewer inference steps.", "preview": "stabilityai--stable-diffusion-3_5-large-turbo.jpg", + "tags": "distilled", "extras": "sampler: Default, cfg_scale: 7.0" }, @@ -176,6 +196,7 @@ "path": "vladmandic/flux.1-dev-SRPO", "preview": "vladmandic--flux.1-dev-SRPO.jpg", "desc": "FLUX.1 Dev SRPO is Tencent trained with specific technique: Directly Aligning the Full Diffusion Trajectory with Fine-Grained Human Preference", + "tags": "distilled", "skip": true, "extras": "sampler: Default, cfg_scale: 4.5" }, @@ -214,6 +235,7 @@ "skip": true, "extras": "steps: 8", "size": 56.1, + "tags": "distilled", "date": "2025 August" }, "Qwen-Image-Distill": { @@ -223,6 +245,7 @@ "skip": true, "extras": "steps: 15", "size": 56.1, + "tags": "distilled", "date": "2025 August" }, "Qwen-Image-Lightning-Edit": { @@ -232,6 +255,7 @@ "skip": true, "extras": "steps: 8", "size": 56.1, + "tags": "distilled", "date": "2025 August" }, "Qwen-Image Pruning-12B": { @@ -240,6 +264,7 @@ "preview": "OPPOer--Qwen-Image-Pruning.jpg", "desc": "This open-source project is based on Qwen-Image and has attempted model pruning, removing 20 layers while retaining the weights of 40 layers, resulting in a model size of 12B parameters.", "skip": true, + "tags": "distilled", "date": "2025 Ocotober" }, "Qwen-Image-Edit Pruning-13B": { @@ -248,6 +273,7 @@ "preview": "OPPOer--Qwen-Image-Edit-Pruning.jpg", "desc": "This open-source project is based on Qwen-Image-Edit and has attempted model pruning, removing 20 layers while retaining the weights of 40 layers, resulting in a model size of 13.6B parameters.", "skip": true, + "tags": "distilled", "date": "2025 Ocotober" }, "Qwen-Image-Edit-2509 Pruning-13B": { @@ -256,6 +282,7 @@ "preview": "OPPOer--Qwen-Image-Edit-2509-Pruning.jpg", "desc": "This open-source project is based on Qwen-Image-Edit and has attempted model pruning, removing 20 layers while retaining the weights of 40 layers, resulting in a model size of 13.6B parameters.", "skip": true, + "tags": "distilled", "date": "2025 Ocotober" }, @@ -284,6 +311,7 @@ "skip": true, "extras": "", "size": 26.84, + "tags": "distilled", "date": "2025 July" }, "lodestones Chroma1 v50 Preview Annealed": { @@ -419,6 +447,7 @@ "preview": "SDXL-Flash_Mini.jpg", "desc": "Introducing the new fast model SDXL Flash (Mini), we learned that all fast XL models work fast, but the quality decreases, and we also made a fast model, but it is not as fast as LCM, Turbo, Lightning and Hyper, but the quality is higher.", "extras": "width: 2048, height: 1024, sampler: DEIS, steps: 40, cfg_scale: 6.0", + "tags": "distilled", "experimental": true }, @@ -442,6 +471,7 @@ "path": "Efficient-Large-Model/Sana_Sprint_1.6B_1024px_diffusers", "desc": "SANA-Sprint is an ultra-efficient diffusion model for text-to-image (T2I) generation, reducing inference steps from 20 to 1-4 while achieving state-of-the-art performance.", "preview": "Efficient-Large-Model--Sana15_Sprint_1600M_1024px_diffusers.jpg", + "tags": "distilled", "skip": true }, "NVLabs Sana 1.0 1.6B 4k": { @@ -555,6 +585,7 @@ "skip": true, "extras": "sampler: Default, cfg_scale: 9.0", "size": 8.72, + "tags": "distilled", "date": "2023 October" }, "Segmind Tiny": { @@ -563,6 +594,7 @@ "desc": "Segmind's Tiny-SD offers a compact, efficient, and distilled version of Realistic Vision 4.0 and is up to 80% faster than SD1.5", "extras": "width: 512, height: 512, sampler: Default, cfg_scale: 9.0", "size": 1.03, + "tags": "distilled", "date": "2023 July" }, "Segmind SegMoE SD 4x2": { @@ -627,6 +659,7 @@ "path": "Tencent-Hunyuan/HunyuanDiT-v1.2-Diffusers-Distilled", "desc": "Hunyuan-DiT : A Powerful Multi-Resolution Diffusion Transformer with Fine-Grained Chinese Understanding.", "preview": "Tencent-Hunyuan--HunyuanDiT-v1.2-Diffusers-Distilled.jpg", + "tags": "distilled", "extras": "sampler: Default, cfg_scale: 2.0" }, "Tencent HunyuanDiT 1.1": { @@ -639,6 +672,7 @@ "path": "Tencent-Hunyuan/HunyuanDiT-v1.1-Diffusers-Distilled", "desc": "Hunyuan-DiT : A Powerful Multi-Resolution Diffusion Transformer with Fine-Grained Chinese Understanding.", "preview": "Tencent-Hunyuan--HunyuanDiT-v1.1-Diffusers-Distilled.jpg", + "tags": "distilled", "extras": "sampler: Default, cfg_scale: 2.0" }, @@ -796,18 +830,21 @@ "path": "shuttleai/shuttle-3-diffusion", "desc": "Shuttle uses Flux.1 Schnell as its base. It can produce images similar to Flux Dev or Pro in just 4 steps, and it is licensed under Apache 2. The model was partially de-distilled during training. When used beyond 10 steps, it enters refiner mode enhancing image details without altering the composition", "preview": "shuttleai--shuttle-3-diffusion.jpg", + "tags": "community", "skip": true }, "ShuttleAI Shuttle 3.1 Aesthetic": { "path": "shuttleai/shuttle-3.1-aesthetic", "desc": "Shuttle uses Flux.1 Schnell as its base. It can produce images similar to Flux Dev or Pro in just 4 steps, and it is licensed under Apache 2. The model was partially de-distilled during training. When used beyond 10 steps, it enters refiner mode enhancing image details without altering the composition", "preview": "shuttleai--shuttle-3_1-aestetic.jpg", + "tags": "community", "skip": true }, "ShuttleAI Shuttle Jaguar": { "path": "shuttleai/shuttle-jaguar", "desc": "Shuttle uses Flux.1 Schnell as its base. It can produce images similar to Flux Dev or Pro in just 4 steps, and it is licensed under Apache 2. The model was partially de-distilled during training. When used beyond 10 steps, it enters refiner mode enhancing image details without altering the composition", "preview": "shuttleai--shuttle-jaguar.jpg", + "tags": "community", "skip": true }, diff --git a/javascript/extraNetworks.js b/javascript/extraNetworks.js index 95b5aca10..d7affa804 100644 --- a/javascript/extraNetworks.js +++ b/javascript/extraNetworks.js @@ -144,7 +144,15 @@ async function filterExtraNetworksForTab(searchTerm) { } else if (searchTerm === 'reference/') { cards.forEach((elem) => elem.style.display = elem.dataset.name .toLowerCase() - .includes('reference/') ? '' : 'none'); + .includes('reference/') && elem.dataset.tags === '' ? '' : 'none'); + } else if (searchTerm === 'distilled/') { + cards.forEach((elem) => elem.style.display = elem.dataset.tags + .toLowerCase() + .includes('distilled') ? '' : 'none'); + } else if (searchTerm === 'community/') { + cards.forEach((elem) => elem.style.display = elem.dataset.tags + .toLowerCase() + .includes('community') ? '' : 'none'); } else if (searchTerm === 'local/') { cards.forEach((elem) => elem.style.display = elem.dataset.name .toLowerCase() diff --git a/javascript/settings.js b/javascript/settings.js index c4170f936..f6d133a19 100644 --- a/javascript/settings.js +++ b/javascript/settings.js @@ -170,7 +170,7 @@ async function initModels() { if (en.classList.contains('hide')) gradioApp().getElementById('txt2img_extra_networks_btn').click(); const repeat = setInterval(() => { const buttons = Array.from(gradioApp().querySelectorAll('#txt2img_model_subdirs > button')) || []; - const reference = buttons.find((b) => b.innerText === 'Reference'); + const reference = buttons.find((b) => (b.innerText === 'Reference') || (b.innerText === 'Distilled') || (b.innerText === 'Community')); if (reference) { clearInterval(repeat); reference.click(); diff --git a/modules/ui_extra_networks.py b/modules/ui_extra_networks.py index ae7149db9..50341f36f 100644 --- a/modules/ui_extra_networks.py +++ b/modules/ui_extra_networks.py @@ -255,11 +255,9 @@ class ExtraNetworksPage: for parentdir, dirs in {d: files_cache.walk(d, cached=True, recurse=files_cache.not_hidden) for d in allowed_folders}.items(): for tgt in dirs: tgt = tgt.path - if os.path.join(paths.models_path, 'Reference') in tgt and shared.opts.extra_network_reference_enable: - subdirs['Reference'] = 1 + if os.path.join(paths.models_path, 'Reference') in tgt: continue if shared.opts.diffusers_dir in tgt: - subdirs[diffusers_base] = 1 continue if 'models--' in tgt: continue @@ -274,6 +272,8 @@ class ExtraNetworksPage: if self.name == 'model' and shared.opts.extra_network_reference_enable: subdirs['Local'] = 1 subdirs['Reference'] = 1 + subdirs['Distilled'] = 1 + subdirs['Community'] = 1 subdirs[diffusers_base] = 1 if self.name == 'style' and shared.opts.extra_networks_styles: subdirs['Local'] = 1 @@ -287,12 +287,15 @@ class ExtraNetworksPage: subdirs.move_to_end(os.path.basename(shared.opts.diffusers_dir), last=True) if 'Reference' in subdirs: subdirs.move_to_end('Reference', last=True) + if 'Distilled' in subdirs: + subdirs.move_to_end('Distilled', last=True) + if 'Community' in subdirs: + subdirs.move_to_end('Community', last=True) subdirs_html = '' for subdir in subdirs: if len(subdir) == 0: continue - style = 'color: var(--color-accent)' if subdir in ['All', 'Local', 'Diffusers', 'Reference'] else '' - if subdir in ['All', 'Local', 'Diffusers', 'Reference']: + if subdir in ['All', 'Local', 'Diffusers', 'Reference', 'Distilled', 'Community']: style = 'network-reference' else: style = 'network-folder' diff --git a/modules/ui_extra_networks_checkpoints.py b/modules/ui_extra_networks_checkpoints.py index d2282d7da..cb21fe608 100644 --- a/modules/ui_extra_networks_checkpoints.py +++ b/modules/ui_extra_networks_checkpoints.py @@ -85,6 +85,7 @@ class ExtraNetworksPageCheckpoints(ui_extra_networks.ExtraNetworksPage): "metadata": {}, "description": v.get('desc', ''), "version": "ready" if ready else "download", + "tags": v.get('tags', ''), } shared.log.debug(f'Networks: type="reference" items={count["total"]} ready={count["ready"]} hidden={count["hidden"]} experimental={count["experimental"]}')