invoke-ai/InvokeAI · error · ValueError

LoRA "{lora_key}" already applied to low-noise transformer l

Error message

LoRA "{lora_key}" already applied to low-noise transformer list.

What it means

Same duplicate-key invariant as the primary list, but checked against transformer.loras_low_noise (the A14B low-noise expert's LoRA list). Raised when routing sends the LoRA to the low-noise list and a LoRA with the same key is already there. Prevents double-counting the LoRA weight on the low-noise transformer.

Source

Thrown at invokeai/app/invocations/wan_lora_loader.py:199

        lora_config = context.models.get_config(self.lora)
        _assert_is_wan_lora(lora_config, lora_key)

        output = WanLoRALoaderOutput()
        if self.transformer is None:
            return output

        main_config = context.models.get_config(self.transformer.transformer)
        _assert_lora_variant_matches_main(lora_config, main_config, lora_key)

        lora_expert = getattr(lora_config, "expert", None)
        to_primary, to_low_noise = _resolve_target(self.target, lora_expert)
        to_primary, to_low_noise = _correct_inert_low_routing(context, main_config, lora_key, to_primary, to_low_noise)

        # Reject duplicates on whichever list(s) we're about to append to.
        if to_primary and any(item.lora.key == lora_key for item in self.transformer.loras):
            raise ValueError(f'LoRA "{lora_key}" already applied to primary transformer list.')
        if to_low_noise and any(item.lora.key == lora_key for item in self.transformer.loras_low_noise):
            raise ValueError(f'LoRA "{lora_key}" already applied to low-noise transformer list.')

        output.transformer = self.transformer.model_copy(deep=True)
        new_lora = LoRAField(lora=self.lora, weight=self.weight)
        if to_primary:
            output.transformer.loras.append(new_lora)
        if to_low_noise:
            output.transformer.loras_low_noise.append(new_lora)

        return output


@invocation(
    "wan_lora_collection_loader",
    title="Apply LoRA Collection - Wan 2.2",
    tags=["lora", "model", "wan"],
    category="model",
    version="1.0.1",
    classification=Classification.Prototype,

View on GitHub (pinned to 0b6a024f2f)

Solutions

  1. Remove the duplicate low-noise routing (change target or delete the redundant loader node).
  2. Increase the existing entry's weight instead of adding a second entry.
  3. Audit the chain feeding the transformer field to ensure each lora key is added once per list.

Example fix

// before
transformer.loras_low_noise.append(LoRAField(lora=lora, weight=0.75))  # key already present -> ValueError
// after: remove the duplicate or merge weights
transformer.loras_low_noise = [item for item in transformer.loras_low_noise if item.lora.key != lora.key]
transformer.loras_low_noise.append(LoRAField(lora=lora, weight=0.9))
Defensive patterns

Strategy: validation

Validate before calling

if any(item.lora.key == lora.key for item in transformer.loras_low_noise):
    skip_or_merge_weights()  # already on the low-noise expert

Type guard

def is_duplicate_low(transformer, lora_key: str) -> bool:
    return any(item.lora.key == lora_key for item in transformer.loras_low_noise)

Try / catch

try:
    out = loader.invoke(context)
except ValueError as e:
    if "already applied to low-noise transformer list" in str(e):
        remove_duplicate_low_noise_entry()
    else:
        raise

Prevention

When it happens

Trigger: Applying a LoRA whose key is already in transformer.loras_low_noise with target='low' (or an untagged 'auto' LoRA that routes to low-noise); chaining loader nodes that both add the same LoRA to the low-noise list.

Common situations: A14B dual-expert workflows where two loader nodes include the same low-expert LoRA; re-running an edited workflow where the LoRA was already wired into the low-noise list; duplicated loader nodes.

Related errors


AI-assisted analysis of invoke-ai/InvokeAI@0b6a024f2f (2026-08-29). Data as JSON: /api/errors/8d3fd2b3ce0c4c03. Report an issue: GitHub.