From ffda0472db7cc8009af3bb74bd0ba76d5e27a23c Mon Sep 17 00:00:00 2001 From: larsupb Date: Tue, 23 Dec 2025 15:44:19 +0100 Subject: [PATCH] architecture awareness - add compatibility for wan, flux and qwen --- __init__.py | 2 +- debug_keys.py | 96 +++ pyproject.toml | 2 +- src/lora_decompose.py | 1 + src/merge/utils.py | 51 +- src/utils/__init__.py | 4 +- src/utils/config.py | 13 +- src/utils/layer_filter.py | 197 +++++- tests/lora_keys/flux_lora.txt | 366 +++++++++++ tests/lora_keys/qwen_image_edit_lora.txt | 136 ++++ tests/lora_keys/sd_1_5_lora.txt | 348 ++++++++++ tests/lora_keys/sdxl_lora.txt | 785 +++++++++++++++++++++++ tests/lora_keys/wan_2_2_lora.txt | 105 +++ tests/lora_keys/zImage_lora.txt | 106 +++ 14 files changed, 2193 insertions(+), 19 deletions(-) create mode 100644 debug_keys.py create mode 100644 tests/lora_keys/flux_lora.txt create mode 100644 tests/lora_keys/qwen_image_edit_lora.txt create mode 100644 tests/lora_keys/sd_1_5_lora.txt create mode 100644 tests/lora_keys/sdxl_lora.txt create mode 100644 tests/lora_keys/wan_2_2_lora.txt create mode 100644 tests/lora_keys/zImage_lora.txt diff --git a/__init__.py b/__init__.py index ba2e3b6..4278554 100644 --- a/__init__.py +++ b/__init__.py @@ -14,7 +14,7 @@ from .src.nodes_merge_methods import TaskArithmeticMergeMethod, NearSwapMergeMet TIESMergeMethod, DAREMergeMethod, DELLAMergeMethod, SLERPMergeMethod, LinearMergeMethod, NuSlerpMergeMethod, \ ArceeFusionMergeMethod, KArcherMergeMethod -version_code = [2, 0, 0] +version_code = [2, 1, 0] version_str = f"V{version_code[0]}.{version_code[1]}" + (f'.{version_code[2]}' if len(version_code) > 2 else '') print(f"### Loading: ComfyUI LoRA-PowerMerge ({version_str})") diff --git a/debug_keys.py b/debug_keys.py new file mode 100644 index 0000000..0673429 --- /dev/null +++ b/debug_keys.py @@ -0,0 +1,96 @@ +#!/usr/bin/env python3 +""" +Debug script to analyze LoRA layer keys from a Wan 2.2 model. +Run this to see what layer keys are actually present in your LoRA. +""" + +import sys +import safetensors.torch + +def analyze_lora_keys(lora_path): + """Load and analyze the layer keys in a LoRA file.""" + print(f"\nAnalyzing LoRA: {lora_path}\n") + + try: + # Load the LoRA + if lora_path.endswith('.safetensors'): + lora_dict = safetensors.torch.load_file(lora_path) + else: + import torch + lora_dict = torch.load(lora_path, map_location='cpu') + + keys = list(lora_dict.keys()) + print(f"Total keys: {len(keys)}\n") + + # Analyze key patterns + print("Sample keys (first 20):") + for key in keys[:20]: + print(f" {key}") + + print("\n" + "="*80) + + # Extract unique layer components + components = set() + for key in keys: + parts = key.split('.') + for part in parts: + if part not in ['lora_up', 'lora_down', 'alpha', 'weight', 'bias']: + components.add(part) + + print("\nUnique layer components found:") + for comp in sorted(components): + print(f" {comp}") + + print("\n" + "="*80) + + # Check for common patterns + patterns = { + 'attention': ['attn', 'attention', 'self_attn', 'cross_attn'], + 'mlp/feedforward': ['mlp', 'ff', 'feed_forward', 'ffn', 'fc'], + 'projection': ['proj', 'projection'], + 'norm': ['norm', 'ln', 'layer_norm'], + 'embedding': ['emb', 'embedding', 'token'], + } + + print("\nPattern matching analysis:") + for category, pattern_list in patterns.items(): + matching_keys = [] + for key in keys: + if any(pattern in key.lower() for pattern in pattern_list): + matching_keys.append(key) + + if matching_keys: + print(f"\n{category.upper()} ({len(matching_keys)} keys):") + for key in matching_keys[:5]: + print(f" {key}") + if len(matching_keys) > 5: + print(f" ... and {len(matching_keys) - 5} more") + + print("\n" + "="*80) + + # Try to identify architecture + print("\nArchitecture detection:") + key_str = ' '.join(keys).lower() + + if 'double_blocks' in key_str or 'single_blocks' in key_str: + print(" -> Likely a Flux/DiT architecture (double_blocks/single_blocks)") + elif 'joint_blocks' in key_str: + print(" -> Likely a SD3/MMDiT architecture (joint_blocks)") + elif 'input_blocks' in key_str or 'output_blocks' in key_str: + print(" -> Likely a SD1.5/SDXL architecture (UNet)") + else: + print(" -> Unknown architecture") + + except Exception as e: + print(f"Error loading LoRA: {e}") + import traceback + traceback.print_exc() + +if __name__ == "__main__": + if len(sys.argv) < 2: + print("Usage: python debug_keys.py ") + print("\nExample:") + print(" python debug_keys.py /path/to/your/wan2.2_lora.safetensors") + sys.exit(1) + + analyze_lora_keys(sys.argv[1]) diff --git a/pyproject.toml b/pyproject.toml index f286d15..385f6cf 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [project] name = "lora-merger-comfyui" description = "An extension for merging LoRAs. Offers a wide range of LoRA merge techniques (including dare) and XY plots. XY plots require efficiency nodes." -version = "2.0.0" +version = "2.1.0" license = "MIT" [project.urls] diff --git a/src/lora_decompose.py b/src/lora_decompose.py index 8f44535..1f15618 100644 --- a/src/lora_decompose.py +++ b/src/lora_decompose.py @@ -4,6 +4,7 @@ import time from typing import Optional, Set import torch +import comfy from .architectures.sd_lora import analyse_keys, calc_up_down_alphas from .types import LORA_TENSORS_BY_LAYER, LORA_STACK, LORA_TENSOR_DICT diff --git a/src/merge/utils.py b/src/merge/utils.py index c1b9154..11bb0ce 100644 --- a/src/merge/utils.py +++ b/src/merge/utils.py @@ -100,7 +100,8 @@ def parse_layer_filter(layer_filter: LayerFilterType) -> Optional[LayerComponent def apply_layer_filter( patch_dict: LORA_KEY_DICT, - layer_filter: Optional[LayerComponentSet] + layer_filter: Optional[LayerComponentSet], + detect_architecture: bool = True ) -> LORA_KEY_DICT: """ Apply layer component filter to patch dictionary. @@ -111,22 +112,64 @@ def apply_layer_filter( Args: patch_dict: Dictionary of layer key -> LoRAAdapter layer_filter: Set of component names to keep, or None for no filtering + detect_architecture: Whether to detect and log architecture (default: True) Returns: Filtered patch dictionary containing only matching layers + Note: + Uses component-based matching (split by '.') to avoid false positives + from substring matches (e.g., 'ff' in 'diffusion_model'). + Example: - >>> patches = {"attn1.weight": adapter1, "ff.weight": adapter2, "other": adapter3} + >>> patches = {"model.attn1.weight": adapter1, "model.ff.weight": adapter2} >>> filtered = apply_layer_filter(patches, {"attn1", "attn2"}) - >>> # Returns only {"attn1.weight": adapter1} + >>> # Returns only {"model.attn1.weight": adapter1} """ + from ..utils.layer_filter import detect_lora_architecture + num_keys = len(patch_dict.keys()) + # Detect architecture before filtering + if detect_architecture and patch_dict: + arch_name, arch_meta = detect_lora_architecture(patch_dict) + total_keys = arch_meta.get("total_keys", num_keys) + + if arch_name != "Unknown": + logging.info(f"Detected {arch_name} architecture ({total_keys} keys)") + else: + logging.debug(f"Processing LoRA ({total_keys} keys, architecture: {arch_name})") + if layer_filter: + import re + + def matches_filter(key) -> bool: + """ + Check if key matches any filter component. + + Uses word-boundary aware matching to avoid false positives. + For example, 'ff' will match 'ff_net' or '.ff.' but not 'diffusion'. + """ + # Handle tuple keys from ComfyUI + key_str = str(key[0]) if isinstance(key, tuple) else str(key) + key_lower = key_str.lower() + + for filter_pattern in layer_filter: + pattern_lower = filter_pattern.lower() + + # Create regex pattern with word boundaries + # Match pattern when surrounded by dots, underscores, or at start/end + regex_pattern = r'(?:^|[._])' + re.escape(pattern_lower) + r'(?:[._]|$)' + + if re.search(regex_pattern, key_lower): + return True + + return False + patch_dict = { k0: v0 for k0, v0 in patch_dict.items() - if any(layer in k0 for layer in layer_filter) + if matches_filter(k0) } logging.info( diff --git a/src/utils/__init__.py b/src/utils/__init__.py index 09a1f65..0736e1e 100644 --- a/src/utils/__init__.py +++ b/src/utils/__init__.py @@ -3,15 +3,17 @@ Utilities package for LoRA Power-Merger. Provides helper utilities including: - Layer filtering +- Architecture detection - Progress tracking - Configuration constants """ -from .layer_filter import LayerFilter +from .layer_filter import LayerFilter, detect_lora_architecture from .progress import ThreadSafeProgressBar from .config import * __all__ = [ 'LayerFilter', + 'detect_lora_architecture', 'ThreadSafeProgressBar', ] diff --git a/src/utils/config.py b/src/utils/config.py index 58e9360..bb18aee 100644 --- a/src/utils/config.py +++ b/src/utils/config.py @@ -86,10 +86,11 @@ PROGRESS_BAR_FORMAT = "{desc}: {percentage:3.0f}%|{bar}| {n_fmt}/{total_fmt}" # Layer Filter Constants # ============================================================================ -# Architecture-agnostic layer filter sets (works for both SD and DiT) -ATTENTION_LAYERS = {"attn1", "attn2", "attention"} -MLP_LAYERS = {"ff", "mlp", "feed_forward"} -ATTENTION_MLP_LAYERS = {"attn1", "attn2", "attention", "ff", "mlp", "feed_forward"} +# Architecture-agnostic layer filter sets (works for SD, DiT, Flux, and Wan) +# Note: 'attn' is added as a general pattern to catch Flux keys like 'img_attn_proj' +ATTENTION_LAYERS = {"attn", "attn1", "attn2", "attention", "self_attn", "cross_attn"} +MLP_LAYERS = {"ff", "mlp", "feed_forward", "ffn"} +ATTENTION_MLP_LAYERS = {"attn", "attn1", "attn2", "attention", "self_attn", "cross_attn", "ff", "mlp", "feed_forward", "ffn"} # Legacy architecture-specific constants (deprecated, kept for backward compatibility) SD_ATTENTION_LAYERS = {"attn1", "attn2"} @@ -98,6 +99,8 @@ SD_ATTENTION_MLP_LAYERS = {"attn1", "attn2", "ff"} SD_PROJECTION_LAYERS = {"proj_in", "proj_out"} DIT_ATTENTION_LAYERS = {"attention"} DIT_MLP_LAYERS = {"mlp", "feed_forward"} +WAN_ATTENTION_LAYERS = {"self_attn", "cross_attn"} +WAN_MLP_LAYERS = {"ffn"} # ============================================================================ @@ -178,6 +181,8 @@ __all__ = [ 'SD_PROJECTION_LAYERS', 'DIT_ATTENTION_LAYERS', 'DIT_MLP_LAYERS', + 'WAN_ATTENTION_LAYERS', + 'WAN_MLP_LAYERS', # File I/O 'LORA_FILE_EXTENSIONS', diff --git a/src/utils/layer_filter.py b/src/utils/layer_filter.py index 0b39070..21157af 100644 --- a/src/utils/layer_filter.py +++ b/src/utils/layer_filter.py @@ -4,7 +4,7 @@ Layer filtering utilities for LoRA Power-Merger. Provides LayerFilter class for selective layer merging operations. """ -from typing import Set, Optional, Dict, Any +from typing import Set, Optional, Dict, Any, Tuple from ..types import LORA_KEY_DICT, LayerComponentSet from .config import ( ATTENTION_LAYERS, @@ -13,6 +13,123 @@ from .config import ( ) +def detect_lora_architecture(patch_dict: LORA_KEY_DICT, sample_size: int = 20) -> Tuple[str, Dict[str, Any]]: + """ + Detect the architecture of a LoRA by analyzing its layer keys. + + Args: + patch_dict: Dictionary of LoRA patches + sample_size: Number of keys to sample for detection (default: 20) + + Returns: + Tuple of (architecture_name, metadata_dict) + + Examples: + >>> arch, meta = detect_lora_architecture(lora_patches) + >>> print(f"Detected {arch} architecture") + >>> # "Detected Wan 2.2 architecture" + """ + if not patch_dict: + return "Unknown", {"reason": "Empty patch dictionary"} + + # Sample keys for analysis + all_keys = list(patch_dict.keys()) + sample_keys = all_keys[:min(sample_size, len(all_keys))] + + # Convert keys to strings (handle tuple keys from ComfyUI) + key_strings = [str(k[0]) if isinstance(k, tuple) else str(k) for k in sample_keys] + all_keys_str = ' '.join(key_strings).lower() + + metadata = { + "total_keys": len(all_keys), + "sample_size": len(sample_keys), + "confidence": "high" + } + + # Architecture detection patterns (order matters - most specific first) + + # 1. Wan 2.2: diffusion_model.blocks.N.{self_attn,cross_attn,ffn} + if 'diffusion_model.blocks.' in all_keys_str and ('self_attn' in all_keys_str or 'cross_attn' in all_keys_str): + if 'ffn' in all_keys_str: + metadata["attention_type"] = "self_attn + cross_attn" + metadata["mlp_type"] = "ffn" + return "Wan 2.2", metadata + + # 2. Flux: double_blocks/single_blocks with img_attn/txt_attn and img_mlp/txt_mlp + if 'double_blocks' in all_keys_str or 'single_blocks' in all_keys_str: + has_img_attn = 'img_attn' in all_keys_str + has_txt_attn = 'txt_attn' in all_keys_str + has_img_mlp = 'img_mlp' in all_keys_str + has_txt_mlp = 'txt_mlp' in all_keys_str + + if (has_img_attn or has_txt_attn) and (has_img_mlp or has_txt_mlp): + metadata["architecture_type"] = "Dual-stream transformer" + metadata["has_double_blocks"] = 'double_blocks' in all_keys_str + metadata["has_single_blocks"] = 'single_blocks' in all_keys_str + return "Flux", metadata + + # 3. Qwen Image Edit: transformer_blocks.N.attn.* and {img_mlp,txt_mlp} + if 'transformer_blocks.' in all_keys_str and '.attn.' in all_keys_str: + has_img_mlp = 'img_mlp' in all_keys_str + has_txt_mlp = 'txt_mlp' in all_keys_str + + if has_img_mlp or has_txt_mlp: + metadata["architecture_type"] = "Image-text transformer" + metadata["mlp_type"] = "img_mlp + txt_mlp" + return "Qwen Image Edit", metadata + + # 4. zImage: diffusion_model.layers.N with feed_forward and adaLN_modulation + if 'diffusion_model.layers.' in all_keys_str and 'feed_forward' in all_keys_str: + if 'adaln_modulation' in all_keys_str: + metadata["architecture_type"] = "Pure DiT" + metadata["has_adaptive_norm"] = True + metadata["attention_type"] = "attention" + metadata["mlp_type"] = "feed_forward" + return "zImage", metadata + + # 5. Generic DiT: diffusion_model.layers.N.{attention,feed_forward} + if 'diffusion_model.layers.' in all_keys_str and '.attention.' in all_keys_str: + metadata["architecture_type"] = "DiT (Diffusion Transformer)" + metadata["attention_type"] = "attention" + metadata["mlp_type"] = "mlp or feed_forward" + return "DiT", metadata + + # 6. Stable Diffusion: lora_unet with attn1/attn2 and ff + if 'lora_unet' in all_keys_str or 'unet' in all_keys_str: + has_attn1 = 'attn1' in all_keys_str + has_attn2 = 'attn2' in all_keys_str + has_ff = '_ff' in all_keys_str + + if has_attn1 or has_attn2: + # Determine if SDXL or SD1.5 based on key patterns + if 'down_blocks' in all_keys_str or 'up_blocks' in all_keys_str: + metadata["architecture_type"] = "UNet" + metadata["attention_type"] = "attn1 + attn2" + metadata["mlp_type"] = "ff" + + # Try to distinguish SDXL vs SD1.5 by complexity + if len(all_keys) > 500: + return "Stable Diffusion XL", metadata + else: + return "Stable Diffusion 1.5", metadata + + # 7. Fallback: Unknown architecture + metadata["confidence"] = "low" + metadata["reason"] = "No matching architecture pattern found" + + # Provide hints about what was found + patterns_found = [] + if 'attention' in all_keys_str: + patterns_found.append("attention layers") + if 'mlp' in all_keys_str or 'feed_forward' in all_keys_str or 'ff' in all_keys_str: + patterns_found.append("MLP/feedforward layers") + + if patterns_found: + metadata["patterns_found"] = patterns_found + + return "Unknown", metadata + + class LayerFilter: """ Layer filtering for selective LoRA merging. @@ -60,37 +177,81 @@ class LayerFilter: f"filter_spec must be None, str, or set. Got {type(filter_spec)}" ) - def apply(self, patch_dict: LORA_KEY_DICT) -> LORA_KEY_DICT: + def apply(self, patch_dict: LORA_KEY_DICT, detect_architecture: bool = True) -> LORA_KEY_DICT: """ Apply filter to patch dictionary. Args: patch_dict: Dictionary of layer key -> LoRAAdapter + detect_architecture: Whether to detect and log architecture (default: True) Returns: Filtered patch dictionary + Note: + Uses component-based matching (split by '.') to avoid false positives + from substring matches (e.g., 'ff' in 'diffusion_model'). + Example: >>> filter = LayerFilter("attn-only") >>> filtered = filter.apply(lora_patches) """ + import logging + + # Detect architecture before filtering + if detect_architecture and patch_dict: + arch_name, arch_meta = detect_lora_architecture(patch_dict) + total_keys = arch_meta.get("total_keys", len(patch_dict)) + + if arch_name != "Unknown": + logging.info(f"Detected {arch_name} architecture ({total_keys} keys)") + else: + logging.info(f"Processing LoRA ({total_keys} keys, architecture: {arch_name})") + if self.filter_set is None: # No filtering return patch_dict original_count = len(patch_dict) - # Filter to only include keys that contain any of the filter components + def matches_filter(key) -> bool: + """ + Check if key matches any filter component. + + Uses word-boundary aware matching to avoid false positives. + For example, 'ff' will match 'ff_net' or '.ff.' but not 'diffusion'. + """ + import re + + # Handle tuple keys from ComfyUI + key_str = str(key[0]) if isinstance(key, tuple) else str(key) + key_lower = key_str.lower() + + for filter_pattern in self.filter_set: + pattern_lower = filter_pattern.lower() + + # Create regex pattern with word boundaries + # \b doesn't work well with underscores, so use custom pattern + # Match pattern when it appears: + # - at start/end of string + # - surrounded by dots, underscores, or other non-alphanumeric chars + regex_pattern = r'(?:^|[._])' + re.escape(pattern_lower) + r'(?:[._]|$)' + + if re.search(regex_pattern, key_lower): + return True + + return False + + # Filter to only include keys that match filter components filtered_dict = { key: value for key, value in patch_dict.items() - if any(component in key for component in self.filter_set) + if matches_filter(key) } filtered_count = original_count - len(filtered_dict) if filtered_count > 0: - import logging logging.info( f"Layer filter: kept {len(filtered_dict)}/{original_count} keys " f"({filtered_count} filtered out)" @@ -122,17 +283,37 @@ class LayerFilter: """Check if filter would exclude all layers.""" return self.filter_set is not None and len(self.filter_set) == 0 - def matches(self, layer_key: str) -> bool: + def matches(self, layer_key) -> bool: """ Check if a layer key matches the filter. Args: - layer_key: Layer key to check + layer_key: Layer key to check (can be string or tuple) Returns: True if layer matches filter (or no filter), False otherwise + + Note: + Uses word-boundary aware matching to avoid false positives. + For example, 'ff' will match 'ff_net' or '.ff.' but not 'diffusion'. """ if self.filter_set is None: return True - return any(component in layer_key for component in self.filter_set) + import re + + # Handle tuple keys from ComfyUI + key_str = str(layer_key[0]) if isinstance(layer_key, tuple) else str(layer_key) + key_lower = key_str.lower() + + for filter_pattern in self.filter_set: + pattern_lower = filter_pattern.lower() + + # Create regex pattern with word boundaries + # Match pattern when surrounded by dots, underscores, or at start/end + regex_pattern = r'(?:^|[._])' + re.escape(pattern_lower) + r'(?:[._]|$)' + + if re.search(regex_pattern, key_lower): + return True + + return False diff --git a/tests/lora_keys/flux_lora.txt b/tests/lora_keys/flux_lora.txt new file mode 100644 index 0000000..db4f079 --- /dev/null +++ b/tests/lora_keys/flux_lora.txt @@ -0,0 +1,366 @@ +Analyzing LoRA: Flux/Test-F1-LoRA.safetensors + +Total keys: 912 + +Sample keys (first 20): + lora_unet_double_blocks_0_img_attn_proj.alpha + lora_unet_double_blocks_0_img_attn_proj.lora_down.weight + lora_unet_double_blocks_0_img_attn_proj.lora_up.weight + lora_unet_double_blocks_0_img_attn_qkv.alpha + lora_unet_double_blocks_0_img_attn_qkv.lora_down.weight + lora_unet_double_blocks_0_img_attn_qkv.lora_up.weight + lora_unet_double_blocks_0_img_mlp_0.alpha + lora_unet_double_blocks_0_img_mlp_0.lora_down.weight + lora_unet_double_blocks_0_img_mlp_0.lora_up.weight + lora_unet_double_blocks_0_img_mlp_2.alpha + lora_unet_double_blocks_0_img_mlp_2.lora_down.weight + lora_unet_double_blocks_0_img_mlp_2.lora_up.weight + lora_unet_double_blocks_0_img_mod_lin.alpha + lora_unet_double_blocks_0_img_mod_lin.lora_down.weight + lora_unet_double_blocks_0_img_mod_lin.lora_up.weight + lora_unet_double_blocks_0_txt_attn_proj.alpha + lora_unet_double_blocks_0_txt_attn_proj.lora_down.weight + lora_unet_double_blocks_0_txt_attn_proj.lora_up.weight + lora_unet_double_blocks_0_txt_attn_qkv.alpha + lora_unet_double_blocks_0_txt_attn_qkv.lora_down.weight + +================================================================================ + +Unique layer components found: + lora_unet_double_blocks_0_img_attn_proj + lora_unet_double_blocks_0_img_attn_qkv + lora_unet_double_blocks_0_img_mlp_0 + lora_unet_double_blocks_0_img_mlp_2 + lora_unet_double_blocks_0_img_mod_lin + lora_unet_double_blocks_0_txt_attn_proj + lora_unet_double_blocks_0_txt_attn_qkv + lora_unet_double_blocks_0_txt_mlp_0 + lora_unet_double_blocks_0_txt_mlp_2 + lora_unet_double_blocks_0_txt_mod_lin + lora_unet_double_blocks_10_img_attn_proj + lora_unet_double_blocks_10_img_attn_qkv + lora_unet_double_blocks_10_img_mlp_0 + lora_unet_double_blocks_10_img_mlp_2 + lora_unet_double_blocks_10_img_mod_lin + lora_unet_double_blocks_10_txt_attn_proj + lora_unet_double_blocks_10_txt_attn_qkv + lora_unet_double_blocks_10_txt_mlp_0 + lora_unet_double_blocks_10_txt_mlp_2 + lora_unet_double_blocks_10_txt_mod_lin + lora_unet_double_blocks_11_img_attn_proj + lora_unet_double_blocks_11_img_attn_qkv + lora_unet_double_blocks_11_img_mlp_0 + lora_unet_double_blocks_11_img_mlp_2 + lora_unet_double_blocks_11_img_mod_lin + lora_unet_double_blocks_11_txt_attn_proj + lora_unet_double_blocks_11_txt_attn_qkv + lora_unet_double_blocks_11_txt_mlp_0 + lora_unet_double_blocks_11_txt_mlp_2 + lora_unet_double_blocks_11_txt_mod_lin + lora_unet_double_blocks_12_img_attn_proj + lora_unet_double_blocks_12_img_attn_qkv + lora_unet_double_blocks_12_img_mlp_0 + lora_unet_double_blocks_12_img_mlp_2 + lora_unet_double_blocks_12_img_mod_lin + lora_unet_double_blocks_12_txt_attn_proj + lora_unet_double_blocks_12_txt_attn_qkv + lora_unet_double_blocks_12_txt_mlp_0 + lora_unet_double_blocks_12_txt_mlp_2 + lora_unet_double_blocks_12_txt_mod_lin + lora_unet_double_blocks_13_img_attn_proj + lora_unet_double_blocks_13_img_attn_qkv + lora_unet_double_blocks_13_img_mlp_0 + lora_unet_double_blocks_13_img_mlp_2 + lora_unet_double_blocks_13_img_mod_lin + lora_unet_double_blocks_13_txt_attn_proj + lora_unet_double_blocks_13_txt_attn_qkv + lora_unet_double_blocks_13_txt_mlp_0 + lora_unet_double_blocks_13_txt_mlp_2 + lora_unet_double_blocks_13_txt_mod_lin + lora_unet_double_blocks_14_img_attn_proj + lora_unet_double_blocks_14_img_attn_qkv + lora_unet_double_blocks_14_img_mlp_0 + lora_unet_double_blocks_14_img_mlp_2 + lora_unet_double_blocks_14_img_mod_lin + lora_unet_double_blocks_14_txt_attn_proj + lora_unet_double_blocks_14_txt_attn_qkv + lora_unet_double_blocks_14_txt_mlp_0 + lora_unet_double_blocks_14_txt_mlp_2 + lora_unet_double_blocks_14_txt_mod_lin + lora_unet_double_blocks_15_img_attn_proj + lora_unet_double_blocks_15_img_attn_qkv + lora_unet_double_blocks_15_img_mlp_0 + lora_unet_double_blocks_15_img_mlp_2 + lora_unet_double_blocks_15_img_mod_lin + lora_unet_double_blocks_15_txt_attn_proj + lora_unet_double_blocks_15_txt_attn_qkv + lora_unet_double_blocks_15_txt_mlp_0 + lora_unet_double_blocks_15_txt_mlp_2 + lora_unet_double_blocks_15_txt_mod_lin + lora_unet_double_blocks_16_img_attn_proj + lora_unet_double_blocks_16_img_attn_qkv + lora_unet_double_blocks_16_img_mlp_0 + lora_unet_double_blocks_16_img_mlp_2 + lora_unet_double_blocks_16_img_mod_lin + lora_unet_double_blocks_16_txt_attn_proj + lora_unet_double_blocks_16_txt_attn_qkv + lora_unet_double_blocks_16_txt_mlp_0 + lora_unet_double_blocks_16_txt_mlp_2 + lora_unet_double_blocks_16_txt_mod_lin + lora_unet_double_blocks_17_img_attn_proj + lora_unet_double_blocks_17_img_attn_qkv + lora_unet_double_blocks_17_img_mlp_0 + lora_unet_double_blocks_17_img_mlp_2 + lora_unet_double_blocks_17_img_mod_lin + lora_unet_double_blocks_17_txt_attn_proj + lora_unet_double_blocks_17_txt_attn_qkv + lora_unet_double_blocks_17_txt_mlp_0 + lora_unet_double_blocks_17_txt_mlp_2 + lora_unet_double_blocks_17_txt_mod_lin + lora_unet_double_blocks_18_img_attn_proj + lora_unet_double_blocks_18_img_attn_qkv + lora_unet_double_blocks_18_img_mlp_0 + lora_unet_double_blocks_18_img_mlp_2 + lora_unet_double_blocks_18_img_mod_lin + lora_unet_double_blocks_18_txt_attn_proj + lora_unet_double_blocks_18_txt_attn_qkv + lora_unet_double_blocks_18_txt_mlp_0 + lora_unet_double_blocks_18_txt_mlp_2 + lora_unet_double_blocks_18_txt_mod_lin + lora_unet_double_blocks_1_img_attn_proj + lora_unet_double_blocks_1_img_attn_qkv + lora_unet_double_blocks_1_img_mlp_0 + lora_unet_double_blocks_1_img_mlp_2 + lora_unet_double_blocks_1_img_mod_lin + lora_unet_double_blocks_1_txt_attn_proj + lora_unet_double_blocks_1_txt_attn_qkv + lora_unet_double_blocks_1_txt_mlp_0 + lora_unet_double_blocks_1_txt_mlp_2 + lora_unet_double_blocks_1_txt_mod_lin + lora_unet_double_blocks_2_img_attn_proj + lora_unet_double_blocks_2_img_attn_qkv + lora_unet_double_blocks_2_img_mlp_0 + lora_unet_double_blocks_2_img_mlp_2 + lora_unet_double_blocks_2_img_mod_lin + lora_unet_double_blocks_2_txt_attn_proj + lora_unet_double_blocks_2_txt_attn_qkv + lora_unet_double_blocks_2_txt_mlp_0 + lora_unet_double_blocks_2_txt_mlp_2 + lora_unet_double_blocks_2_txt_mod_lin + lora_unet_double_blocks_3_img_attn_proj + lora_unet_double_blocks_3_img_attn_qkv + lora_unet_double_blocks_3_img_mlp_0 + lora_unet_double_blocks_3_img_mlp_2 + lora_unet_double_blocks_3_img_mod_lin + lora_unet_double_blocks_3_txt_attn_proj + lora_unet_double_blocks_3_txt_attn_qkv + lora_unet_double_blocks_3_txt_mlp_0 + lora_unet_double_blocks_3_txt_mlp_2 + lora_unet_double_blocks_3_txt_mod_lin + lora_unet_double_blocks_4_img_attn_proj + lora_unet_double_blocks_4_img_attn_qkv + lora_unet_double_blocks_4_img_mlp_0 + lora_unet_double_blocks_4_img_mlp_2 + lora_unet_double_blocks_4_img_mod_lin + lora_unet_double_blocks_4_txt_attn_proj + lora_unet_double_blocks_4_txt_attn_qkv + lora_unet_double_blocks_4_txt_mlp_0 + lora_unet_double_blocks_4_txt_mlp_2 + lora_unet_double_blocks_4_txt_mod_lin + lora_unet_double_blocks_5_img_attn_proj + lora_unet_double_blocks_5_img_attn_qkv + lora_unet_double_blocks_5_img_mlp_0 + lora_unet_double_blocks_5_img_mlp_2 + lora_unet_double_blocks_5_img_mod_lin + lora_unet_double_blocks_5_txt_attn_proj + lora_unet_double_blocks_5_txt_attn_qkv + lora_unet_double_blocks_5_txt_mlp_0 + lora_unet_double_blocks_5_txt_mlp_2 + lora_unet_double_blocks_5_txt_mod_lin + lora_unet_double_blocks_6_img_attn_proj + lora_unet_double_blocks_6_img_attn_qkv + lora_unet_double_blocks_6_img_mlp_0 + lora_unet_double_blocks_6_img_mlp_2 + lora_unet_double_blocks_6_img_mod_lin + lora_unet_double_blocks_6_txt_attn_proj + lora_unet_double_blocks_6_txt_attn_qkv + lora_unet_double_blocks_6_txt_mlp_0 + lora_unet_double_blocks_6_txt_mlp_2 + lora_unet_double_blocks_6_txt_mod_lin + lora_unet_double_blocks_7_img_attn_proj + lora_unet_double_blocks_7_img_attn_qkv + lora_unet_double_blocks_7_img_mlp_0 + lora_unet_double_blocks_7_img_mlp_2 + lora_unet_double_blocks_7_img_mod_lin + lora_unet_double_blocks_7_txt_attn_proj + lora_unet_double_blocks_7_txt_attn_qkv + lora_unet_double_blocks_7_txt_mlp_0 + lora_unet_double_blocks_7_txt_mlp_2 + lora_unet_double_blocks_7_txt_mod_lin + lora_unet_double_blocks_8_img_attn_proj + lora_unet_double_blocks_8_img_attn_qkv + lora_unet_double_blocks_8_img_mlp_0 + lora_unet_double_blocks_8_img_mlp_2 + lora_unet_double_blocks_8_img_mod_lin + lora_unet_double_blocks_8_txt_attn_proj + lora_unet_double_blocks_8_txt_attn_qkv + lora_unet_double_blocks_8_txt_mlp_0 + lora_unet_double_blocks_8_txt_mlp_2 + lora_unet_double_blocks_8_txt_mod_lin + lora_unet_double_blocks_9_img_attn_proj + lora_unet_double_blocks_9_img_attn_qkv + lora_unet_double_blocks_9_img_mlp_0 + lora_unet_double_blocks_9_img_mlp_2 + lora_unet_double_blocks_9_img_mod_lin + lora_unet_double_blocks_9_txt_attn_proj + lora_unet_double_blocks_9_txt_attn_qkv + lora_unet_double_blocks_9_txt_mlp_0 + lora_unet_double_blocks_9_txt_mlp_2 + lora_unet_double_blocks_9_txt_mod_lin + lora_unet_single_blocks_0_linear1 + lora_unet_single_blocks_0_linear2 + lora_unet_single_blocks_0_modulation_lin + lora_unet_single_blocks_10_linear1 + lora_unet_single_blocks_10_linear2 + lora_unet_single_blocks_10_modulation_lin + lora_unet_single_blocks_11_linear1 + lora_unet_single_blocks_11_linear2 + lora_unet_single_blocks_11_modulation_lin + lora_unet_single_blocks_12_linear1 + lora_unet_single_blocks_12_linear2 + lora_unet_single_blocks_12_modulation_lin + lora_unet_single_blocks_13_linear1 + lora_unet_single_blocks_13_linear2 + lora_unet_single_blocks_13_modulation_lin + lora_unet_single_blocks_14_linear1 + lora_unet_single_blocks_14_linear2 + lora_unet_single_blocks_14_modulation_lin + lora_unet_single_blocks_15_linear1 + lora_unet_single_blocks_15_linear2 + lora_unet_single_blocks_15_modulation_lin + lora_unet_single_blocks_16_linear1 + lora_unet_single_blocks_16_linear2 + lora_unet_single_blocks_16_modulation_lin + lora_unet_single_blocks_17_linear1 + lora_unet_single_blocks_17_linear2 + lora_unet_single_blocks_17_modulation_lin + lora_unet_single_blocks_18_linear1 + lora_unet_single_blocks_18_linear2 + lora_unet_single_blocks_18_modulation_lin + lora_unet_single_blocks_19_linear1 + lora_unet_single_blocks_19_linear2 + lora_unet_single_blocks_19_modulation_lin + lora_unet_single_blocks_1_linear1 + lora_unet_single_blocks_1_linear2 + lora_unet_single_blocks_1_modulation_lin + lora_unet_single_blocks_20_linear1 + lora_unet_single_blocks_20_linear2 + lora_unet_single_blocks_20_modulation_lin + lora_unet_single_blocks_21_linear1 + lora_unet_single_blocks_21_linear2 + lora_unet_single_blocks_21_modulation_lin + lora_unet_single_blocks_22_linear1 + lora_unet_single_blocks_22_linear2 + lora_unet_single_blocks_22_modulation_lin + lora_unet_single_blocks_23_linear1 + lora_unet_single_blocks_23_linear2 + lora_unet_single_blocks_23_modulation_lin + lora_unet_single_blocks_24_linear1 + lora_unet_single_blocks_24_linear2 + lora_unet_single_blocks_24_modulation_lin + lora_unet_single_blocks_25_linear1 + lora_unet_single_blocks_25_linear2 + lora_unet_single_blocks_25_modulation_lin + lora_unet_single_blocks_26_linear1 + lora_unet_single_blocks_26_linear2 + lora_unet_single_blocks_26_modulation_lin + lora_unet_single_blocks_27_linear1 + lora_unet_single_blocks_27_linear2 + lora_unet_single_blocks_27_modulation_lin + lora_unet_single_blocks_28_linear1 + lora_unet_single_blocks_28_linear2 + lora_unet_single_blocks_28_modulation_lin + lora_unet_single_blocks_29_linear1 + lora_unet_single_blocks_29_linear2 + lora_unet_single_blocks_29_modulation_lin + lora_unet_single_blocks_2_linear1 + lora_unet_single_blocks_2_linear2 + lora_unet_single_blocks_2_modulation_lin + lora_unet_single_blocks_30_linear1 + lora_unet_single_blocks_30_linear2 + lora_unet_single_blocks_30_modulation_lin + lora_unet_single_blocks_31_linear1 + lora_unet_single_blocks_31_linear2 + lora_unet_single_blocks_31_modulation_lin + lora_unet_single_blocks_32_linear1 + lora_unet_single_blocks_32_linear2 + lora_unet_single_blocks_32_modulation_lin + lora_unet_single_blocks_33_linear1 + lora_unet_single_blocks_33_linear2 + lora_unet_single_blocks_33_modulation_lin + lora_unet_single_blocks_34_linear1 + lora_unet_single_blocks_34_linear2 + lora_unet_single_blocks_34_modulation_lin + lora_unet_single_blocks_35_linear1 + lora_unet_single_blocks_35_linear2 + lora_unet_single_blocks_35_modulation_lin + lora_unet_single_blocks_36_linear1 + lora_unet_single_blocks_36_linear2 + lora_unet_single_blocks_36_modulation_lin + lora_unet_single_blocks_37_linear1 + lora_unet_single_blocks_37_linear2 + lora_unet_single_blocks_37_modulation_lin + lora_unet_single_blocks_3_linear1 + lora_unet_single_blocks_3_linear2 + lora_unet_single_blocks_3_modulation_lin + lora_unet_single_blocks_4_linear1 + lora_unet_single_blocks_4_linear2 + lora_unet_single_blocks_4_modulation_lin + lora_unet_single_blocks_5_linear1 + lora_unet_single_blocks_5_linear2 + lora_unet_single_blocks_5_modulation_lin + lora_unet_single_blocks_6_linear1 + lora_unet_single_blocks_6_linear2 + lora_unet_single_blocks_6_modulation_lin + lora_unet_single_blocks_7_linear1 + lora_unet_single_blocks_7_linear2 + lora_unet_single_blocks_7_modulation_lin + lora_unet_single_blocks_8_linear1 + lora_unet_single_blocks_8_linear2 + lora_unet_single_blocks_8_modulation_lin + lora_unet_single_blocks_9_linear1 + lora_unet_single_blocks_9_linear2 + lora_unet_single_blocks_9_modulation_lin + +================================================================================ + +Pattern matching analysis: + +ATTENTION (228 keys): + lora_unet_double_blocks_0_img_attn_proj.alpha + lora_unet_double_blocks_0_img_attn_proj.lora_down.weight + lora_unet_double_blocks_0_img_attn_proj.lora_up.weight + lora_unet_double_blocks_0_img_attn_qkv.alpha + lora_unet_double_blocks_0_img_attn_qkv.lora_down.weight + ... and 223 more + +MLP/FEEDFORWARD (228 keys): + lora_unet_double_blocks_0_img_mlp_0.alpha + lora_unet_double_blocks_0_img_mlp_0.lora_down.weight + lora_unet_double_blocks_0_img_mlp_0.lora_up.weight + lora_unet_double_blocks_0_img_mlp_2.alpha + lora_unet_double_blocks_0_img_mlp_2.lora_down.weight + ... and 223 more + +PROJECTION (114 keys): + lora_unet_double_blocks_0_img_attn_proj.alpha + lora_unet_double_blocks_0_img_attn_proj.lora_down.weight + lora_unet_double_blocks_0_img_attn_proj.lora_up.weight + lora_unet_double_blocks_0_txt_attn_proj.alpha + lora_unet_double_blocks_0_txt_attn_proj.lora_down.weight + ... and 109 more + +================================================================================ + +Architecture detection: + -> Likely a Flux/DiT architecture (double_blocks/single_blocks) diff --git a/tests/lora_keys/qwen_image_edit_lora.txt b/tests/lora_keys/qwen_image_edit_lora.txt new file mode 100644 index 0000000..ba7ed47 --- /dev/null +++ b/tests/lora_keys/qwen_image_edit_lora.txt @@ -0,0 +1,136 @@ +Analyzing LoRA: loras/Qwen-LoRA.safetensors + +Total keys: 2160 + +Sample keys (first 20): + transformer_blocks.0.attn.add_k_proj.alpha + transformer_blocks.0.attn.add_k_proj.lora_down.weight + transformer_blocks.0.attn.add_k_proj.lora_up.weight + transformer_blocks.0.attn.add_q_proj.alpha + transformer_blocks.0.attn.add_q_proj.lora_down.weight + transformer_blocks.0.attn.add_q_proj.lora_up.weight + transformer_blocks.0.attn.add_v_proj.alpha + transformer_blocks.0.attn.add_v_proj.lora_down.weight + transformer_blocks.0.attn.add_v_proj.lora_up.weight + transformer_blocks.0.attn.to_add_out.alpha + transformer_blocks.0.attn.to_add_out.lora_down.weight + transformer_blocks.0.attn.to_add_out.lora_up.weight + transformer_blocks.0.attn.to_k.alpha + transformer_blocks.0.attn.to_k.lora_down.weight + transformer_blocks.0.attn.to_k.lora_up.weight + transformer_blocks.0.attn.to_out.0.alpha + transformer_blocks.0.attn.to_out.0.lora_down.weight + transformer_blocks.0.attn.to_out.0.lora_up.weight + transformer_blocks.0.attn.to_q.alpha + transformer_blocks.0.attn.to_q.lora_down.weight + +================================================================================ + +Unique layer components found: + 0 + 1 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 18 + 19 + 2 + 20 + 21 + 22 + 23 + 24 + 25 + 26 + 27 + 28 + 29 + 3 + 30 + 31 + 32 + 33 + 34 + 35 + 36 + 37 + 38 + 39 + 4 + 40 + 41 + 42 + 43 + 44 + 45 + 46 + 47 + 48 + 49 + 5 + 50 + 51 + 52 + 53 + 54 + 55 + 56 + 57 + 58 + 59 + 6 + 7 + 8 + 9 + add_k_proj + add_q_proj + add_v_proj + attn + img_mlp + net + proj + to_add_out + to_k + to_out + to_q + to_v + transformer_blocks + txt_mlp + +================================================================================ + +Pattern matching analysis: + +ATTENTION (1440 keys): + transformer_blocks.0.attn.add_k_proj.alpha + transformer_blocks.0.attn.add_k_proj.lora_down.weight + transformer_blocks.0.attn.add_k_proj.lora_up.weight + transformer_blocks.0.attn.add_q_proj.alpha + transformer_blocks.0.attn.add_q_proj.lora_down.weight + ... and 1435 more + +MLP/FEEDFORWARD (720 keys): + transformer_blocks.0.img_mlp.net.0.proj.alpha + transformer_blocks.0.img_mlp.net.0.proj.lora_down.weight + transformer_blocks.0.img_mlp.net.0.proj.lora_up.weight + transformer_blocks.0.img_mlp.net.2.alpha + transformer_blocks.0.img_mlp.net.2.lora_down.weight + ... and 715 more + +PROJECTION (900 keys): + transformer_blocks.0.attn.add_k_proj.alpha + transformer_blocks.0.attn.add_k_proj.lora_down.weight + transformer_blocks.0.attn.add_k_proj.lora_up.weight + transformer_blocks.0.attn.add_q_proj.alpha + transformer_blocks.0.attn.add_q_proj.lora_down.weight + ... and 895 more + +================================================================================ + +Architecture detection: + -> Unknown architecture \ No newline at end of file diff --git a/tests/lora_keys/sd_1_5_lora.txt b/tests/lora_keys/sd_1_5_lora.txt new file mode 100644 index 0000000..fe7f2b6 --- /dev/null +++ b/tests/lora_keys/sd_1_5_lora.txt @@ -0,0 +1,348 @@ +Analyzing LoRA: loras/SD_1.5_LoRA.safetensors + +Total keys: 834 + +Sample keys (first 20): + lora_unet_down_blocks_0_attentions_0_proj_in.alpha + lora_unet_down_blocks_0_attentions_0_proj_in.lora_down.weight + lora_unet_down_blocks_0_attentions_0_proj_in.lora_up.weight + lora_unet_down_blocks_0_attentions_0_proj_out.alpha + lora_unet_down_blocks_0_attentions_0_proj_out.lora_down.weight + lora_unet_down_blocks_0_attentions_0_proj_out.lora_up.weight + lora_unet_down_blocks_0_attentions_0_transformer_blocks_0_attn1_to_k.alpha + lora_unet_down_blocks_0_attentions_0_transformer_blocks_0_attn1_to_k.lora_down.weight + lora_unet_down_blocks_0_attentions_0_transformer_blocks_0_attn1_to_k.lora_up.weight + lora_unet_down_blocks_0_attentions_0_transformer_blocks_0_attn1_to_out_0.alpha + lora_unet_down_blocks_0_attentions_0_transformer_blocks_0_attn1_to_out_0.lora_down.weight + lora_unet_down_blocks_0_attentions_0_transformer_blocks_0_attn1_to_out_0.lora_up.weight + lora_unet_down_blocks_0_attentions_0_transformer_blocks_0_attn1_to_q.alpha + lora_unet_down_blocks_0_attentions_0_transformer_blocks_0_attn1_to_q.lora_down.weight + lora_unet_down_blocks_0_attentions_0_transformer_blocks_0_attn1_to_q.lora_up.weight + lora_unet_down_blocks_0_attentions_0_transformer_blocks_0_attn1_to_v.alpha + lora_unet_down_blocks_0_attentions_0_transformer_blocks_0_attn1_to_v.lora_down.weight + lora_unet_down_blocks_0_attentions_0_transformer_blocks_0_attn1_to_v.lora_up.weight + lora_unet_down_blocks_0_attentions_0_transformer_blocks_0_attn2_to_k.alpha + lora_unet_down_blocks_0_attentions_0_transformer_blocks_0_attn2_to_k.lora_down.weight + +================================================================================ + +Unique layer components found: + lora_unet_down_blocks_0_attentions_0_proj_in + lora_unet_down_blocks_0_attentions_0_proj_out + lora_unet_down_blocks_0_attentions_0_transformer_blocks_0_attn1_to_k + lora_unet_down_blocks_0_attentions_0_transformer_blocks_0_attn1_to_out_0 + lora_unet_down_blocks_0_attentions_0_transformer_blocks_0_attn1_to_q + lora_unet_down_blocks_0_attentions_0_transformer_blocks_0_attn1_to_v + lora_unet_down_blocks_0_attentions_0_transformer_blocks_0_attn2_to_k + lora_unet_down_blocks_0_attentions_0_transformer_blocks_0_attn2_to_out_0 + lora_unet_down_blocks_0_attentions_0_transformer_blocks_0_attn2_to_q + lora_unet_down_blocks_0_attentions_0_transformer_blocks_0_attn2_to_v + lora_unet_down_blocks_0_attentions_0_transformer_blocks_0_ff_net_0_proj + lora_unet_down_blocks_0_attentions_0_transformer_blocks_0_ff_net_2 + lora_unet_down_blocks_0_attentions_1_proj_in + lora_unet_down_blocks_0_attentions_1_proj_out + lora_unet_down_blocks_0_attentions_1_transformer_blocks_0_attn1_to_k + lora_unet_down_blocks_0_attentions_1_transformer_blocks_0_attn1_to_out_0 + lora_unet_down_blocks_0_attentions_1_transformer_blocks_0_attn1_to_q + lora_unet_down_blocks_0_attentions_1_transformer_blocks_0_attn1_to_v + lora_unet_down_blocks_0_attentions_1_transformer_blocks_0_attn2_to_k + lora_unet_down_blocks_0_attentions_1_transformer_blocks_0_attn2_to_out_0 + lora_unet_down_blocks_0_attentions_1_transformer_blocks_0_attn2_to_q + lora_unet_down_blocks_0_attentions_1_transformer_blocks_0_attn2_to_v + lora_unet_down_blocks_0_attentions_1_transformer_blocks_0_ff_net_0_proj + lora_unet_down_blocks_0_attentions_1_transformer_blocks_0_ff_net_2 + lora_unet_down_blocks_0_downsamplers_0_conv + lora_unet_down_blocks_0_resnets_0_conv1 + lora_unet_down_blocks_0_resnets_0_conv2 + lora_unet_down_blocks_0_resnets_0_time_emb_proj + lora_unet_down_blocks_0_resnets_1_conv1 + lora_unet_down_blocks_0_resnets_1_conv2 + lora_unet_down_blocks_0_resnets_1_time_emb_proj + lora_unet_down_blocks_1_attentions_0_proj_in + lora_unet_down_blocks_1_attentions_0_proj_out + lora_unet_down_blocks_1_attentions_0_transformer_blocks_0_attn1_to_k + lora_unet_down_blocks_1_attentions_0_transformer_blocks_0_attn1_to_out_0 + lora_unet_down_blocks_1_attentions_0_transformer_blocks_0_attn1_to_q + lora_unet_down_blocks_1_attentions_0_transformer_blocks_0_attn1_to_v + lora_unet_down_blocks_1_attentions_0_transformer_blocks_0_attn2_to_k + lora_unet_down_blocks_1_attentions_0_transformer_blocks_0_attn2_to_out_0 + lora_unet_down_blocks_1_attentions_0_transformer_blocks_0_attn2_to_q + lora_unet_down_blocks_1_attentions_0_transformer_blocks_0_attn2_to_v + lora_unet_down_blocks_1_attentions_0_transformer_blocks_0_ff_net_0_proj + lora_unet_down_blocks_1_attentions_0_transformer_blocks_0_ff_net_2 + lora_unet_down_blocks_1_attentions_1_proj_in + lora_unet_down_blocks_1_attentions_1_proj_out + lora_unet_down_blocks_1_attentions_1_transformer_blocks_0_attn1_to_k + lora_unet_down_blocks_1_attentions_1_transformer_blocks_0_attn1_to_out_0 + lora_unet_down_blocks_1_attentions_1_transformer_blocks_0_attn1_to_q + lora_unet_down_blocks_1_attentions_1_transformer_blocks_0_attn1_to_v + lora_unet_down_blocks_1_attentions_1_transformer_blocks_0_attn2_to_k + lora_unet_down_blocks_1_attentions_1_transformer_blocks_0_attn2_to_out_0 + lora_unet_down_blocks_1_attentions_1_transformer_blocks_0_attn2_to_q + lora_unet_down_blocks_1_attentions_1_transformer_blocks_0_attn2_to_v + lora_unet_down_blocks_1_attentions_1_transformer_blocks_0_ff_net_0_proj + lora_unet_down_blocks_1_attentions_1_transformer_blocks_0_ff_net_2 + lora_unet_down_blocks_1_downsamplers_0_conv + lora_unet_down_blocks_1_resnets_0_conv1 + lora_unet_down_blocks_1_resnets_0_conv2 + lora_unet_down_blocks_1_resnets_0_conv_shortcut + lora_unet_down_blocks_1_resnets_0_time_emb_proj + lora_unet_down_blocks_1_resnets_1_conv1 + lora_unet_down_blocks_1_resnets_1_conv2 + lora_unet_down_blocks_1_resnets_1_time_emb_proj + lora_unet_down_blocks_2_attentions_0_proj_in + lora_unet_down_blocks_2_attentions_0_proj_out + lora_unet_down_blocks_2_attentions_0_transformer_blocks_0_attn1_to_k + lora_unet_down_blocks_2_attentions_0_transformer_blocks_0_attn1_to_out_0 + lora_unet_down_blocks_2_attentions_0_transformer_blocks_0_attn1_to_q + lora_unet_down_blocks_2_attentions_0_transformer_blocks_0_attn1_to_v + lora_unet_down_blocks_2_attentions_0_transformer_blocks_0_attn2_to_k + lora_unet_down_blocks_2_attentions_0_transformer_blocks_0_attn2_to_out_0 + lora_unet_down_blocks_2_attentions_0_transformer_blocks_0_attn2_to_q + lora_unet_down_blocks_2_attentions_0_transformer_blocks_0_attn2_to_v + lora_unet_down_blocks_2_attentions_0_transformer_blocks_0_ff_net_0_proj + lora_unet_down_blocks_2_attentions_0_transformer_blocks_0_ff_net_2 + lora_unet_down_blocks_2_attentions_1_proj_in + lora_unet_down_blocks_2_attentions_1_proj_out + lora_unet_down_blocks_2_attentions_1_transformer_blocks_0_attn1_to_k + lora_unet_down_blocks_2_attentions_1_transformer_blocks_0_attn1_to_out_0 + lora_unet_down_blocks_2_attentions_1_transformer_blocks_0_attn1_to_q + lora_unet_down_blocks_2_attentions_1_transformer_blocks_0_attn1_to_v + lora_unet_down_blocks_2_attentions_1_transformer_blocks_0_attn2_to_k + lora_unet_down_blocks_2_attentions_1_transformer_blocks_0_attn2_to_out_0 + lora_unet_down_blocks_2_attentions_1_transformer_blocks_0_attn2_to_q + lora_unet_down_blocks_2_attentions_1_transformer_blocks_0_attn2_to_v + lora_unet_down_blocks_2_attentions_1_transformer_blocks_0_ff_net_0_proj + lora_unet_down_blocks_2_attentions_1_transformer_blocks_0_ff_net_2 + lora_unet_down_blocks_2_downsamplers_0_conv + lora_unet_down_blocks_2_resnets_0_conv1 + lora_unet_down_blocks_2_resnets_0_conv2 + lora_unet_down_blocks_2_resnets_0_conv_shortcut + lora_unet_down_blocks_2_resnets_0_time_emb_proj + lora_unet_down_blocks_2_resnets_1_conv1 + lora_unet_down_blocks_2_resnets_1_conv2 + lora_unet_down_blocks_2_resnets_1_time_emb_proj + lora_unet_down_blocks_3_resnets_0_conv1 + lora_unet_down_blocks_3_resnets_0_conv2 + lora_unet_down_blocks_3_resnets_0_time_emb_proj + lora_unet_down_blocks_3_resnets_1_conv1 + lora_unet_down_blocks_3_resnets_1_conv2 + lora_unet_down_blocks_3_resnets_1_time_emb_proj + lora_unet_mid_block_attentions_0_proj_in + lora_unet_mid_block_attentions_0_proj_out + lora_unet_mid_block_attentions_0_transformer_blocks_0_attn1_to_k + lora_unet_mid_block_attentions_0_transformer_blocks_0_attn1_to_out_0 + lora_unet_mid_block_attentions_0_transformer_blocks_0_attn1_to_q + lora_unet_mid_block_attentions_0_transformer_blocks_0_attn1_to_v + lora_unet_mid_block_attentions_0_transformer_blocks_0_attn2_to_k + lora_unet_mid_block_attentions_0_transformer_blocks_0_attn2_to_out_0 + lora_unet_mid_block_attentions_0_transformer_blocks_0_attn2_to_q + lora_unet_mid_block_attentions_0_transformer_blocks_0_attn2_to_v + lora_unet_mid_block_attentions_0_transformer_blocks_0_ff_net_0_proj + lora_unet_mid_block_attentions_0_transformer_blocks_0_ff_net_2 + lora_unet_mid_block_resnets_0_conv1 + lora_unet_mid_block_resnets_0_conv2 + lora_unet_mid_block_resnets_0_time_emb_proj + lora_unet_mid_block_resnets_1_conv1 + lora_unet_mid_block_resnets_1_conv2 + lora_unet_mid_block_resnets_1_time_emb_proj + lora_unet_up_blocks_0_resnets_0_conv1 + lora_unet_up_blocks_0_resnets_0_conv2 + lora_unet_up_blocks_0_resnets_0_conv_shortcut + lora_unet_up_blocks_0_resnets_0_time_emb_proj + lora_unet_up_blocks_0_resnets_1_conv1 + lora_unet_up_blocks_0_resnets_1_conv2 + lora_unet_up_blocks_0_resnets_1_conv_shortcut + lora_unet_up_blocks_0_resnets_1_time_emb_proj + lora_unet_up_blocks_0_resnets_2_conv1 + lora_unet_up_blocks_0_resnets_2_conv2 + lora_unet_up_blocks_0_resnets_2_conv_shortcut + lora_unet_up_blocks_0_resnets_2_time_emb_proj + lora_unet_up_blocks_0_upsamplers_0_conv + lora_unet_up_blocks_1_attentions_0_proj_in + lora_unet_up_blocks_1_attentions_0_proj_out + lora_unet_up_blocks_1_attentions_0_transformer_blocks_0_attn1_to_k + lora_unet_up_blocks_1_attentions_0_transformer_blocks_0_attn1_to_out_0 + lora_unet_up_blocks_1_attentions_0_transformer_blocks_0_attn1_to_q + lora_unet_up_blocks_1_attentions_0_transformer_blocks_0_attn1_to_v + lora_unet_up_blocks_1_attentions_0_transformer_blocks_0_attn2_to_k + lora_unet_up_blocks_1_attentions_0_transformer_blocks_0_attn2_to_out_0 + lora_unet_up_blocks_1_attentions_0_transformer_blocks_0_attn2_to_q + lora_unet_up_blocks_1_attentions_0_transformer_blocks_0_attn2_to_v + lora_unet_up_blocks_1_attentions_0_transformer_blocks_0_ff_net_0_proj + lora_unet_up_blocks_1_attentions_0_transformer_blocks_0_ff_net_2 + lora_unet_up_blocks_1_attentions_1_proj_in + lora_unet_up_blocks_1_attentions_1_proj_out + lora_unet_up_blocks_1_attentions_1_transformer_blocks_0_attn1_to_k + lora_unet_up_blocks_1_attentions_1_transformer_blocks_0_attn1_to_out_0 + lora_unet_up_blocks_1_attentions_1_transformer_blocks_0_attn1_to_q + lora_unet_up_blocks_1_attentions_1_transformer_blocks_0_attn1_to_v + lora_unet_up_blocks_1_attentions_1_transformer_blocks_0_attn2_to_k + lora_unet_up_blocks_1_attentions_1_transformer_blocks_0_attn2_to_out_0 + lora_unet_up_blocks_1_attentions_1_transformer_blocks_0_attn2_to_q + lora_unet_up_blocks_1_attentions_1_transformer_blocks_0_attn2_to_v + lora_unet_up_blocks_1_attentions_1_transformer_blocks_0_ff_net_0_proj + lora_unet_up_blocks_1_attentions_1_transformer_blocks_0_ff_net_2 + lora_unet_up_blocks_1_attentions_2_proj_in + lora_unet_up_blocks_1_attentions_2_proj_out + lora_unet_up_blocks_1_attentions_2_transformer_blocks_0_attn1_to_k + lora_unet_up_blocks_1_attentions_2_transformer_blocks_0_attn1_to_out_0 + lora_unet_up_blocks_1_attentions_2_transformer_blocks_0_attn1_to_q + lora_unet_up_blocks_1_attentions_2_transformer_blocks_0_attn1_to_v + lora_unet_up_blocks_1_attentions_2_transformer_blocks_0_attn2_to_k + lora_unet_up_blocks_1_attentions_2_transformer_blocks_0_attn2_to_out_0 + lora_unet_up_blocks_1_attentions_2_transformer_blocks_0_attn2_to_q + lora_unet_up_blocks_1_attentions_2_transformer_blocks_0_attn2_to_v + lora_unet_up_blocks_1_attentions_2_transformer_blocks_0_ff_net_0_proj + lora_unet_up_blocks_1_attentions_2_transformer_blocks_0_ff_net_2 + lora_unet_up_blocks_1_resnets_0_conv1 + lora_unet_up_blocks_1_resnets_0_conv2 + lora_unet_up_blocks_1_resnets_0_conv_shortcut + lora_unet_up_blocks_1_resnets_0_time_emb_proj + lora_unet_up_blocks_1_resnets_1_conv1 + lora_unet_up_blocks_1_resnets_1_conv2 + lora_unet_up_blocks_1_resnets_1_conv_shortcut + lora_unet_up_blocks_1_resnets_1_time_emb_proj + lora_unet_up_blocks_1_resnets_2_conv1 + lora_unet_up_blocks_1_resnets_2_conv2 + lora_unet_up_blocks_1_resnets_2_conv_shortcut + lora_unet_up_blocks_1_resnets_2_time_emb_proj + lora_unet_up_blocks_1_upsamplers_0_conv + lora_unet_up_blocks_2_attentions_0_proj_in + lora_unet_up_blocks_2_attentions_0_proj_out + lora_unet_up_blocks_2_attentions_0_transformer_blocks_0_attn1_to_k + lora_unet_up_blocks_2_attentions_0_transformer_blocks_0_attn1_to_out_0 + lora_unet_up_blocks_2_attentions_0_transformer_blocks_0_attn1_to_q + lora_unet_up_blocks_2_attentions_0_transformer_blocks_0_attn1_to_v + lora_unet_up_blocks_2_attentions_0_transformer_blocks_0_attn2_to_k + lora_unet_up_blocks_2_attentions_0_transformer_blocks_0_attn2_to_out_0 + lora_unet_up_blocks_2_attentions_0_transformer_blocks_0_attn2_to_q + lora_unet_up_blocks_2_attentions_0_transformer_blocks_0_attn2_to_v + lora_unet_up_blocks_2_attentions_0_transformer_blocks_0_ff_net_0_proj + lora_unet_up_blocks_2_attentions_0_transformer_blocks_0_ff_net_2 + lora_unet_up_blocks_2_attentions_1_proj_in + lora_unet_up_blocks_2_attentions_1_proj_out + lora_unet_up_blocks_2_attentions_1_transformer_blocks_0_attn1_to_k + lora_unet_up_blocks_2_attentions_1_transformer_blocks_0_attn1_to_out_0 + lora_unet_up_blocks_2_attentions_1_transformer_blocks_0_attn1_to_q + lora_unet_up_blocks_2_attentions_1_transformer_blocks_0_attn1_to_v + lora_unet_up_blocks_2_attentions_1_transformer_blocks_0_attn2_to_k + lora_unet_up_blocks_2_attentions_1_transformer_blocks_0_attn2_to_out_0 + lora_unet_up_blocks_2_attentions_1_transformer_blocks_0_attn2_to_q + lora_unet_up_blocks_2_attentions_1_transformer_blocks_0_attn2_to_v + lora_unet_up_blocks_2_attentions_1_transformer_blocks_0_ff_net_0_proj + lora_unet_up_blocks_2_attentions_1_transformer_blocks_0_ff_net_2 + lora_unet_up_blocks_2_attentions_2_proj_in + lora_unet_up_blocks_2_attentions_2_proj_out + lora_unet_up_blocks_2_attentions_2_transformer_blocks_0_attn1_to_k + lora_unet_up_blocks_2_attentions_2_transformer_blocks_0_attn1_to_out_0 + lora_unet_up_blocks_2_attentions_2_transformer_blocks_0_attn1_to_q + lora_unet_up_blocks_2_attentions_2_transformer_blocks_0_attn1_to_v + lora_unet_up_blocks_2_attentions_2_transformer_blocks_0_attn2_to_k + lora_unet_up_blocks_2_attentions_2_transformer_blocks_0_attn2_to_out_0 + lora_unet_up_blocks_2_attentions_2_transformer_blocks_0_attn2_to_q + lora_unet_up_blocks_2_attentions_2_transformer_blocks_0_attn2_to_v + lora_unet_up_blocks_2_attentions_2_transformer_blocks_0_ff_net_0_proj + lora_unet_up_blocks_2_attentions_2_transformer_blocks_0_ff_net_2 + lora_unet_up_blocks_2_resnets_0_conv1 + lora_unet_up_blocks_2_resnets_0_conv2 + lora_unet_up_blocks_2_resnets_0_conv_shortcut + lora_unet_up_blocks_2_resnets_0_time_emb_proj + lora_unet_up_blocks_2_resnets_1_conv1 + lora_unet_up_blocks_2_resnets_1_conv2 + lora_unet_up_blocks_2_resnets_1_conv_shortcut + lora_unet_up_blocks_2_resnets_1_time_emb_proj + lora_unet_up_blocks_2_resnets_2_conv1 + lora_unet_up_blocks_2_resnets_2_conv2 + lora_unet_up_blocks_2_resnets_2_conv_shortcut + lora_unet_up_blocks_2_resnets_2_time_emb_proj + lora_unet_up_blocks_2_upsamplers_0_conv + lora_unet_up_blocks_3_attentions_0_proj_in + lora_unet_up_blocks_3_attentions_0_proj_out + lora_unet_up_blocks_3_attentions_0_transformer_blocks_0_attn1_to_k + lora_unet_up_blocks_3_attentions_0_transformer_blocks_0_attn1_to_out_0 + lora_unet_up_blocks_3_attentions_0_transformer_blocks_0_attn1_to_q + lora_unet_up_blocks_3_attentions_0_transformer_blocks_0_attn1_to_v + lora_unet_up_blocks_3_attentions_0_transformer_blocks_0_attn2_to_k + lora_unet_up_blocks_3_attentions_0_transformer_blocks_0_attn2_to_out_0 + lora_unet_up_blocks_3_attentions_0_transformer_blocks_0_attn2_to_q + lora_unet_up_blocks_3_attentions_0_transformer_blocks_0_attn2_to_v + lora_unet_up_blocks_3_attentions_0_transformer_blocks_0_ff_net_0_proj + lora_unet_up_blocks_3_attentions_0_transformer_blocks_0_ff_net_2 + lora_unet_up_blocks_3_attentions_1_proj_in + lora_unet_up_blocks_3_attentions_1_proj_out + lora_unet_up_blocks_3_attentions_1_transformer_blocks_0_attn1_to_k + lora_unet_up_blocks_3_attentions_1_transformer_blocks_0_attn1_to_out_0 + lora_unet_up_blocks_3_attentions_1_transformer_blocks_0_attn1_to_q + lora_unet_up_blocks_3_attentions_1_transformer_blocks_0_attn1_to_v + lora_unet_up_blocks_3_attentions_1_transformer_blocks_0_attn2_to_k + lora_unet_up_blocks_3_attentions_1_transformer_blocks_0_attn2_to_out_0 + lora_unet_up_blocks_3_attentions_1_transformer_blocks_0_attn2_to_q + lora_unet_up_blocks_3_attentions_1_transformer_blocks_0_attn2_to_v + lora_unet_up_blocks_3_attentions_1_transformer_blocks_0_ff_net_0_proj + lora_unet_up_blocks_3_attentions_1_transformer_blocks_0_ff_net_2 + lora_unet_up_blocks_3_attentions_2_proj_in + lora_unet_up_blocks_3_attentions_2_proj_out + lora_unet_up_blocks_3_attentions_2_transformer_blocks_0_attn1_to_k + lora_unet_up_blocks_3_attentions_2_transformer_blocks_0_attn1_to_out_0 + lora_unet_up_blocks_3_attentions_2_transformer_blocks_0_attn1_to_q + lora_unet_up_blocks_3_attentions_2_transformer_blocks_0_attn1_to_v + lora_unet_up_blocks_3_attentions_2_transformer_blocks_0_attn2_to_k + lora_unet_up_blocks_3_attentions_2_transformer_blocks_0_attn2_to_out_0 + lora_unet_up_blocks_3_attentions_2_transformer_blocks_0_attn2_to_q + lora_unet_up_blocks_3_attentions_2_transformer_blocks_0_attn2_to_v + lora_unet_up_blocks_3_attentions_2_transformer_blocks_0_ff_net_0_proj + lora_unet_up_blocks_3_attentions_2_transformer_blocks_0_ff_net_2 + lora_unet_up_blocks_3_resnets_0_conv1 + lora_unet_up_blocks_3_resnets_0_conv2 + lora_unet_up_blocks_3_resnets_0_conv_shortcut + lora_unet_up_blocks_3_resnets_0_time_emb_proj + lora_unet_up_blocks_3_resnets_1_conv1 + lora_unet_up_blocks_3_resnets_1_conv2 + lora_unet_up_blocks_3_resnets_1_conv_shortcut + lora_unet_up_blocks_3_resnets_1_time_emb_proj + lora_unet_up_blocks_3_resnets_2_conv1 + lora_unet_up_blocks_3_resnets_2_conv2 + lora_unet_up_blocks_3_resnets_2_conv_shortcut + lora_unet_up_blocks_3_resnets_2_time_emb_proj + +================================================================================ + +Pattern matching analysis: + +ATTENTION (576 keys): + lora_unet_down_blocks_0_attentions_0_proj_in.alpha + lora_unet_down_blocks_0_attentions_0_proj_in.lora_down.weight + lora_unet_down_blocks_0_attentions_0_proj_in.lora_up.weight + lora_unet_down_blocks_0_attentions_0_proj_out.alpha + lora_unet_down_blocks_0_attentions_0_proj_out.lora_down.weight + ... and 571 more + +MLP/FEEDFORWARD (96 keys): + lora_unet_down_blocks_0_attentions_0_transformer_blocks_0_ff_net_0_proj.alpha + lora_unet_down_blocks_0_attentions_0_transformer_blocks_0_ff_net_0_proj.lora_down.weight + lora_unet_down_blocks_0_attentions_0_transformer_blocks_0_ff_net_0_proj.lora_up.weight + lora_unet_down_blocks_0_attentions_0_transformer_blocks_0_ff_net_2.alpha + lora_unet_down_blocks_0_attentions_0_transformer_blocks_0_ff_net_2.lora_down.weight + ... and 91 more + +PROJECTION (210 keys): + lora_unet_down_blocks_0_attentions_0_proj_in.alpha + lora_unet_down_blocks_0_attentions_0_proj_in.lora_down.weight + lora_unet_down_blocks_0_attentions_0_proj_in.lora_up.weight + lora_unet_down_blocks_0_attentions_0_proj_out.alpha + lora_unet_down_blocks_0_attentions_0_proj_out.lora_down.weight + ... and 205 more + +EMBEDDING (66 keys): + lora_unet_down_blocks_0_resnets_0_time_emb_proj.alpha + lora_unet_down_blocks_0_resnets_0_time_emb_proj.lora_down.weight + lora_unet_down_blocks_0_resnets_0_time_emb_proj.lora_up.weight + lora_unet_down_blocks_0_resnets_1_time_emb_proj.alpha + lora_unet_down_blocks_0_resnets_1_time_emb_proj.lora_down.weight + ... and 61 more + +================================================================================ + +Architecture detection: + -> Unknown architecture \ No newline at end of file diff --git a/tests/lora_keys/sdxl_lora.txt b/tests/lora_keys/sdxl_lora.txt new file mode 100644 index 0000000..5fbed27 --- /dev/null +++ b/tests/lora_keys/sdxl_lora.txt @@ -0,0 +1,785 @@ +Analyzing LoRA: loras/SDXL-LoRA.safetensors + +Total keys: 2888 + +Sample keys (first 20): + lora_unet_down_blocks_1_attentions_0_proj_in.alpha + lora_unet_down_blocks_1_attentions_0_proj_in.dora_scale + lora_unet_down_blocks_1_attentions_0_proj_in.lora_down.weight + lora_unet_down_blocks_1_attentions_0_proj_in.lora_up.weight + lora_unet_down_blocks_1_attentions_0_proj_out.alpha + lora_unet_down_blocks_1_attentions_0_proj_out.dora_scale + lora_unet_down_blocks_1_attentions_0_proj_out.lora_down.weight + lora_unet_down_blocks_1_attentions_0_proj_out.lora_up.weight + lora_unet_down_blocks_1_attentions_0_transformer_blocks_0_attn1_to_k.alpha + lora_unet_down_blocks_1_attentions_0_transformer_blocks_0_attn1_to_k.dora_scale + lora_unet_down_blocks_1_attentions_0_transformer_blocks_0_attn1_to_k.lora_down.weight + lora_unet_down_blocks_1_attentions_0_transformer_blocks_0_attn1_to_k.lora_up.weight + lora_unet_down_blocks_1_attentions_0_transformer_blocks_0_attn1_to_out_0.alpha + lora_unet_down_blocks_1_attentions_0_transformer_blocks_0_attn1_to_out_0.dora_scale + lora_unet_down_blocks_1_attentions_0_transformer_blocks_0_attn1_to_out_0.lora_down.weight + lora_unet_down_blocks_1_attentions_0_transformer_blocks_0_attn1_to_out_0.lora_up.weight + lora_unet_down_blocks_1_attentions_0_transformer_blocks_0_attn1_to_q.alpha + lora_unet_down_blocks_1_attentions_0_transformer_blocks_0_attn1_to_q.dora_scale + lora_unet_down_blocks_1_attentions_0_transformer_blocks_0_attn1_to_q.lora_down.weight + lora_unet_down_blocks_1_attentions_0_transformer_blocks_0_attn1_to_q.lora_up.weight + +================================================================================ + +Unique layer components found: + dora_scale + lora_unet_down_blocks_1_attentions_0_proj_in + lora_unet_down_blocks_1_attentions_0_proj_out + lora_unet_down_blocks_1_attentions_0_transformer_blocks_0_attn1_to_k + lora_unet_down_blocks_1_attentions_0_transformer_blocks_0_attn1_to_out_0 + lora_unet_down_blocks_1_attentions_0_transformer_blocks_0_attn1_to_q + lora_unet_down_blocks_1_attentions_0_transformer_blocks_0_attn1_to_v + lora_unet_down_blocks_1_attentions_0_transformer_blocks_0_attn2_to_k + lora_unet_down_blocks_1_attentions_0_transformer_blocks_0_attn2_to_out_0 + lora_unet_down_blocks_1_attentions_0_transformer_blocks_0_attn2_to_q + lora_unet_down_blocks_1_attentions_0_transformer_blocks_0_attn2_to_v + lora_unet_down_blocks_1_attentions_0_transformer_blocks_0_ff_net_0_proj + lora_unet_down_blocks_1_attentions_0_transformer_blocks_0_ff_net_2 + lora_unet_down_blocks_1_attentions_0_transformer_blocks_1_attn1_to_k + lora_unet_down_blocks_1_attentions_0_transformer_blocks_1_attn1_to_out_0 + lora_unet_down_blocks_1_attentions_0_transformer_blocks_1_attn1_to_q + lora_unet_down_blocks_1_attentions_0_transformer_blocks_1_attn1_to_v + lora_unet_down_blocks_1_attentions_0_transformer_blocks_1_attn2_to_k + lora_unet_down_blocks_1_attentions_0_transformer_blocks_1_attn2_to_out_0 + lora_unet_down_blocks_1_attentions_0_transformer_blocks_1_attn2_to_q + lora_unet_down_blocks_1_attentions_0_transformer_blocks_1_attn2_to_v + lora_unet_down_blocks_1_attentions_0_transformer_blocks_1_ff_net_0_proj + lora_unet_down_blocks_1_attentions_0_transformer_blocks_1_ff_net_2 + lora_unet_down_blocks_1_attentions_1_proj_in + lora_unet_down_blocks_1_attentions_1_proj_out + lora_unet_down_blocks_1_attentions_1_transformer_blocks_0_attn1_to_k + lora_unet_down_blocks_1_attentions_1_transformer_blocks_0_attn1_to_out_0 + lora_unet_down_blocks_1_attentions_1_transformer_blocks_0_attn1_to_q + lora_unet_down_blocks_1_attentions_1_transformer_blocks_0_attn1_to_v + lora_unet_down_blocks_1_attentions_1_transformer_blocks_0_attn2_to_k + lora_unet_down_blocks_1_attentions_1_transformer_blocks_0_attn2_to_out_0 + lora_unet_down_blocks_1_attentions_1_transformer_blocks_0_attn2_to_q + lora_unet_down_blocks_1_attentions_1_transformer_blocks_0_attn2_to_v + lora_unet_down_blocks_1_attentions_1_transformer_blocks_0_ff_net_0_proj + lora_unet_down_blocks_1_attentions_1_transformer_blocks_0_ff_net_2 + lora_unet_down_blocks_1_attentions_1_transformer_blocks_1_attn1_to_k + lora_unet_down_blocks_1_attentions_1_transformer_blocks_1_attn1_to_out_0 + lora_unet_down_blocks_1_attentions_1_transformer_blocks_1_attn1_to_q + lora_unet_down_blocks_1_attentions_1_transformer_blocks_1_attn1_to_v + lora_unet_down_blocks_1_attentions_1_transformer_blocks_1_attn2_to_k + lora_unet_down_blocks_1_attentions_1_transformer_blocks_1_attn2_to_out_0 + lora_unet_down_blocks_1_attentions_1_transformer_blocks_1_attn2_to_q + lora_unet_down_blocks_1_attentions_1_transformer_blocks_1_attn2_to_v + lora_unet_down_blocks_1_attentions_1_transformer_blocks_1_ff_net_0_proj + lora_unet_down_blocks_1_attentions_1_transformer_blocks_1_ff_net_2 + lora_unet_down_blocks_2_attentions_0_proj_in + lora_unet_down_blocks_2_attentions_0_proj_out + lora_unet_down_blocks_2_attentions_0_transformer_blocks_0_attn1_to_k + lora_unet_down_blocks_2_attentions_0_transformer_blocks_0_attn1_to_out_0 + lora_unet_down_blocks_2_attentions_0_transformer_blocks_0_attn1_to_q + lora_unet_down_blocks_2_attentions_0_transformer_blocks_0_attn1_to_v + lora_unet_down_blocks_2_attentions_0_transformer_blocks_0_attn2_to_k + lora_unet_down_blocks_2_attentions_0_transformer_blocks_0_attn2_to_out_0 + lora_unet_down_blocks_2_attentions_0_transformer_blocks_0_attn2_to_q + lora_unet_down_blocks_2_attentions_0_transformer_blocks_0_attn2_to_v + lora_unet_down_blocks_2_attentions_0_transformer_blocks_0_ff_net_0_proj + lora_unet_down_blocks_2_attentions_0_transformer_blocks_0_ff_net_2 + lora_unet_down_blocks_2_attentions_0_transformer_blocks_1_attn1_to_k + lora_unet_down_blocks_2_attentions_0_transformer_blocks_1_attn1_to_out_0 + lora_unet_down_blocks_2_attentions_0_transformer_blocks_1_attn1_to_q + lora_unet_down_blocks_2_attentions_0_transformer_blocks_1_attn1_to_v + lora_unet_down_blocks_2_attentions_0_transformer_blocks_1_attn2_to_k + lora_unet_down_blocks_2_attentions_0_transformer_blocks_1_attn2_to_out_0 + lora_unet_down_blocks_2_attentions_0_transformer_blocks_1_attn2_to_q + lora_unet_down_blocks_2_attentions_0_transformer_blocks_1_attn2_to_v + lora_unet_down_blocks_2_attentions_0_transformer_blocks_1_ff_net_0_proj + lora_unet_down_blocks_2_attentions_0_transformer_blocks_1_ff_net_2 + lora_unet_down_blocks_2_attentions_0_transformer_blocks_2_attn1_to_k + lora_unet_down_blocks_2_attentions_0_transformer_blocks_2_attn1_to_out_0 + lora_unet_down_blocks_2_attentions_0_transformer_blocks_2_attn1_to_q + lora_unet_down_blocks_2_attentions_0_transformer_blocks_2_attn1_to_v + lora_unet_down_blocks_2_attentions_0_transformer_blocks_2_attn2_to_k + lora_unet_down_blocks_2_attentions_0_transformer_blocks_2_attn2_to_out_0 + lora_unet_down_blocks_2_attentions_0_transformer_blocks_2_attn2_to_q + lora_unet_down_blocks_2_attentions_0_transformer_blocks_2_attn2_to_v + lora_unet_down_blocks_2_attentions_0_transformer_blocks_2_ff_net_0_proj + lora_unet_down_blocks_2_attentions_0_transformer_blocks_2_ff_net_2 + lora_unet_down_blocks_2_attentions_0_transformer_blocks_3_attn1_to_k + lora_unet_down_blocks_2_attentions_0_transformer_blocks_3_attn1_to_out_0 + lora_unet_down_blocks_2_attentions_0_transformer_blocks_3_attn1_to_q + lora_unet_down_blocks_2_attentions_0_transformer_blocks_3_attn1_to_v + lora_unet_down_blocks_2_attentions_0_transformer_blocks_3_attn2_to_k + lora_unet_down_blocks_2_attentions_0_transformer_blocks_3_attn2_to_out_0 + lora_unet_down_blocks_2_attentions_0_transformer_blocks_3_attn2_to_q + lora_unet_down_blocks_2_attentions_0_transformer_blocks_3_attn2_to_v + lora_unet_down_blocks_2_attentions_0_transformer_blocks_3_ff_net_0_proj + lora_unet_down_blocks_2_attentions_0_transformer_blocks_3_ff_net_2 + lora_unet_down_blocks_2_attentions_0_transformer_blocks_4_attn1_to_k + lora_unet_down_blocks_2_attentions_0_transformer_blocks_4_attn1_to_out_0 + lora_unet_down_blocks_2_attentions_0_transformer_blocks_4_attn1_to_q + lora_unet_down_blocks_2_attentions_0_transformer_blocks_4_attn1_to_v + lora_unet_down_blocks_2_attentions_0_transformer_blocks_4_attn2_to_k + lora_unet_down_blocks_2_attentions_0_transformer_blocks_4_attn2_to_out_0 + lora_unet_down_blocks_2_attentions_0_transformer_blocks_4_attn2_to_q + lora_unet_down_blocks_2_attentions_0_transformer_blocks_4_attn2_to_v + lora_unet_down_blocks_2_attentions_0_transformer_blocks_4_ff_net_0_proj + lora_unet_down_blocks_2_attentions_0_transformer_blocks_4_ff_net_2 + lora_unet_down_blocks_2_attentions_0_transformer_blocks_5_attn1_to_k + lora_unet_down_blocks_2_attentions_0_transformer_blocks_5_attn1_to_out_0 + lora_unet_down_blocks_2_attentions_0_transformer_blocks_5_attn1_to_q + lora_unet_down_blocks_2_attentions_0_transformer_blocks_5_attn1_to_v + lora_unet_down_blocks_2_attentions_0_transformer_blocks_5_attn2_to_k + lora_unet_down_blocks_2_attentions_0_transformer_blocks_5_attn2_to_out_0 + lora_unet_down_blocks_2_attentions_0_transformer_blocks_5_attn2_to_q + lora_unet_down_blocks_2_attentions_0_transformer_blocks_5_attn2_to_v + lora_unet_down_blocks_2_attentions_0_transformer_blocks_5_ff_net_0_proj + lora_unet_down_blocks_2_attentions_0_transformer_blocks_5_ff_net_2 + lora_unet_down_blocks_2_attentions_0_transformer_blocks_6_attn1_to_k + lora_unet_down_blocks_2_attentions_0_transformer_blocks_6_attn1_to_out_0 + lora_unet_down_blocks_2_attentions_0_transformer_blocks_6_attn1_to_q + lora_unet_down_blocks_2_attentions_0_transformer_blocks_6_attn1_to_v + lora_unet_down_blocks_2_attentions_0_transformer_blocks_6_attn2_to_k + lora_unet_down_blocks_2_attentions_0_transformer_blocks_6_attn2_to_out_0 + lora_unet_down_blocks_2_attentions_0_transformer_blocks_6_attn2_to_q + lora_unet_down_blocks_2_attentions_0_transformer_blocks_6_attn2_to_v + lora_unet_down_blocks_2_attentions_0_transformer_blocks_6_ff_net_0_proj + lora_unet_down_blocks_2_attentions_0_transformer_blocks_6_ff_net_2 + lora_unet_down_blocks_2_attentions_0_transformer_blocks_7_attn1_to_k + lora_unet_down_blocks_2_attentions_0_transformer_blocks_7_attn1_to_out_0 + lora_unet_down_blocks_2_attentions_0_transformer_blocks_7_attn1_to_q + lora_unet_down_blocks_2_attentions_0_transformer_blocks_7_attn1_to_v + lora_unet_down_blocks_2_attentions_0_transformer_blocks_7_attn2_to_k + lora_unet_down_blocks_2_attentions_0_transformer_blocks_7_attn2_to_out_0 + lora_unet_down_blocks_2_attentions_0_transformer_blocks_7_attn2_to_q + lora_unet_down_blocks_2_attentions_0_transformer_blocks_7_attn2_to_v + lora_unet_down_blocks_2_attentions_0_transformer_blocks_7_ff_net_0_proj + lora_unet_down_blocks_2_attentions_0_transformer_blocks_7_ff_net_2 + lora_unet_down_blocks_2_attentions_0_transformer_blocks_8_attn1_to_k + lora_unet_down_blocks_2_attentions_0_transformer_blocks_8_attn1_to_out_0 + lora_unet_down_blocks_2_attentions_0_transformer_blocks_8_attn1_to_q + lora_unet_down_blocks_2_attentions_0_transformer_blocks_8_attn1_to_v + lora_unet_down_blocks_2_attentions_0_transformer_blocks_8_attn2_to_k + lora_unet_down_blocks_2_attentions_0_transformer_blocks_8_attn2_to_out_0 + lora_unet_down_blocks_2_attentions_0_transformer_blocks_8_attn2_to_q + lora_unet_down_blocks_2_attentions_0_transformer_blocks_8_attn2_to_v + lora_unet_down_blocks_2_attentions_0_transformer_blocks_8_ff_net_0_proj + lora_unet_down_blocks_2_attentions_0_transformer_blocks_8_ff_net_2 + lora_unet_down_blocks_2_attentions_0_transformer_blocks_9_attn1_to_k + lora_unet_down_blocks_2_attentions_0_transformer_blocks_9_attn1_to_out_0 + lora_unet_down_blocks_2_attentions_0_transformer_blocks_9_attn1_to_q + lora_unet_down_blocks_2_attentions_0_transformer_blocks_9_attn1_to_v + lora_unet_down_blocks_2_attentions_0_transformer_blocks_9_attn2_to_k + lora_unet_down_blocks_2_attentions_0_transformer_blocks_9_attn2_to_out_0 + lora_unet_down_blocks_2_attentions_0_transformer_blocks_9_attn2_to_q + lora_unet_down_blocks_2_attentions_0_transformer_blocks_9_attn2_to_v + lora_unet_down_blocks_2_attentions_0_transformer_blocks_9_ff_net_0_proj + lora_unet_down_blocks_2_attentions_0_transformer_blocks_9_ff_net_2 + lora_unet_down_blocks_2_attentions_1_proj_in + lora_unet_down_blocks_2_attentions_1_proj_out + lora_unet_down_blocks_2_attentions_1_transformer_blocks_0_attn1_to_k + lora_unet_down_blocks_2_attentions_1_transformer_blocks_0_attn1_to_out_0 + lora_unet_down_blocks_2_attentions_1_transformer_blocks_0_attn1_to_q + lora_unet_down_blocks_2_attentions_1_transformer_blocks_0_attn1_to_v + lora_unet_down_blocks_2_attentions_1_transformer_blocks_0_attn2_to_k + lora_unet_down_blocks_2_attentions_1_transformer_blocks_0_attn2_to_out_0 + lora_unet_down_blocks_2_attentions_1_transformer_blocks_0_attn2_to_q + lora_unet_down_blocks_2_attentions_1_transformer_blocks_0_attn2_to_v + lora_unet_down_blocks_2_attentions_1_transformer_blocks_0_ff_net_0_proj + lora_unet_down_blocks_2_attentions_1_transformer_blocks_0_ff_net_2 + lora_unet_down_blocks_2_attentions_1_transformer_blocks_1_attn1_to_k + lora_unet_down_blocks_2_attentions_1_transformer_blocks_1_attn1_to_out_0 + lora_unet_down_blocks_2_attentions_1_transformer_blocks_1_attn1_to_q + lora_unet_down_blocks_2_attentions_1_transformer_blocks_1_attn1_to_v + lora_unet_down_blocks_2_attentions_1_transformer_blocks_1_attn2_to_k + lora_unet_down_blocks_2_attentions_1_transformer_blocks_1_attn2_to_out_0 + lora_unet_down_blocks_2_attentions_1_transformer_blocks_1_attn2_to_q + lora_unet_down_blocks_2_attentions_1_transformer_blocks_1_attn2_to_v + lora_unet_down_blocks_2_attentions_1_transformer_blocks_1_ff_net_0_proj + lora_unet_down_blocks_2_attentions_1_transformer_blocks_1_ff_net_2 + lora_unet_down_blocks_2_attentions_1_transformer_blocks_2_attn1_to_k + lora_unet_down_blocks_2_attentions_1_transformer_blocks_2_attn1_to_out_0 + lora_unet_down_blocks_2_attentions_1_transformer_blocks_2_attn1_to_q + lora_unet_down_blocks_2_attentions_1_transformer_blocks_2_attn1_to_v + lora_unet_down_blocks_2_attentions_1_transformer_blocks_2_attn2_to_k + lora_unet_down_blocks_2_attentions_1_transformer_blocks_2_attn2_to_out_0 + lora_unet_down_blocks_2_attentions_1_transformer_blocks_2_attn2_to_q + lora_unet_down_blocks_2_attentions_1_transformer_blocks_2_attn2_to_v + lora_unet_down_blocks_2_attentions_1_transformer_blocks_2_ff_net_0_proj + lora_unet_down_blocks_2_attentions_1_transformer_blocks_2_ff_net_2 + lora_unet_down_blocks_2_attentions_1_transformer_blocks_3_attn1_to_k + lora_unet_down_blocks_2_attentions_1_transformer_blocks_3_attn1_to_out_0 + lora_unet_down_blocks_2_attentions_1_transformer_blocks_3_attn1_to_q + lora_unet_down_blocks_2_attentions_1_transformer_blocks_3_attn1_to_v + lora_unet_down_blocks_2_attentions_1_transformer_blocks_3_attn2_to_k + lora_unet_down_blocks_2_attentions_1_transformer_blocks_3_attn2_to_out_0 + lora_unet_down_blocks_2_attentions_1_transformer_blocks_3_attn2_to_q + lora_unet_down_blocks_2_attentions_1_transformer_blocks_3_attn2_to_v + lora_unet_down_blocks_2_attentions_1_transformer_blocks_3_ff_net_0_proj + lora_unet_down_blocks_2_attentions_1_transformer_blocks_3_ff_net_2 + lora_unet_down_blocks_2_attentions_1_transformer_blocks_4_attn1_to_k + lora_unet_down_blocks_2_attentions_1_transformer_blocks_4_attn1_to_out_0 + lora_unet_down_blocks_2_attentions_1_transformer_blocks_4_attn1_to_q + lora_unet_down_blocks_2_attentions_1_transformer_blocks_4_attn1_to_v + lora_unet_down_blocks_2_attentions_1_transformer_blocks_4_attn2_to_k + lora_unet_down_blocks_2_attentions_1_transformer_blocks_4_attn2_to_out_0 + lora_unet_down_blocks_2_attentions_1_transformer_blocks_4_attn2_to_q + lora_unet_down_blocks_2_attentions_1_transformer_blocks_4_attn2_to_v + lora_unet_down_blocks_2_attentions_1_transformer_blocks_4_ff_net_0_proj + lora_unet_down_blocks_2_attentions_1_transformer_blocks_4_ff_net_2 + lora_unet_down_blocks_2_attentions_1_transformer_blocks_5_attn1_to_k + lora_unet_down_blocks_2_attentions_1_transformer_blocks_5_attn1_to_out_0 + lora_unet_down_blocks_2_attentions_1_transformer_blocks_5_attn1_to_q + lora_unet_down_blocks_2_attentions_1_transformer_blocks_5_attn1_to_v + lora_unet_down_blocks_2_attentions_1_transformer_blocks_5_attn2_to_k + lora_unet_down_blocks_2_attentions_1_transformer_blocks_5_attn2_to_out_0 + lora_unet_down_blocks_2_attentions_1_transformer_blocks_5_attn2_to_q + lora_unet_down_blocks_2_attentions_1_transformer_blocks_5_attn2_to_v + lora_unet_down_blocks_2_attentions_1_transformer_blocks_5_ff_net_0_proj + lora_unet_down_blocks_2_attentions_1_transformer_blocks_5_ff_net_2 + lora_unet_down_blocks_2_attentions_1_transformer_blocks_6_attn1_to_k + lora_unet_down_blocks_2_attentions_1_transformer_blocks_6_attn1_to_out_0 + lora_unet_down_blocks_2_attentions_1_transformer_blocks_6_attn1_to_q + lora_unet_down_blocks_2_attentions_1_transformer_blocks_6_attn1_to_v + lora_unet_down_blocks_2_attentions_1_transformer_blocks_6_attn2_to_k + lora_unet_down_blocks_2_attentions_1_transformer_blocks_6_attn2_to_out_0 + lora_unet_down_blocks_2_attentions_1_transformer_blocks_6_attn2_to_q + lora_unet_down_blocks_2_attentions_1_transformer_blocks_6_attn2_to_v + lora_unet_down_blocks_2_attentions_1_transformer_blocks_6_ff_net_0_proj + lora_unet_down_blocks_2_attentions_1_transformer_blocks_6_ff_net_2 + lora_unet_down_blocks_2_attentions_1_transformer_blocks_7_attn1_to_k + lora_unet_down_blocks_2_attentions_1_transformer_blocks_7_attn1_to_out_0 + lora_unet_down_blocks_2_attentions_1_transformer_blocks_7_attn1_to_q + lora_unet_down_blocks_2_attentions_1_transformer_blocks_7_attn1_to_v + lora_unet_down_blocks_2_attentions_1_transformer_blocks_7_attn2_to_k + lora_unet_down_blocks_2_attentions_1_transformer_blocks_7_attn2_to_out_0 + lora_unet_down_blocks_2_attentions_1_transformer_blocks_7_attn2_to_q + lora_unet_down_blocks_2_attentions_1_transformer_blocks_7_attn2_to_v + lora_unet_down_blocks_2_attentions_1_transformer_blocks_7_ff_net_0_proj + lora_unet_down_blocks_2_attentions_1_transformer_blocks_7_ff_net_2 + lora_unet_down_blocks_2_attentions_1_transformer_blocks_8_attn1_to_k + lora_unet_down_blocks_2_attentions_1_transformer_blocks_8_attn1_to_out_0 + lora_unet_down_blocks_2_attentions_1_transformer_blocks_8_attn1_to_q + lora_unet_down_blocks_2_attentions_1_transformer_blocks_8_attn1_to_v + lora_unet_down_blocks_2_attentions_1_transformer_blocks_8_attn2_to_k + lora_unet_down_blocks_2_attentions_1_transformer_blocks_8_attn2_to_out_0 + lora_unet_down_blocks_2_attentions_1_transformer_blocks_8_attn2_to_q + lora_unet_down_blocks_2_attentions_1_transformer_blocks_8_attn2_to_v + lora_unet_down_blocks_2_attentions_1_transformer_blocks_8_ff_net_0_proj + lora_unet_down_blocks_2_attentions_1_transformer_blocks_8_ff_net_2 + lora_unet_down_blocks_2_attentions_1_transformer_blocks_9_attn1_to_k + lora_unet_down_blocks_2_attentions_1_transformer_blocks_9_attn1_to_out_0 + lora_unet_down_blocks_2_attentions_1_transformer_blocks_9_attn1_to_q + lora_unet_down_blocks_2_attentions_1_transformer_blocks_9_attn1_to_v + lora_unet_down_blocks_2_attentions_1_transformer_blocks_9_attn2_to_k + lora_unet_down_blocks_2_attentions_1_transformer_blocks_9_attn2_to_out_0 + lora_unet_down_blocks_2_attentions_1_transformer_blocks_9_attn2_to_q + lora_unet_down_blocks_2_attentions_1_transformer_blocks_9_attn2_to_v + lora_unet_down_blocks_2_attentions_1_transformer_blocks_9_ff_net_0_proj + lora_unet_down_blocks_2_attentions_1_transformer_blocks_9_ff_net_2 + lora_unet_mid_block_attentions_0_proj_in + lora_unet_mid_block_attentions_0_proj_out + lora_unet_mid_block_attentions_0_transformer_blocks_0_attn1_to_k + lora_unet_mid_block_attentions_0_transformer_blocks_0_attn1_to_out_0 + lora_unet_mid_block_attentions_0_transformer_blocks_0_attn1_to_q + lora_unet_mid_block_attentions_0_transformer_blocks_0_attn1_to_v + lora_unet_mid_block_attentions_0_transformer_blocks_0_attn2_to_k + lora_unet_mid_block_attentions_0_transformer_blocks_0_attn2_to_out_0 + lora_unet_mid_block_attentions_0_transformer_blocks_0_attn2_to_q + lora_unet_mid_block_attentions_0_transformer_blocks_0_attn2_to_v + lora_unet_mid_block_attentions_0_transformer_blocks_0_ff_net_0_proj + lora_unet_mid_block_attentions_0_transformer_blocks_0_ff_net_2 + lora_unet_mid_block_attentions_0_transformer_blocks_1_attn1_to_k + lora_unet_mid_block_attentions_0_transformer_blocks_1_attn1_to_out_0 + lora_unet_mid_block_attentions_0_transformer_blocks_1_attn1_to_q + lora_unet_mid_block_attentions_0_transformer_blocks_1_attn1_to_v + lora_unet_mid_block_attentions_0_transformer_blocks_1_attn2_to_k + lora_unet_mid_block_attentions_0_transformer_blocks_1_attn2_to_out_0 + lora_unet_mid_block_attentions_0_transformer_blocks_1_attn2_to_q + lora_unet_mid_block_attentions_0_transformer_blocks_1_attn2_to_v + lora_unet_mid_block_attentions_0_transformer_blocks_1_ff_net_0_proj + lora_unet_mid_block_attentions_0_transformer_blocks_1_ff_net_2 + lora_unet_mid_block_attentions_0_transformer_blocks_2_attn1_to_k + lora_unet_mid_block_attentions_0_transformer_blocks_2_attn1_to_out_0 + lora_unet_mid_block_attentions_0_transformer_blocks_2_attn1_to_q + lora_unet_mid_block_attentions_0_transformer_blocks_2_attn1_to_v + lora_unet_mid_block_attentions_0_transformer_blocks_2_attn2_to_k + lora_unet_mid_block_attentions_0_transformer_blocks_2_attn2_to_out_0 + lora_unet_mid_block_attentions_0_transformer_blocks_2_attn2_to_q + lora_unet_mid_block_attentions_0_transformer_blocks_2_attn2_to_v + lora_unet_mid_block_attentions_0_transformer_blocks_2_ff_net_0_proj + lora_unet_mid_block_attentions_0_transformer_blocks_2_ff_net_2 + lora_unet_mid_block_attentions_0_transformer_blocks_3_attn1_to_k + lora_unet_mid_block_attentions_0_transformer_blocks_3_attn1_to_out_0 + lora_unet_mid_block_attentions_0_transformer_blocks_3_attn1_to_q + lora_unet_mid_block_attentions_0_transformer_blocks_3_attn1_to_v + lora_unet_mid_block_attentions_0_transformer_blocks_3_attn2_to_k + lora_unet_mid_block_attentions_0_transformer_blocks_3_attn2_to_out_0 + lora_unet_mid_block_attentions_0_transformer_blocks_3_attn2_to_q + lora_unet_mid_block_attentions_0_transformer_blocks_3_attn2_to_v + lora_unet_mid_block_attentions_0_transformer_blocks_3_ff_net_0_proj + lora_unet_mid_block_attentions_0_transformer_blocks_3_ff_net_2 + lora_unet_mid_block_attentions_0_transformer_blocks_4_attn1_to_k + lora_unet_mid_block_attentions_0_transformer_blocks_4_attn1_to_out_0 + lora_unet_mid_block_attentions_0_transformer_blocks_4_attn1_to_q + lora_unet_mid_block_attentions_0_transformer_blocks_4_attn1_to_v + lora_unet_mid_block_attentions_0_transformer_blocks_4_attn2_to_k + lora_unet_mid_block_attentions_0_transformer_blocks_4_attn2_to_out_0 + lora_unet_mid_block_attentions_0_transformer_blocks_4_attn2_to_q + lora_unet_mid_block_attentions_0_transformer_blocks_4_attn2_to_v + lora_unet_mid_block_attentions_0_transformer_blocks_4_ff_net_0_proj + lora_unet_mid_block_attentions_0_transformer_blocks_4_ff_net_2 + lora_unet_mid_block_attentions_0_transformer_blocks_5_attn1_to_k + lora_unet_mid_block_attentions_0_transformer_blocks_5_attn1_to_out_0 + lora_unet_mid_block_attentions_0_transformer_blocks_5_attn1_to_q + lora_unet_mid_block_attentions_0_transformer_blocks_5_attn1_to_v + lora_unet_mid_block_attentions_0_transformer_blocks_5_attn2_to_k + lora_unet_mid_block_attentions_0_transformer_blocks_5_attn2_to_out_0 + lora_unet_mid_block_attentions_0_transformer_blocks_5_attn2_to_q + lora_unet_mid_block_attentions_0_transformer_blocks_5_attn2_to_v + lora_unet_mid_block_attentions_0_transformer_blocks_5_ff_net_0_proj + lora_unet_mid_block_attentions_0_transformer_blocks_5_ff_net_2 + lora_unet_mid_block_attentions_0_transformer_blocks_6_attn1_to_k + lora_unet_mid_block_attentions_0_transformer_blocks_6_attn1_to_out_0 + lora_unet_mid_block_attentions_0_transformer_blocks_6_attn1_to_q + lora_unet_mid_block_attentions_0_transformer_blocks_6_attn1_to_v + lora_unet_mid_block_attentions_0_transformer_blocks_6_attn2_to_k + lora_unet_mid_block_attentions_0_transformer_blocks_6_attn2_to_out_0 + lora_unet_mid_block_attentions_0_transformer_blocks_6_attn2_to_q + lora_unet_mid_block_attentions_0_transformer_blocks_6_attn2_to_v + lora_unet_mid_block_attentions_0_transformer_blocks_6_ff_net_0_proj + lora_unet_mid_block_attentions_0_transformer_blocks_6_ff_net_2 + lora_unet_mid_block_attentions_0_transformer_blocks_7_attn1_to_k + lora_unet_mid_block_attentions_0_transformer_blocks_7_attn1_to_out_0 + lora_unet_mid_block_attentions_0_transformer_blocks_7_attn1_to_q + lora_unet_mid_block_attentions_0_transformer_blocks_7_attn1_to_v + lora_unet_mid_block_attentions_0_transformer_blocks_7_attn2_to_k + lora_unet_mid_block_attentions_0_transformer_blocks_7_attn2_to_out_0 + lora_unet_mid_block_attentions_0_transformer_blocks_7_attn2_to_q + lora_unet_mid_block_attentions_0_transformer_blocks_7_attn2_to_v + lora_unet_mid_block_attentions_0_transformer_blocks_7_ff_net_0_proj + lora_unet_mid_block_attentions_0_transformer_blocks_7_ff_net_2 + lora_unet_mid_block_attentions_0_transformer_blocks_8_attn1_to_k + lora_unet_mid_block_attentions_0_transformer_blocks_8_attn1_to_out_0 + lora_unet_mid_block_attentions_0_transformer_blocks_8_attn1_to_q + lora_unet_mid_block_attentions_0_transformer_blocks_8_attn1_to_v + lora_unet_mid_block_attentions_0_transformer_blocks_8_attn2_to_k + lora_unet_mid_block_attentions_0_transformer_blocks_8_attn2_to_out_0 + lora_unet_mid_block_attentions_0_transformer_blocks_8_attn2_to_q + lora_unet_mid_block_attentions_0_transformer_blocks_8_attn2_to_v + lora_unet_mid_block_attentions_0_transformer_blocks_8_ff_net_0_proj + lora_unet_mid_block_attentions_0_transformer_blocks_8_ff_net_2 + lora_unet_mid_block_attentions_0_transformer_blocks_9_attn1_to_k + lora_unet_mid_block_attentions_0_transformer_blocks_9_attn1_to_out_0 + lora_unet_mid_block_attentions_0_transformer_blocks_9_attn1_to_q + lora_unet_mid_block_attentions_0_transformer_blocks_9_attn1_to_v + lora_unet_mid_block_attentions_0_transformer_blocks_9_attn2_to_k + lora_unet_mid_block_attentions_0_transformer_blocks_9_attn2_to_out_0 + lora_unet_mid_block_attentions_0_transformer_blocks_9_attn2_to_q + lora_unet_mid_block_attentions_0_transformer_blocks_9_attn2_to_v + lora_unet_mid_block_attentions_0_transformer_blocks_9_ff_net_0_proj + lora_unet_mid_block_attentions_0_transformer_blocks_9_ff_net_2 + lora_unet_up_blocks_0_attentions_0_proj_in + lora_unet_up_blocks_0_attentions_0_proj_out + lora_unet_up_blocks_0_attentions_0_transformer_blocks_0_attn1_to_k + lora_unet_up_blocks_0_attentions_0_transformer_blocks_0_attn1_to_out_0 + lora_unet_up_blocks_0_attentions_0_transformer_blocks_0_attn1_to_q + lora_unet_up_blocks_0_attentions_0_transformer_blocks_0_attn1_to_v + lora_unet_up_blocks_0_attentions_0_transformer_blocks_0_attn2_to_k + lora_unet_up_blocks_0_attentions_0_transformer_blocks_0_attn2_to_out_0 + lora_unet_up_blocks_0_attentions_0_transformer_blocks_0_attn2_to_q + lora_unet_up_blocks_0_attentions_0_transformer_blocks_0_attn2_to_v + lora_unet_up_blocks_0_attentions_0_transformer_blocks_0_ff_net_0_proj + lora_unet_up_blocks_0_attentions_0_transformer_blocks_0_ff_net_2 + lora_unet_up_blocks_0_attentions_0_transformer_blocks_1_attn1_to_k + lora_unet_up_blocks_0_attentions_0_transformer_blocks_1_attn1_to_out_0 + lora_unet_up_blocks_0_attentions_0_transformer_blocks_1_attn1_to_q + lora_unet_up_blocks_0_attentions_0_transformer_blocks_1_attn1_to_v + lora_unet_up_blocks_0_attentions_0_transformer_blocks_1_attn2_to_k + lora_unet_up_blocks_0_attentions_0_transformer_blocks_1_attn2_to_out_0 + lora_unet_up_blocks_0_attentions_0_transformer_blocks_1_attn2_to_q + lora_unet_up_blocks_0_attentions_0_transformer_blocks_1_attn2_to_v + lora_unet_up_blocks_0_attentions_0_transformer_blocks_1_ff_net_0_proj + lora_unet_up_blocks_0_attentions_0_transformer_blocks_1_ff_net_2 + lora_unet_up_blocks_0_attentions_0_transformer_blocks_2_attn1_to_k + lora_unet_up_blocks_0_attentions_0_transformer_blocks_2_attn1_to_out_0 + lora_unet_up_blocks_0_attentions_0_transformer_blocks_2_attn1_to_q + lora_unet_up_blocks_0_attentions_0_transformer_blocks_2_attn1_to_v + lora_unet_up_blocks_0_attentions_0_transformer_blocks_2_attn2_to_k + lora_unet_up_blocks_0_attentions_0_transformer_blocks_2_attn2_to_out_0 + lora_unet_up_blocks_0_attentions_0_transformer_blocks_2_attn2_to_q + lora_unet_up_blocks_0_attentions_0_transformer_blocks_2_attn2_to_v + lora_unet_up_blocks_0_attentions_0_transformer_blocks_2_ff_net_0_proj + lora_unet_up_blocks_0_attentions_0_transformer_blocks_2_ff_net_2 + lora_unet_up_blocks_0_attentions_0_transformer_blocks_3_attn1_to_k + lora_unet_up_blocks_0_attentions_0_transformer_blocks_3_attn1_to_out_0 + lora_unet_up_blocks_0_attentions_0_transformer_blocks_3_attn1_to_q + lora_unet_up_blocks_0_attentions_0_transformer_blocks_3_attn1_to_v + lora_unet_up_blocks_0_attentions_0_transformer_blocks_3_attn2_to_k + lora_unet_up_blocks_0_attentions_0_transformer_blocks_3_attn2_to_out_0 + lora_unet_up_blocks_0_attentions_0_transformer_blocks_3_attn2_to_q + lora_unet_up_blocks_0_attentions_0_transformer_blocks_3_attn2_to_v + lora_unet_up_blocks_0_attentions_0_transformer_blocks_3_ff_net_0_proj + lora_unet_up_blocks_0_attentions_0_transformer_blocks_3_ff_net_2 + lora_unet_up_blocks_0_attentions_0_transformer_blocks_4_attn1_to_k + lora_unet_up_blocks_0_attentions_0_transformer_blocks_4_attn1_to_out_0 + lora_unet_up_blocks_0_attentions_0_transformer_blocks_4_attn1_to_q + lora_unet_up_blocks_0_attentions_0_transformer_blocks_4_attn1_to_v + lora_unet_up_blocks_0_attentions_0_transformer_blocks_4_attn2_to_k + lora_unet_up_blocks_0_attentions_0_transformer_blocks_4_attn2_to_out_0 + lora_unet_up_blocks_0_attentions_0_transformer_blocks_4_attn2_to_q + lora_unet_up_blocks_0_attentions_0_transformer_blocks_4_attn2_to_v + lora_unet_up_blocks_0_attentions_0_transformer_blocks_4_ff_net_0_proj + lora_unet_up_blocks_0_attentions_0_transformer_blocks_4_ff_net_2 + lora_unet_up_blocks_0_attentions_0_transformer_blocks_5_attn1_to_k + lora_unet_up_blocks_0_attentions_0_transformer_blocks_5_attn1_to_out_0 + lora_unet_up_blocks_0_attentions_0_transformer_blocks_5_attn1_to_q + lora_unet_up_blocks_0_attentions_0_transformer_blocks_5_attn1_to_v + lora_unet_up_blocks_0_attentions_0_transformer_blocks_5_attn2_to_k + lora_unet_up_blocks_0_attentions_0_transformer_blocks_5_attn2_to_out_0 + lora_unet_up_blocks_0_attentions_0_transformer_blocks_5_attn2_to_q + lora_unet_up_blocks_0_attentions_0_transformer_blocks_5_attn2_to_v + lora_unet_up_blocks_0_attentions_0_transformer_blocks_5_ff_net_0_proj + lora_unet_up_blocks_0_attentions_0_transformer_blocks_5_ff_net_2 + lora_unet_up_blocks_0_attentions_0_transformer_blocks_6_attn1_to_k + lora_unet_up_blocks_0_attentions_0_transformer_blocks_6_attn1_to_out_0 + lora_unet_up_blocks_0_attentions_0_transformer_blocks_6_attn1_to_q + lora_unet_up_blocks_0_attentions_0_transformer_blocks_6_attn1_to_v + lora_unet_up_blocks_0_attentions_0_transformer_blocks_6_attn2_to_k + lora_unet_up_blocks_0_attentions_0_transformer_blocks_6_attn2_to_out_0 + lora_unet_up_blocks_0_attentions_0_transformer_blocks_6_attn2_to_q + lora_unet_up_blocks_0_attentions_0_transformer_blocks_6_attn2_to_v + lora_unet_up_blocks_0_attentions_0_transformer_blocks_6_ff_net_0_proj + lora_unet_up_blocks_0_attentions_0_transformer_blocks_6_ff_net_2 + lora_unet_up_blocks_0_attentions_0_transformer_blocks_7_attn1_to_k + lora_unet_up_blocks_0_attentions_0_transformer_blocks_7_attn1_to_out_0 + lora_unet_up_blocks_0_attentions_0_transformer_blocks_7_attn1_to_q + lora_unet_up_blocks_0_attentions_0_transformer_blocks_7_attn1_to_v + lora_unet_up_blocks_0_attentions_0_transformer_blocks_7_attn2_to_k + lora_unet_up_blocks_0_attentions_0_transformer_blocks_7_attn2_to_out_0 + lora_unet_up_blocks_0_attentions_0_transformer_blocks_7_attn2_to_q + lora_unet_up_blocks_0_attentions_0_transformer_blocks_7_attn2_to_v + lora_unet_up_blocks_0_attentions_0_transformer_blocks_7_ff_net_0_proj + lora_unet_up_blocks_0_attentions_0_transformer_blocks_7_ff_net_2 + lora_unet_up_blocks_0_attentions_0_transformer_blocks_8_attn1_to_k + lora_unet_up_blocks_0_attentions_0_transformer_blocks_8_attn1_to_out_0 + lora_unet_up_blocks_0_attentions_0_transformer_blocks_8_attn1_to_q + lora_unet_up_blocks_0_attentions_0_transformer_blocks_8_attn1_to_v + lora_unet_up_blocks_0_attentions_0_transformer_blocks_8_attn2_to_k + lora_unet_up_blocks_0_attentions_0_transformer_blocks_8_attn2_to_out_0 + lora_unet_up_blocks_0_attentions_0_transformer_blocks_8_attn2_to_q + lora_unet_up_blocks_0_attentions_0_transformer_blocks_8_attn2_to_v + lora_unet_up_blocks_0_attentions_0_transformer_blocks_8_ff_net_0_proj + lora_unet_up_blocks_0_attentions_0_transformer_blocks_8_ff_net_2 + lora_unet_up_blocks_0_attentions_0_transformer_blocks_9_attn1_to_k + lora_unet_up_blocks_0_attentions_0_transformer_blocks_9_attn1_to_out_0 + lora_unet_up_blocks_0_attentions_0_transformer_blocks_9_attn1_to_q + lora_unet_up_blocks_0_attentions_0_transformer_blocks_9_attn1_to_v + lora_unet_up_blocks_0_attentions_0_transformer_blocks_9_attn2_to_k + lora_unet_up_blocks_0_attentions_0_transformer_blocks_9_attn2_to_out_0 + lora_unet_up_blocks_0_attentions_0_transformer_blocks_9_attn2_to_q + lora_unet_up_blocks_0_attentions_0_transformer_blocks_9_attn2_to_v + lora_unet_up_blocks_0_attentions_0_transformer_blocks_9_ff_net_0_proj + lora_unet_up_blocks_0_attentions_0_transformer_blocks_9_ff_net_2 + lora_unet_up_blocks_0_attentions_1_proj_in + lora_unet_up_blocks_0_attentions_1_proj_out + lora_unet_up_blocks_0_attentions_1_transformer_blocks_0_attn1_to_k + lora_unet_up_blocks_0_attentions_1_transformer_blocks_0_attn1_to_out_0 + lora_unet_up_blocks_0_attentions_1_transformer_blocks_0_attn1_to_q + lora_unet_up_blocks_0_attentions_1_transformer_blocks_0_attn1_to_v + lora_unet_up_blocks_0_attentions_1_transformer_blocks_0_attn2_to_k + lora_unet_up_blocks_0_attentions_1_transformer_blocks_0_attn2_to_out_0 + lora_unet_up_blocks_0_attentions_1_transformer_blocks_0_attn2_to_q + lora_unet_up_blocks_0_attentions_1_transformer_blocks_0_attn2_to_v + lora_unet_up_blocks_0_attentions_1_transformer_blocks_0_ff_net_0_proj + lora_unet_up_blocks_0_attentions_1_transformer_blocks_0_ff_net_2 + lora_unet_up_blocks_0_attentions_1_transformer_blocks_1_attn1_to_k + lora_unet_up_blocks_0_attentions_1_transformer_blocks_1_attn1_to_out_0 + lora_unet_up_blocks_0_attentions_1_transformer_blocks_1_attn1_to_q + lora_unet_up_blocks_0_attentions_1_transformer_blocks_1_attn1_to_v + lora_unet_up_blocks_0_attentions_1_transformer_blocks_1_attn2_to_k + lora_unet_up_blocks_0_attentions_1_transformer_blocks_1_attn2_to_out_0 + lora_unet_up_blocks_0_attentions_1_transformer_blocks_1_attn2_to_q + lora_unet_up_blocks_0_attentions_1_transformer_blocks_1_attn2_to_v + lora_unet_up_blocks_0_attentions_1_transformer_blocks_1_ff_net_0_proj + lora_unet_up_blocks_0_attentions_1_transformer_blocks_1_ff_net_2 + lora_unet_up_blocks_0_attentions_1_transformer_blocks_2_attn1_to_k + lora_unet_up_blocks_0_attentions_1_transformer_blocks_2_attn1_to_out_0 + lora_unet_up_blocks_0_attentions_1_transformer_blocks_2_attn1_to_q + lora_unet_up_blocks_0_attentions_1_transformer_blocks_2_attn1_to_v + lora_unet_up_blocks_0_attentions_1_transformer_blocks_2_attn2_to_k + lora_unet_up_blocks_0_attentions_1_transformer_blocks_2_attn2_to_out_0 + lora_unet_up_blocks_0_attentions_1_transformer_blocks_2_attn2_to_q + lora_unet_up_blocks_0_attentions_1_transformer_blocks_2_attn2_to_v + lora_unet_up_blocks_0_attentions_1_transformer_blocks_2_ff_net_0_proj + lora_unet_up_blocks_0_attentions_1_transformer_blocks_2_ff_net_2 + lora_unet_up_blocks_0_attentions_1_transformer_blocks_3_attn1_to_k + lora_unet_up_blocks_0_attentions_1_transformer_blocks_3_attn1_to_out_0 + lora_unet_up_blocks_0_attentions_1_transformer_blocks_3_attn1_to_q + lora_unet_up_blocks_0_attentions_1_transformer_blocks_3_attn1_to_v + lora_unet_up_blocks_0_attentions_1_transformer_blocks_3_attn2_to_k + lora_unet_up_blocks_0_attentions_1_transformer_blocks_3_attn2_to_out_0 + lora_unet_up_blocks_0_attentions_1_transformer_blocks_3_attn2_to_q + lora_unet_up_blocks_0_attentions_1_transformer_blocks_3_attn2_to_v + lora_unet_up_blocks_0_attentions_1_transformer_blocks_3_ff_net_0_proj + lora_unet_up_blocks_0_attentions_1_transformer_blocks_3_ff_net_2 + lora_unet_up_blocks_0_attentions_1_transformer_blocks_4_attn1_to_k + lora_unet_up_blocks_0_attentions_1_transformer_blocks_4_attn1_to_out_0 + lora_unet_up_blocks_0_attentions_1_transformer_blocks_4_attn1_to_q + lora_unet_up_blocks_0_attentions_1_transformer_blocks_4_attn1_to_v + lora_unet_up_blocks_0_attentions_1_transformer_blocks_4_attn2_to_k + lora_unet_up_blocks_0_attentions_1_transformer_blocks_4_attn2_to_out_0 + lora_unet_up_blocks_0_attentions_1_transformer_blocks_4_attn2_to_q + lora_unet_up_blocks_0_attentions_1_transformer_blocks_4_attn2_to_v + lora_unet_up_blocks_0_attentions_1_transformer_blocks_4_ff_net_0_proj + lora_unet_up_blocks_0_attentions_1_transformer_blocks_4_ff_net_2 + lora_unet_up_blocks_0_attentions_1_transformer_blocks_5_attn1_to_k + lora_unet_up_blocks_0_attentions_1_transformer_blocks_5_attn1_to_out_0 + lora_unet_up_blocks_0_attentions_1_transformer_blocks_5_attn1_to_q + lora_unet_up_blocks_0_attentions_1_transformer_blocks_5_attn1_to_v + lora_unet_up_blocks_0_attentions_1_transformer_blocks_5_attn2_to_k + lora_unet_up_blocks_0_attentions_1_transformer_blocks_5_attn2_to_out_0 + lora_unet_up_blocks_0_attentions_1_transformer_blocks_5_attn2_to_q + lora_unet_up_blocks_0_attentions_1_transformer_blocks_5_attn2_to_v + lora_unet_up_blocks_0_attentions_1_transformer_blocks_5_ff_net_0_proj + lora_unet_up_blocks_0_attentions_1_transformer_blocks_5_ff_net_2 + lora_unet_up_blocks_0_attentions_1_transformer_blocks_6_attn1_to_k + lora_unet_up_blocks_0_attentions_1_transformer_blocks_6_attn1_to_out_0 + lora_unet_up_blocks_0_attentions_1_transformer_blocks_6_attn1_to_q + lora_unet_up_blocks_0_attentions_1_transformer_blocks_6_attn1_to_v + lora_unet_up_blocks_0_attentions_1_transformer_blocks_6_attn2_to_k + lora_unet_up_blocks_0_attentions_1_transformer_blocks_6_attn2_to_out_0 + lora_unet_up_blocks_0_attentions_1_transformer_blocks_6_attn2_to_q + lora_unet_up_blocks_0_attentions_1_transformer_blocks_6_attn2_to_v + lora_unet_up_blocks_0_attentions_1_transformer_blocks_6_ff_net_0_proj + lora_unet_up_blocks_0_attentions_1_transformer_blocks_6_ff_net_2 + lora_unet_up_blocks_0_attentions_1_transformer_blocks_7_attn1_to_k + lora_unet_up_blocks_0_attentions_1_transformer_blocks_7_attn1_to_out_0 + lora_unet_up_blocks_0_attentions_1_transformer_blocks_7_attn1_to_q + lora_unet_up_blocks_0_attentions_1_transformer_blocks_7_attn1_to_v + lora_unet_up_blocks_0_attentions_1_transformer_blocks_7_attn2_to_k + lora_unet_up_blocks_0_attentions_1_transformer_blocks_7_attn2_to_out_0 + lora_unet_up_blocks_0_attentions_1_transformer_blocks_7_attn2_to_q + lora_unet_up_blocks_0_attentions_1_transformer_blocks_7_attn2_to_v + lora_unet_up_blocks_0_attentions_1_transformer_blocks_7_ff_net_0_proj + lora_unet_up_blocks_0_attentions_1_transformer_blocks_7_ff_net_2 + lora_unet_up_blocks_0_attentions_1_transformer_blocks_8_attn1_to_k + lora_unet_up_blocks_0_attentions_1_transformer_blocks_8_attn1_to_out_0 + lora_unet_up_blocks_0_attentions_1_transformer_blocks_8_attn1_to_q + lora_unet_up_blocks_0_attentions_1_transformer_blocks_8_attn1_to_v + lora_unet_up_blocks_0_attentions_1_transformer_blocks_8_attn2_to_k + lora_unet_up_blocks_0_attentions_1_transformer_blocks_8_attn2_to_out_0 + lora_unet_up_blocks_0_attentions_1_transformer_blocks_8_attn2_to_q + lora_unet_up_blocks_0_attentions_1_transformer_blocks_8_attn2_to_v + lora_unet_up_blocks_0_attentions_1_transformer_blocks_8_ff_net_0_proj + lora_unet_up_blocks_0_attentions_1_transformer_blocks_8_ff_net_2 + lora_unet_up_blocks_0_attentions_1_transformer_blocks_9_attn1_to_k + lora_unet_up_blocks_0_attentions_1_transformer_blocks_9_attn1_to_out_0 + lora_unet_up_blocks_0_attentions_1_transformer_blocks_9_attn1_to_q + lora_unet_up_blocks_0_attentions_1_transformer_blocks_9_attn1_to_v + lora_unet_up_blocks_0_attentions_1_transformer_blocks_9_attn2_to_k + lora_unet_up_blocks_0_attentions_1_transformer_blocks_9_attn2_to_out_0 + lora_unet_up_blocks_0_attentions_1_transformer_blocks_9_attn2_to_q + lora_unet_up_blocks_0_attentions_1_transformer_blocks_9_attn2_to_v + lora_unet_up_blocks_0_attentions_1_transformer_blocks_9_ff_net_0_proj + lora_unet_up_blocks_0_attentions_1_transformer_blocks_9_ff_net_2 + lora_unet_up_blocks_0_attentions_2_proj_in + lora_unet_up_blocks_0_attentions_2_proj_out + lora_unet_up_blocks_0_attentions_2_transformer_blocks_0_attn1_to_k + lora_unet_up_blocks_0_attentions_2_transformer_blocks_0_attn1_to_out_0 + lora_unet_up_blocks_0_attentions_2_transformer_blocks_0_attn1_to_q + lora_unet_up_blocks_0_attentions_2_transformer_blocks_0_attn1_to_v + lora_unet_up_blocks_0_attentions_2_transformer_blocks_0_attn2_to_k + lora_unet_up_blocks_0_attentions_2_transformer_blocks_0_attn2_to_out_0 + lora_unet_up_blocks_0_attentions_2_transformer_blocks_0_attn2_to_q + lora_unet_up_blocks_0_attentions_2_transformer_blocks_0_attn2_to_v + lora_unet_up_blocks_0_attentions_2_transformer_blocks_0_ff_net_0_proj + lora_unet_up_blocks_0_attentions_2_transformer_blocks_0_ff_net_2 + lora_unet_up_blocks_0_attentions_2_transformer_blocks_1_attn1_to_k + lora_unet_up_blocks_0_attentions_2_transformer_blocks_1_attn1_to_out_0 + lora_unet_up_blocks_0_attentions_2_transformer_blocks_1_attn1_to_q + lora_unet_up_blocks_0_attentions_2_transformer_blocks_1_attn1_to_v + lora_unet_up_blocks_0_attentions_2_transformer_blocks_1_attn2_to_k + lora_unet_up_blocks_0_attentions_2_transformer_blocks_1_attn2_to_out_0 + lora_unet_up_blocks_0_attentions_2_transformer_blocks_1_attn2_to_q + lora_unet_up_blocks_0_attentions_2_transformer_blocks_1_attn2_to_v + lora_unet_up_blocks_0_attentions_2_transformer_blocks_1_ff_net_0_proj + lora_unet_up_blocks_0_attentions_2_transformer_blocks_1_ff_net_2 + lora_unet_up_blocks_0_attentions_2_transformer_blocks_2_attn1_to_k + lora_unet_up_blocks_0_attentions_2_transformer_blocks_2_attn1_to_out_0 + lora_unet_up_blocks_0_attentions_2_transformer_blocks_2_attn1_to_q + lora_unet_up_blocks_0_attentions_2_transformer_blocks_2_attn1_to_v + lora_unet_up_blocks_0_attentions_2_transformer_blocks_2_attn2_to_k + lora_unet_up_blocks_0_attentions_2_transformer_blocks_2_attn2_to_out_0 + lora_unet_up_blocks_0_attentions_2_transformer_blocks_2_attn2_to_q + lora_unet_up_blocks_0_attentions_2_transformer_blocks_2_attn2_to_v + lora_unet_up_blocks_0_attentions_2_transformer_blocks_2_ff_net_0_proj + lora_unet_up_blocks_0_attentions_2_transformer_blocks_2_ff_net_2 + lora_unet_up_blocks_0_attentions_2_transformer_blocks_3_attn1_to_k + lora_unet_up_blocks_0_attentions_2_transformer_blocks_3_attn1_to_out_0 + lora_unet_up_blocks_0_attentions_2_transformer_blocks_3_attn1_to_q + lora_unet_up_blocks_0_attentions_2_transformer_blocks_3_attn1_to_v + lora_unet_up_blocks_0_attentions_2_transformer_blocks_3_attn2_to_k + lora_unet_up_blocks_0_attentions_2_transformer_blocks_3_attn2_to_out_0 + lora_unet_up_blocks_0_attentions_2_transformer_blocks_3_attn2_to_q + lora_unet_up_blocks_0_attentions_2_transformer_blocks_3_attn2_to_v + lora_unet_up_blocks_0_attentions_2_transformer_blocks_3_ff_net_0_proj + lora_unet_up_blocks_0_attentions_2_transformer_blocks_3_ff_net_2 + lora_unet_up_blocks_0_attentions_2_transformer_blocks_4_attn1_to_k + lora_unet_up_blocks_0_attentions_2_transformer_blocks_4_attn1_to_out_0 + lora_unet_up_blocks_0_attentions_2_transformer_blocks_4_attn1_to_q + lora_unet_up_blocks_0_attentions_2_transformer_blocks_4_attn1_to_v + lora_unet_up_blocks_0_attentions_2_transformer_blocks_4_attn2_to_k + lora_unet_up_blocks_0_attentions_2_transformer_blocks_4_attn2_to_out_0 + lora_unet_up_blocks_0_attentions_2_transformer_blocks_4_attn2_to_q + lora_unet_up_blocks_0_attentions_2_transformer_blocks_4_attn2_to_v + lora_unet_up_blocks_0_attentions_2_transformer_blocks_4_ff_net_0_proj + lora_unet_up_blocks_0_attentions_2_transformer_blocks_4_ff_net_2 + lora_unet_up_blocks_0_attentions_2_transformer_blocks_5_attn1_to_k + lora_unet_up_blocks_0_attentions_2_transformer_blocks_5_attn1_to_out_0 + lora_unet_up_blocks_0_attentions_2_transformer_blocks_5_attn1_to_q + lora_unet_up_blocks_0_attentions_2_transformer_blocks_5_attn1_to_v + lora_unet_up_blocks_0_attentions_2_transformer_blocks_5_attn2_to_k + lora_unet_up_blocks_0_attentions_2_transformer_blocks_5_attn2_to_out_0 + lora_unet_up_blocks_0_attentions_2_transformer_blocks_5_attn2_to_q + lora_unet_up_blocks_0_attentions_2_transformer_blocks_5_attn2_to_v + lora_unet_up_blocks_0_attentions_2_transformer_blocks_5_ff_net_0_proj + lora_unet_up_blocks_0_attentions_2_transformer_blocks_5_ff_net_2 + lora_unet_up_blocks_0_attentions_2_transformer_blocks_6_attn1_to_k + lora_unet_up_blocks_0_attentions_2_transformer_blocks_6_attn1_to_out_0 + lora_unet_up_blocks_0_attentions_2_transformer_blocks_6_attn1_to_q + lora_unet_up_blocks_0_attentions_2_transformer_blocks_6_attn1_to_v + lora_unet_up_blocks_0_attentions_2_transformer_blocks_6_attn2_to_k + lora_unet_up_blocks_0_attentions_2_transformer_blocks_6_attn2_to_out_0 + lora_unet_up_blocks_0_attentions_2_transformer_blocks_6_attn2_to_q + lora_unet_up_blocks_0_attentions_2_transformer_blocks_6_attn2_to_v + lora_unet_up_blocks_0_attentions_2_transformer_blocks_6_ff_net_0_proj + lora_unet_up_blocks_0_attentions_2_transformer_blocks_6_ff_net_2 + lora_unet_up_blocks_0_attentions_2_transformer_blocks_7_attn1_to_k + lora_unet_up_blocks_0_attentions_2_transformer_blocks_7_attn1_to_out_0 + lora_unet_up_blocks_0_attentions_2_transformer_blocks_7_attn1_to_q + lora_unet_up_blocks_0_attentions_2_transformer_blocks_7_attn1_to_v + lora_unet_up_blocks_0_attentions_2_transformer_blocks_7_attn2_to_k + lora_unet_up_blocks_0_attentions_2_transformer_blocks_7_attn2_to_out_0 + lora_unet_up_blocks_0_attentions_2_transformer_blocks_7_attn2_to_q + lora_unet_up_blocks_0_attentions_2_transformer_blocks_7_attn2_to_v + lora_unet_up_blocks_0_attentions_2_transformer_blocks_7_ff_net_0_proj + lora_unet_up_blocks_0_attentions_2_transformer_blocks_7_ff_net_2 + lora_unet_up_blocks_0_attentions_2_transformer_blocks_8_attn1_to_k + lora_unet_up_blocks_0_attentions_2_transformer_blocks_8_attn1_to_out_0 + lora_unet_up_blocks_0_attentions_2_transformer_blocks_8_attn1_to_q + lora_unet_up_blocks_0_attentions_2_transformer_blocks_8_attn1_to_v + lora_unet_up_blocks_0_attentions_2_transformer_blocks_8_attn2_to_k + lora_unet_up_blocks_0_attentions_2_transformer_blocks_8_attn2_to_out_0 + lora_unet_up_blocks_0_attentions_2_transformer_blocks_8_attn2_to_q + lora_unet_up_blocks_0_attentions_2_transformer_blocks_8_attn2_to_v + lora_unet_up_blocks_0_attentions_2_transformer_blocks_8_ff_net_0_proj + lora_unet_up_blocks_0_attentions_2_transformer_blocks_8_ff_net_2 + lora_unet_up_blocks_0_attentions_2_transformer_blocks_9_attn1_to_k + lora_unet_up_blocks_0_attentions_2_transformer_blocks_9_attn1_to_out_0 + lora_unet_up_blocks_0_attentions_2_transformer_blocks_9_attn1_to_q + lora_unet_up_blocks_0_attentions_2_transformer_blocks_9_attn1_to_v + lora_unet_up_blocks_0_attentions_2_transformer_blocks_9_attn2_to_k + lora_unet_up_blocks_0_attentions_2_transformer_blocks_9_attn2_to_out_0 + lora_unet_up_blocks_0_attentions_2_transformer_blocks_9_attn2_to_q + lora_unet_up_blocks_0_attentions_2_transformer_blocks_9_attn2_to_v + lora_unet_up_blocks_0_attentions_2_transformer_blocks_9_ff_net_0_proj + lora_unet_up_blocks_0_attentions_2_transformer_blocks_9_ff_net_2 + lora_unet_up_blocks_1_attentions_0_proj_in + lora_unet_up_blocks_1_attentions_0_proj_out + lora_unet_up_blocks_1_attentions_0_transformer_blocks_0_attn1_to_k + lora_unet_up_blocks_1_attentions_0_transformer_blocks_0_attn1_to_out_0 + lora_unet_up_blocks_1_attentions_0_transformer_blocks_0_attn1_to_q + lora_unet_up_blocks_1_attentions_0_transformer_blocks_0_attn1_to_v + lora_unet_up_blocks_1_attentions_0_transformer_blocks_0_attn2_to_k + lora_unet_up_blocks_1_attentions_0_transformer_blocks_0_attn2_to_out_0 + lora_unet_up_blocks_1_attentions_0_transformer_blocks_0_attn2_to_q + lora_unet_up_blocks_1_attentions_0_transformer_blocks_0_attn2_to_v + lora_unet_up_blocks_1_attentions_0_transformer_blocks_0_ff_net_0_proj + lora_unet_up_blocks_1_attentions_0_transformer_blocks_0_ff_net_2 + lora_unet_up_blocks_1_attentions_0_transformer_blocks_1_attn1_to_k + lora_unet_up_blocks_1_attentions_0_transformer_blocks_1_attn1_to_out_0 + lora_unet_up_blocks_1_attentions_0_transformer_blocks_1_attn1_to_q + lora_unet_up_blocks_1_attentions_0_transformer_blocks_1_attn1_to_v + lora_unet_up_blocks_1_attentions_0_transformer_blocks_1_attn2_to_k + lora_unet_up_blocks_1_attentions_0_transformer_blocks_1_attn2_to_out_0 + lora_unet_up_blocks_1_attentions_0_transformer_blocks_1_attn2_to_q + lora_unet_up_blocks_1_attentions_0_transformer_blocks_1_attn2_to_v + lora_unet_up_blocks_1_attentions_0_transformer_blocks_1_ff_net_0_proj + lora_unet_up_blocks_1_attentions_0_transformer_blocks_1_ff_net_2 + lora_unet_up_blocks_1_attentions_1_proj_in + lora_unet_up_blocks_1_attentions_1_proj_out + lora_unet_up_blocks_1_attentions_1_transformer_blocks_0_attn1_to_k + lora_unet_up_blocks_1_attentions_1_transformer_blocks_0_attn1_to_out_0 + lora_unet_up_blocks_1_attentions_1_transformer_blocks_0_attn1_to_q + lora_unet_up_blocks_1_attentions_1_transformer_blocks_0_attn1_to_v + lora_unet_up_blocks_1_attentions_1_transformer_blocks_0_attn2_to_k + lora_unet_up_blocks_1_attentions_1_transformer_blocks_0_attn2_to_out_0 + lora_unet_up_blocks_1_attentions_1_transformer_blocks_0_attn2_to_q + lora_unet_up_blocks_1_attentions_1_transformer_blocks_0_attn2_to_v + lora_unet_up_blocks_1_attentions_1_transformer_blocks_0_ff_net_0_proj + lora_unet_up_blocks_1_attentions_1_transformer_blocks_0_ff_net_2 + lora_unet_up_blocks_1_attentions_1_transformer_blocks_1_attn1_to_k + lora_unet_up_blocks_1_attentions_1_transformer_blocks_1_attn1_to_out_0 + lora_unet_up_blocks_1_attentions_1_transformer_blocks_1_attn1_to_q + lora_unet_up_blocks_1_attentions_1_transformer_blocks_1_attn1_to_v + lora_unet_up_blocks_1_attentions_1_transformer_blocks_1_attn2_to_k + lora_unet_up_blocks_1_attentions_1_transformer_blocks_1_attn2_to_out_0 + lora_unet_up_blocks_1_attentions_1_transformer_blocks_1_attn2_to_q + lora_unet_up_blocks_1_attentions_1_transformer_blocks_1_attn2_to_v + lora_unet_up_blocks_1_attentions_1_transformer_blocks_1_ff_net_0_proj + lora_unet_up_blocks_1_attentions_1_transformer_blocks_1_ff_net_2 + lora_unet_up_blocks_1_attentions_2_proj_in + lora_unet_up_blocks_1_attentions_2_proj_out + lora_unet_up_blocks_1_attentions_2_transformer_blocks_0_attn1_to_k + lora_unet_up_blocks_1_attentions_2_transformer_blocks_0_attn1_to_out_0 + lora_unet_up_blocks_1_attentions_2_transformer_blocks_0_attn1_to_q + lora_unet_up_blocks_1_attentions_2_transformer_blocks_0_attn1_to_v + lora_unet_up_blocks_1_attentions_2_transformer_blocks_0_attn2_to_k + lora_unet_up_blocks_1_attentions_2_transformer_blocks_0_attn2_to_out_0 + lora_unet_up_blocks_1_attentions_2_transformer_blocks_0_attn2_to_q + lora_unet_up_blocks_1_attentions_2_transformer_blocks_0_attn2_to_v + lora_unet_up_blocks_1_attentions_2_transformer_blocks_0_ff_net_0_proj + lora_unet_up_blocks_1_attentions_2_transformer_blocks_0_ff_net_2 + lora_unet_up_blocks_1_attentions_2_transformer_blocks_1_attn1_to_k + lora_unet_up_blocks_1_attentions_2_transformer_blocks_1_attn1_to_out_0 + lora_unet_up_blocks_1_attentions_2_transformer_blocks_1_attn1_to_q + lora_unet_up_blocks_1_attentions_2_transformer_blocks_1_attn1_to_v + lora_unet_up_blocks_1_attentions_2_transformer_blocks_1_attn2_to_k + lora_unet_up_blocks_1_attentions_2_transformer_blocks_1_attn2_to_out_0 + lora_unet_up_blocks_1_attentions_2_transformer_blocks_1_attn2_to_q + lora_unet_up_blocks_1_attentions_2_transformer_blocks_1_attn2_to_v + lora_unet_up_blocks_1_attentions_2_transformer_blocks_1_ff_net_0_proj + lora_unet_up_blocks_1_attentions_2_transformer_blocks_1_ff_net_2 + +================================================================================ + +Pattern matching analysis: + +ATTENTION (2888 keys): + lora_unet_down_blocks_1_attentions_0_proj_in.alpha + lora_unet_down_blocks_1_attentions_0_proj_in.dora_scale + lora_unet_down_blocks_1_attentions_0_proj_in.lora_down.weight + lora_unet_down_blocks_1_attentions_0_proj_in.lora_up.weight + lora_unet_down_blocks_1_attentions_0_proj_out.alpha + ... and 2883 more + +MLP/FEEDFORWARD (560 keys): + lora_unet_down_blocks_1_attentions_0_transformer_blocks_0_ff_net_0_proj.alpha + lora_unet_down_blocks_1_attentions_0_transformer_blocks_0_ff_net_0_proj.dora_scale + lora_unet_down_blocks_1_attentions_0_transformer_blocks_0_ff_net_0_proj.lora_down.weight + lora_unet_down_blocks_1_attentions_0_transformer_blocks_0_ff_net_0_proj.lora_up.weight + lora_unet_down_blocks_1_attentions_0_transformer_blocks_0_ff_net_2.alpha + ... and 555 more + +PROJECTION (368 keys): + lora_unet_down_blocks_1_attentions_0_proj_in.alpha + lora_unet_down_blocks_1_attentions_0_proj_in.dora_scale + lora_unet_down_blocks_1_attentions_0_proj_in.lora_down.weight + lora_unet_down_blocks_1_attentions_0_proj_in.lora_up.weight + lora_unet_down_blocks_1_attentions_0_proj_out.alpha + ... and 363 more + +================================================================================ + +Architecture detection: + -> Unknown architecture \ No newline at end of file diff --git a/tests/lora_keys/wan_2_2_lora.txt b/tests/lora_keys/wan_2_2_lora.txt new file mode 100644 index 0000000..f5e1619 --- /dev/null +++ b/tests/lora_keys/wan_2_2_lora.txt @@ -0,0 +1,105 @@ +Analyzing LoRA: LoRA/WAN_2_2-LoRA.safetensors + +Total keys: 800 + +Sample keys (first 20): + diffusion_model.blocks.0.cross_attn.k.lora_A.weight + diffusion_model.blocks.0.cross_attn.k.lora_B.weight + diffusion_model.blocks.0.cross_attn.o.lora_A.weight + diffusion_model.blocks.0.cross_attn.o.lora_B.weight + diffusion_model.blocks.0.cross_attn.q.lora_A.weight + diffusion_model.blocks.0.cross_attn.q.lora_B.weight + diffusion_model.blocks.0.cross_attn.v.lora_A.weight + diffusion_model.blocks.0.cross_attn.v.lora_B.weight + diffusion_model.blocks.0.ffn.0.lora_A.weight + diffusion_model.blocks.0.ffn.0.lora_B.weight + diffusion_model.blocks.0.ffn.2.lora_A.weight + diffusion_model.blocks.0.ffn.2.lora_B.weight + diffusion_model.blocks.0.self_attn.k.lora_A.weight + diffusion_model.blocks.0.self_attn.k.lora_B.weight + diffusion_model.blocks.0.self_attn.o.lora_A.weight + diffusion_model.blocks.0.self_attn.o.lora_B.weight + diffusion_model.blocks.0.self_attn.q.lora_A.weight + diffusion_model.blocks.0.self_attn.q.lora_B.weight + diffusion_model.blocks.0.self_attn.v.lora_A.weight + diffusion_model.blocks.0.self_attn.v.lora_B.weight + +================================================================================ + +Unique layer components found: + 0 + 1 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 18 + 19 + 2 + 20 + 21 + 22 + 23 + 24 + 25 + 26 + 27 + 28 + 29 + 3 + 30 + 31 + 32 + 33 + 34 + 35 + 36 + 37 + 38 + 39 + 4 + 5 + 6 + 7 + 8 + 9 + blocks + cross_attn + diffusion_model + ffn + k + lora_A + lora_B + o + q + self_attn + v + +================================================================================ + +Pattern matching analysis: + +ATTENTION (640 keys): + diffusion_model.blocks.0.cross_attn.k.lora_A.weight + diffusion_model.blocks.0.cross_attn.k.lora_B.weight + diffusion_model.blocks.0.cross_attn.o.lora_A.weight + diffusion_model.blocks.0.cross_attn.o.lora_B.weight + diffusion_model.blocks.0.cross_attn.q.lora_A.weight + ... and 635 more + +MLP/FEEDFORWARD (800 keys): + diffusion_model.blocks.0.cross_attn.k.lora_A.weight + diffusion_model.blocks.0.cross_attn.k.lora_B.weight + diffusion_model.blocks.0.cross_attn.o.lora_A.weight + diffusion_model.blocks.0.cross_attn.o.lora_B.weight + diffusion_model.blocks.0.cross_attn.q.lora_A.weight + ... and 795 more + +================================================================================ + +Architecture detection: + -> Unknown architecture \ No newline at end of file diff --git a/tests/lora_keys/zImage_lora.txt b/tests/lora_keys/zImage_lora.txt new file mode 100644 index 0000000..5cf0851 --- /dev/null +++ b/tests/lora_keys/zImage_lora.txt @@ -0,0 +1,106 @@ +Analyzing LoRA: loras/zImage-LoRA.safetensors + +Total keys: 480 + +Sample keys (first 20): + diffusion_model.layers.0.adaLN_modulation.0.lora_A.weight + diffusion_model.layers.0.adaLN_modulation.0.lora_B.weight + diffusion_model.layers.0.attention.to_k.lora_A.weight + diffusion_model.layers.0.attention.to_k.lora_B.weight + diffusion_model.layers.0.attention.to_out.0.lora_A.weight + diffusion_model.layers.0.attention.to_out.0.lora_B.weight + diffusion_model.layers.0.attention.to_q.lora_A.weight + diffusion_model.layers.0.attention.to_q.lora_B.weight + diffusion_model.layers.0.attention.to_v.lora_A.weight + diffusion_model.layers.0.attention.to_v.lora_B.weight + diffusion_model.layers.0.feed_forward.w1.lora_A.weight + diffusion_model.layers.0.feed_forward.w1.lora_B.weight + diffusion_model.layers.0.feed_forward.w2.lora_A.weight + diffusion_model.layers.0.feed_forward.w2.lora_B.weight + diffusion_model.layers.0.feed_forward.w3.lora_A.weight + diffusion_model.layers.0.feed_forward.w3.lora_B.weight + diffusion_model.layers.1.adaLN_modulation.0.lora_A.weight + diffusion_model.layers.1.adaLN_modulation.0.lora_B.weight + diffusion_model.layers.1.attention.to_k.lora_A.weight + diffusion_model.layers.1.attention.to_k.lora_B.weight + +================================================================================ + +Unique layer components found: + 0 + 1 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 18 + 19 + 2 + 20 + 21 + 22 + 23 + 24 + 25 + 26 + 27 + 28 + 29 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + adaLN_modulation + attention + diffusion_model + feed_forward + layers + lora_A + lora_B + to_k + to_out + to_q + to_v + w1 + w2 + w3 + +================================================================================ + +Pattern matching analysis: + +ATTENTION (240 keys): + diffusion_model.layers.0.attention.to_k.lora_A.weight + diffusion_model.layers.0.attention.to_k.lora_B.weight + diffusion_model.layers.0.attention.to_out.0.lora_A.weight + diffusion_model.layers.0.attention.to_out.0.lora_B.weight + diffusion_model.layers.0.attention.to_q.lora_A.weight + ... and 235 more + +MLP/FEEDFORWARD (480 keys): + diffusion_model.layers.0.adaLN_modulation.0.lora_A.weight + diffusion_model.layers.0.adaLN_modulation.0.lora_B.weight + diffusion_model.layers.0.attention.to_k.lora_A.weight + diffusion_model.layers.0.attention.to_k.lora_B.weight + diffusion_model.layers.0.attention.to_out.0.lora_A.weight + ... and 475 more + +NORM (60 keys): + diffusion_model.layers.0.adaLN_modulation.0.lora_A.weight + diffusion_model.layers.0.adaLN_modulation.0.lora_B.weight + diffusion_model.layers.1.adaLN_modulation.0.lora_A.weight + diffusion_model.layers.1.adaLN_modulation.0.lora_B.weight + diffusion_model.layers.10.adaLN_modulation.0.lora_A.weight + ... and 55 more + +================================================================================ + +Architecture detection: + -> Unknown architecture \ No newline at end of file