diff --git a/nodes/lora_merger.py b/nodes/lora_merger.py index 9ea8a04..7048bb2 100644 --- a/nodes/lora_merger.py +++ b/nodes/lora_merger.py @@ -123,7 +123,9 @@ def merge_multi_loras( core_base = extract_core_layer_base(base_key) core_underscored = core_base.replace(".", "_") if core_underscored in lora_lookup: - layer_map[core_base] = lora_lookup[core_underscored] # List of (idx, block_name) + # Always use standard format with diffusion_model. prefix when reference model is provided + output_key = core_base if core_base.startswith("diffusion_model.") else "diffusion_model." + core_base + layer_map[output_key] = lora_lookup[core_underscored] # List of (idx, block_name) else: for i, info in enumerate(lora_infos): for block_name in info["pairs"].keys(): @@ -270,7 +272,7 @@ def merge_multi_loras( if verbose: matched_stats = {i: 0 for i in range(len(lora_paths))} for indices in layer_map.values(): - for idx in indices: + for idx, block_name in indices: matched_stats[idx] += 1 print(f"[LoRA Multi-Merge] --- Merge Summary ---") @@ -554,7 +556,9 @@ def merge_multi_loras_dare( core_base = extract_core_layer_base(base_key) core_underscored = core_base.replace(".", "_") if core_underscored in lora_lookup: - layer_map[core_base] = lora_lookup[core_underscored] # List of (idx, block_name) + # Always use standard format with diffusion_model. prefix when reference model is provided + output_key = core_base if core_base.startswith("diffusion_model.") else "diffusion_model." + core_base + layer_map[output_key] = lora_lookup[core_underscored] # List of (idx, block_name) else: for i, info in enumerate(lora_infos): for block_name in info["pairs"].keys(): @@ -672,7 +676,7 @@ def merge_multi_loras_dare( if verbose: matched_stats = {i: 0 for i in range(len(lora_paths))} for indices in layer_map.values(): - for idx in indices: + for idx, block_name in indices: matched_stats[idx] += 1 print(f"[LoRA Multi-Merge DARE] --- Merge Summary ---") @@ -870,7 +874,9 @@ def merge_multi_loras_dare_enhanced( core_base = extract_core_layer_base(base_key) core_underscored = core_base.replace(".", "_") if core_underscored in lora_lookup: - layer_map[core_base] = lora_lookup[core_underscored] # List of (idx, block_name) + # Always use standard format with diffusion_model. prefix when reference model is provided + output_key = core_base if core_base.startswith("diffusion_model.") else "diffusion_model." + core_base + layer_map[output_key] = lora_lookup[core_underscored] # List of (idx, block_name) else: for i, info in enumerate(lora_infos): for block_name in info["pairs"].keys(): @@ -990,7 +996,7 @@ def merge_multi_loras_dare_enhanced( if verbose: matched_stats = {i: 0 for i in range(len(lora_paths))} for indices in layer_map.values(): - for idx in indices: + for idx, block_name in indices: matched_stats[idx] += 1 print(f"[LoRA Multi-Merge Enhanced DARE] --- Merge Summary ---") diff --git a/pyproject.toml b/pyproject.toml index 985aee4..286cb0a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [project] name = "ComfyUI-ModelUtils" description = "[WIP]Custom nodes for handling, inspecting, modifying and creating various model files." -version = "0.4.0" +version = "0.4.1" license = { file = "LICENSE" } classifiers = [ diff --git a/requirements.txt b/requirements.txt index 7498269..1622408 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ requests Pillow mutagen -unifiedefficientloader==0.5.0 +unifiedefficientloader>=0.5.1 av