From f13eeda11b44f8e86a352f87023615311c14552a Mon Sep 17 00:00:00 2001 From: silveroxides Date: Sat, 31 Oct 2026 23:23:19 +0100 Subject: [PATCH] Preserve isolated low-bit tensors across all generic merger model types --- nodes/merger.py | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/nodes/merger.py b/nodes/merger.py index af9afe5..b4e630b 100644 --- a/nodes/merger.py +++ b/nodes/merger.py @@ -131,11 +131,20 @@ class MergerLogic: metadata = primary_handler.metadata() low_bit_keys_by_name = {} - if model_type == "loras": + if model_type == "diffusion_models": + low_bit_keys_by_name = { + name: { + logical + for logical, physical in diffusion_maps[name].items() + if physical in quantizer.isolated_low_bit_keys + } + for name, quantizer in diffusion_quantizers.items() + } + else: try: for name, handler in handlers.items(): low_bit_keys_by_name[name] = inspect_low_bit_input( - handler, f"LoRA ({name})", "Generic LoRA Merge" + handler, f"Input ({name})", f"Generic {model_type} Merge" ) except Exception: for handler in handlers.values(): @@ -253,7 +262,7 @@ class MergerLogic: work_units = [] for key in all_keys: - preserve_low_bit = model_type == "loras" and any( + preserve_low_bit = any( key in low_bit_keys for low_bit_keys in low_bit_keys_by_name.values() ) discarded = _matches_any_pattern(key, discard_patterns, glob_mode=glob_mode) @@ -305,7 +314,7 @@ class MergerLogic: ) ) as streamed: for key, loaded in tqdm(streamed, total=len(work_units), desc="Merging layers", unit="layers"): - preserve_low_bit = model_type == "loras" and any( + preserve_low_bit = any( key in low_bit_keys for low_bit_keys in low_bit_keys_by_name.values() ) if key in alpha_keys: @@ -318,7 +327,14 @@ class MergerLogic: pbar.update(1) continue if preserve_low_bit: - write_preserved_tensor(writer, key, primary_handler, force_raw=True) + primary_source_key = ( + diffusion_maps[primary_model_name][key] + if primary_model_name in diffusion_maps + else key + ) + write_preserved_tensor( + writer, primary_source_key, primary_handler, output_key=key, force_raw=True + ) pbar.update(1) continue