mirror of
https://github.com/vladmandic/automatic
synced 2026-09-19 01:04:32 +02:00
svdquant and others stuff
Signed-off-by: Vladimir Mandic <mandic00@live.com>
This commit is contained in:
@@ -27,6 +27,7 @@
|
||||
comma-separate list of regex patterns to skip
|
||||
- ui display reference models with subdued color
|
||||
- xyz grid support bool
|
||||
- do not force gc at end of processing
|
||||
- **Wiki**
|
||||
- new Nunchaku page
|
||||
- updated HiDream, Quantization, NNCF pages
|
||||
@@ -37,6 +38,7 @@
|
||||
- SD35 InstantX IP-adapter
|
||||
- **HunyuanVideo-I2V** with latest transformers
|
||||
- trace logging
|
||||
- xyz grid restore settings
|
||||
|
||||
## Update for 2025-04-12
|
||||
|
||||
|
||||
@@ -122,8 +122,9 @@ def load_quants(kwargs, repo_id, cache_dir, allow_quant):
|
||||
else:
|
||||
shared.log.error(f'Load module: quant=Nunchaku module=transformer repo="{repo_id}" unsupported')
|
||||
if nunchaku_repo is not None:
|
||||
shared.log.debug(f'Load module: quant=Nunchaku module=transformer repo="{nunchaku_repo}" precision={nunchaku_precision} attention={shared.opts.nunchaku_attention}')
|
||||
kwargs['transformer'] = nunchaku.NunchakuFluxTransformer2dModel.from_pretrained(nunchaku_repo, torch_dtype=devices.dtype)
|
||||
shared.log.debug(f'Load module: quant=Nunchaku module=transformer repo="{nunchaku_repo}" precision={nunchaku_precision} offload={shared.opts.nunchaku_offload} attention={shared.opts.nunchaku_attention}')
|
||||
kwargs['transformer'] = nunchaku.NunchakuFluxTransformer2dModel.from_pretrained(nunchaku_repo, offload=shared.opts.nunchaku_offload, torch_dtype=devices.dtype)
|
||||
kwargs['transformer'].quantization_method = 'SVDQuant'
|
||||
if shared.opts.nunchaku_attention:
|
||||
kwargs['transformer'].set_attention_impl("nunchaku-fp16")
|
||||
elif 'transformer' not in kwargs and model_quant.check_quant('Transformer'):
|
||||
|
||||
@@ -502,5 +502,5 @@ def process_images_inner(p: StableDiffusionProcessing) -> Processed:
|
||||
if not p.disable_extra_networks:
|
||||
shared.log.info(f'Processed: images={len(output_images)} its={(p.steps * len(output_images)) / (t1 - t0):.2f} time={t1-t0:.2f} timers={timer.process.dct()} memory={memstats.memory_stats()}')
|
||||
|
||||
devices.torch_gc(force=True, reason='final')
|
||||
devices.torch_gc(force=False, reason='final')
|
||||
return processed
|
||||
|
||||
@@ -153,7 +153,7 @@ def set_pipeline_args(p, model, prompts:list, negative_prompts:list, prompts_2:t
|
||||
shared.log.error(f'Prompt parser encode: {e}')
|
||||
if os.environ.get('SD_PROMPT_DEBUG', None) is not None:
|
||||
errors.display(e, 'Prompt parser encode')
|
||||
timer.process.record('encode', reset=False)
|
||||
timer.process.record('prompt', reset=False)
|
||||
else:
|
||||
prompt_parser_diffusers.embedder = None
|
||||
|
||||
|
||||
@@ -2,7 +2,6 @@ import os
|
||||
import time
|
||||
import numpy as np
|
||||
import torch
|
||||
import torchvision.transforms.functional as TF
|
||||
from modules import shared, devices, sd_models, sd_vae, sd_vae_taesd, errors
|
||||
|
||||
|
||||
@@ -316,6 +315,7 @@ def vae_decode(latents, model, output_type='np', vae_type='Full', width=None, he
|
||||
|
||||
|
||||
def vae_encode(image, model, vae_type='Full'): # pylint: disable=unused-variable
|
||||
import torchvision.transforms.functional as f
|
||||
if shared.state.interrupted or shared.state.skipped:
|
||||
return []
|
||||
if not hasattr(model, 'vae') and hasattr(model, 'pipe'):
|
||||
@@ -323,7 +323,7 @@ def vae_encode(image, model, vae_type='Full'): # pylint: disable=unused-variable
|
||||
if not hasattr(model, 'vae'):
|
||||
shared.log.error('VAE not found in model')
|
||||
return []
|
||||
tensor = TF.to_tensor(image.convert("RGB")).unsqueeze(0).to(devices.device, devices.dtype_vae)
|
||||
tensor = f.to_tensor(image.convert("RGB")).unsqueeze(0).to(devices.device, devices.dtype_vae)
|
||||
if vae_type == 'Full':
|
||||
tensor = tensor * 2 - 1
|
||||
latents = full_vae_encode(image=tensor, model=shared.sd_model)
|
||||
|
||||
@@ -552,6 +552,7 @@ options_templates.update(options_section(('quantization', "Quantization Settings
|
||||
"nunchaku_sep": OptionInfo("<h2>Nunchaku Engine</h2>", "", gr.HTML),
|
||||
"nunchaku_quantization": OptionInfo([], "SVDQuant enabled", gr.CheckboxGroup, {"choices": ["Model", "Transformer", "VAE", "TE", "Video", "LLM", "ControlNet"], "visible": native}),
|
||||
"nunchaku_attention": OptionInfo(False, "Nunchaku attention", gr.Checkbox, {"visible": native}),
|
||||
"nunchaku_offload": OptionInfo(False, "Nunchaku offloading", gr.Checkbox, {"visible": native}),
|
||||
}))
|
||||
|
||||
options_templates.update(options_section(('advanced', "Pipeline Modifiers"), {
|
||||
|
||||
@@ -36,6 +36,7 @@ class SharedSettingsStackHelper(object):
|
||||
freeu_b2 = None
|
||||
freeu_s1 = None
|
||||
freeu_s2 = None
|
||||
cfgzero_enabled = None
|
||||
schedulers_sigma_adjust = None
|
||||
schedulers_beta_schedule = None
|
||||
schedulers_beta_start = None
|
||||
@@ -53,6 +54,7 @@ class SharedSettingsStackHelper(object):
|
||||
eta_noise_seed_delta = None
|
||||
tome_ratio = None
|
||||
todo_ratio = None
|
||||
teacache_thresh = None
|
||||
extra_networks_default_multiplier = None
|
||||
disable_weights_auto_swap = None
|
||||
|
||||
@@ -75,6 +77,7 @@ class SharedSettingsStackHelper(object):
|
||||
self.freeu_b2 = shared.opts.freeu_b2
|
||||
self.freeu_s1 = shared.opts.freeu_s1
|
||||
self.freeu_s2 = shared.opts.freeu_s2
|
||||
self.cfgzero_enabled = shared.opts.cfgzero_enabled
|
||||
self.sd_model_checkpoint = shared.opts.sd_model_checkpoint
|
||||
self.sd_model_refiner = shared.opts.sd_model_refiner
|
||||
self.sd_model_dict = shared.opts.sd_model_dict
|
||||
@@ -83,6 +86,7 @@ class SharedSettingsStackHelper(object):
|
||||
self.sd_text_encoder = shared.opts.sd_text_encoder
|
||||
self.extra_networks_default_multiplier = shared.opts.extra_networks_default_multiplier
|
||||
self.disable_weights_auto_swap = shared.opts.disable_weights_auto_swap
|
||||
self.teacache_thresh = shared.opts.teacache_thresh
|
||||
shared.opts.data["disable_weights_auto_swap"] = False
|
||||
|
||||
def __exit__(self, exc_type, exc_value, tb):
|
||||
@@ -100,12 +104,14 @@ class SharedSettingsStackHelper(object):
|
||||
shared.opts.data["schedulers_shift"] = self.schedulers_shift
|
||||
shared.opts.data["scheduler_eta"] = self.scheduler_eta
|
||||
shared.opts.data["eta_noise_seed_delta"] = self.eta_noise_seed_delta
|
||||
shared.opts.data["cfgzero_enabled"] = self.cfgzero_enabled
|
||||
shared.opts.data["freeu_b1"] = self.freeu_b1
|
||||
shared.opts.data["freeu_b2"] = self.freeu_b2
|
||||
shared.opts.data["freeu_s1"] = self.freeu_s1
|
||||
shared.opts.data["freeu_s2"] = self.freeu_s2
|
||||
shared.opts.data["tome_ratio"] = self.tome_ratio
|
||||
shared.opts.data["todo_ratio"] = self.todo_ratio
|
||||
shared.opts.data["teacache_thresh"] = self.teacache_thresh
|
||||
|
||||
if self.sd_model_checkpoint != shared.opts.sd_model_checkpoint:
|
||||
shared.opts.data["sd_model_checkpoint"] = self.sd_model_checkpoint
|
||||
|
||||
Reference in New Issue
Block a user