mirror of
https://github.com/vladmandic/automatic
synced 2026-09-18 16:54:33 +02:00
+3
-3
@@ -1,8 +1,8 @@
|
||||
# Change Log for SD.Next
|
||||
|
||||
## Update for 2026-09-07
|
||||
## Update for 2026-09-08
|
||||
|
||||
### Highlights for 2026-09-07
|
||||
### Highlights for 2026-09-08
|
||||
|
||||
All-about-optimizations:
|
||||
- improved LoRA performance and quality, especially with quantized models
|
||||
@@ -12,7 +12,7 @@ All-about-optimizations:
|
||||
- compute updates across the board
|
||||
- enhanced cloud model support
|
||||
|
||||
### Details for 2026-09-07
|
||||
### Details for 2026-09-08
|
||||
|
||||
- **Models**
|
||||
- [Anima 2.9B Preview v1](https://huggingface.co/yeoj34760/Anima-2.9B)
|
||||
|
||||
+5
-2
@@ -409,7 +409,7 @@ def branch(folder=None):
|
||||
b = 'master'
|
||||
else:
|
||||
b = b.split('\n')[0].replace('*', '').strip()
|
||||
log.debug(f'Git submodule: {folder} / {b}')
|
||||
log.debug(f'Submodule: folder="{folder}" branch="{b}"')
|
||||
git(f'checkout {b}', folder, ignore=True, optional=True)
|
||||
ts('branch', t_start)
|
||||
return b
|
||||
@@ -1386,7 +1386,10 @@ def install_requirements():
|
||||
|
||||
# set environment variables controlling the behavior of various libraries
|
||||
def set_environment():
|
||||
|
||||
log.debug('Setting environment tuning')
|
||||
from modules.logger import console
|
||||
log.debug(f'Console: terminal={console.is_terminal} width={console.width} height={console.height} color={console.color_system} legacy={console.legacy_windows}')
|
||||
os.environ.setdefault('ACCELERATE', 'True')
|
||||
os.environ.setdefault('ATTN_PRECISION', 'fp16')
|
||||
os.environ.setdefault('ClDeviceGlobalMemSizeAvailablePercent', '100')
|
||||
@@ -1704,7 +1707,7 @@ def check_version(reset=True): # pylint: disable=unused-argument
|
||||
else:
|
||||
dt = commits["commit"]["commit"]["author"]["date"]
|
||||
commit = commits["commit"]["sha"][:8]
|
||||
log.info(f'Version: app=sd.next latest={dt} hash={commit} branch={branch_name}')
|
||||
log.info(f'Version: app="sd.next" latest={dt} hash={commit} branch={branch_name}')
|
||||
except Exception as e:
|
||||
log.error(f'Repository failed to check version: {e} {commits}')
|
||||
ts('latest', t_start)
|
||||
|
||||
@@ -238,7 +238,7 @@ def main():
|
||||
init_args() # setup argparser and default folders
|
||||
installer.args = args
|
||||
installer.setup_logging(debug=args.debug, trace=args.trace, filename=args.log)
|
||||
log.info('Starting SD.Next')
|
||||
log.info('[bold cyan]SD.Next[/]: starting')
|
||||
installer.get_logfile()
|
||||
try:
|
||||
sys.excepthook = installer.custom_excepthook
|
||||
|
||||
+26
-11
@@ -232,20 +232,26 @@ def setup_logging(debug=None, trace=None, filename=None):
|
||||
log.setLevel(logging.DEBUG) # log to file is always at level debug for facility `sd`
|
||||
log.print = rprint
|
||||
|
||||
# use only the 16 standard ANSI color names (+ dim/bold modifiers) so the theme renders correctly on basic 16-color terminals too
|
||||
theme = Theme({
|
||||
"traceback.border": "black",
|
||||
"inspect.value.border": "black",
|
||||
"traceback.border.syntax_error": "dark_red",
|
||||
"logging.level.info": "blue_violet",
|
||||
"logging.level.debug": "orchid",
|
||||
"logging.level.trace": "dark_blue",
|
||||
"repr.attrib_name": "bright_cyan",
|
||||
"repr.attrib_value": "orchid",
|
||||
"repr.str": "sandy_brown",
|
||||
"repr.number": "bright_green",
|
||||
"repr.bool_true": "bright_green",
|
||||
"traceback.border.syntax_error": "red",
|
||||
|
||||
"logging.level.trace": "dim cyan",
|
||||
"logging.level.debug": "cyan",
|
||||
"logging.level.info": "bright_cyan",
|
||||
"logging.level.warning": "yellow",
|
||||
"logging.level.error": "red",
|
||||
"logging.level.critical": "bold bright_red",
|
||||
|
||||
"repr.attrib_name": "bright_white",
|
||||
"repr.attrib_value": "cyan",
|
||||
"repr.str": "bright_cyan",
|
||||
"repr.none": "yellow",
|
||||
"repr.number": "bright_yellow",
|
||||
"repr.bool_true": "green",
|
||||
"repr.bool_false": "bright_red",
|
||||
"repr.values": "bright_cyan",
|
||||
})
|
||||
|
||||
Padding.__rich_console__ = override_padding
|
||||
@@ -270,7 +276,7 @@ def setup_logging(debug=None, trace=None, filename=None):
|
||||
|
||||
log_filter = LogFilter()
|
||||
# handlers
|
||||
rh = RichHandler(show_time=True, omit_repeated_times=False, show_level=True, show_path=False, markup=False, rich_tracebacks=True, log_time_format='%H:%M:%S-%f', level=level, console=console)
|
||||
rh = RichHandler(show_time=True, omit_repeated_times=False, show_level=True, show_path=False, markup=True, rich_tracebacks=True, log_time_format='%H:%M:%S-%f', level=level, console=console)
|
||||
if trace:
|
||||
rh.formatter = logging.Formatter('[%(module)s][%(pathname)s:%(lineno)d] %(message)s')
|
||||
rh.addFilter(log_filter)
|
||||
@@ -319,3 +325,12 @@ def setup_logging(debug=None, trace=None, filename=None):
|
||||
logging.getLogger("torch").setLevel(logging.DEBUG)
|
||||
else:
|
||||
logging.getLogger("torch").setLevel(logging.WARNING)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
setup_logging(debug=True, trace=False, filename=None)
|
||||
for l in [logging.TRACE, logging.DEBUG, logging.INFO, logging.WARNING, logging.ERROR, logging.CRITICAL]:
|
||||
log.log(l, f"Test log level: {logging.getLevelName(l)}")
|
||||
values = [None, True, False, "yes", "no", "sd.next", 1, 0, 1.0, [1,2,3], {"key": "value"}, (1,2), {1,2}, object()]
|
||||
for v in values:
|
||||
log.info(f"Test values: {type(v).__name__}={v}")
|
||||
|
||||
@@ -111,6 +111,7 @@ class ExtraNetworksPageCheckpoints(ui_extra_networks.ExtraNetworksPage):
|
||||
primary = tag.split(',')[0].strip() if len(tag) > 0 else ''
|
||||
else:
|
||||
primary = ''
|
||||
primary = primary.lower()
|
||||
|
||||
if ('nunchaku' in tag) and (devices.backend != 'cuda' and not shared.cmd_opts.experimental):
|
||||
count['hidden'] += 1
|
||||
|
||||
@@ -19,15 +19,21 @@ def load_llada_image(checkpoint_info, diffusers_load_config=None):
|
||||
if repo_id is None or repo_id.lower() == 'none':
|
||||
return None
|
||||
|
||||
sdnq_quantize_weights_mode = None
|
||||
sdnq_quantize_weights_mode_te = None
|
||||
sdnq_quantize_matmul_mode_te = None
|
||||
if 'Model' in shared.opts.sdnq_quantize_weights:
|
||||
if any(x in shared.opts.sdnq_quantize_weights_mode for x in ['2', '3', '4', '5', '6']):
|
||||
sdnq_quantize_weights_mode = shared.opts.sdnq_quantize_weights_mode
|
||||
shared.opts.sdnq_quantize_weights_mode = 'uint8'
|
||||
log.warning('LLaDAImage: cls=LLaDAImageTransformer2DModel quant=uint8 override')
|
||||
if 'TE' in shared.opts.sdnq_quantize_weights:
|
||||
if any(x in shared.opts.sdnq_quantize_weights_mode_te for x in ['2', '3', '4', '5', '6']):
|
||||
sdnq_quantize_weights_mode_te = shared.opts.sdnq_quantize_weights_mode_te
|
||||
shared.opts.sdnq_quantize_weights_mode_te = 'uint8'
|
||||
log.warning('LLaDAImage: cls=LLaDA2MoeModelLM quant=uint8 override')
|
||||
if shared.opts.sdnq_quantize_matmul_mode_te != 'disabled':
|
||||
sdnq_quantize_matmul_mode_te = shared.opts.sdnq_quantize_matmul_mode_te
|
||||
shared.opts.sdnq_quantize_matmul_mode_te = 'disabled'
|
||||
log.warning('LLaDAImage: cls=LLaDA2MoeModelLM matmul=disabled override')
|
||||
|
||||
@@ -72,6 +78,14 @@ def load_llada_image(checkpoint_info, diffusers_load_config=None):
|
||||
}
|
||||
# generation_mode = "text", "vq", "editing"
|
||||
|
||||
# restore settings post-load
|
||||
if sdnq_quantize_weights_mode is not None:
|
||||
shared.opts.sdnq_quantize_weights_mode = sdnq_quantize_weights_mode
|
||||
if sdnq_quantize_weights_mode_te is not None:
|
||||
shared.opts.sdnq_quantize_weights_mode_te = sdnq_quantize_weights_mode_te
|
||||
if sdnq_quantize_matmul_mode_te is not None:
|
||||
shared.opts.sdnq_quantize_matmul_mode_te = sdnq_quantize_matmul_mode_te
|
||||
|
||||
del transformer, text_encoder
|
||||
sd_hijack_te.init_hijack(pipe)
|
||||
sd_hijack_vae.init_hijack(pipe)
|
||||
|
||||
@@ -249,7 +249,7 @@ def async_policy():
|
||||
if shared.cmd_opts.profile:
|
||||
loop.slow_callback_duration = 0.001
|
||||
loop.set_debug(shared.cmd_opts.profile)
|
||||
log.debug(f'AsyncIO: loop={loop}')
|
||||
log.debug(f'AsyncIO: loop={loop.__class__.__name__}')
|
||||
loop.set_task_factory(verbose_task_factory)
|
||||
loop.set_exception_handler(self.handle_exception)
|
||||
return loop
|
||||
|
||||
Reference in New Issue
Block a user