{"record":{"id":"640f78da550db129","repo":"invoke-ai/InvokeAI","slug":"lora-lora-key-already-applied-to-qwen3-encoder-640f78","errorCode":null,"errorMessage":"LoRA \"{lora_key}\" already applied to Qwen3 encoder.","messagePattern":"LoRA \"(.+?)\" already applied to Qwen3 encoder\\.","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"invokeai/app/invocations/z_image_lora_loader.py","lineNumber":67,"sourceCode":"    )\n    qwen3_encoder: Qwen3EncoderField | None = InputField(\n        default=None,\n        title=\"Qwen3 Encoder\",\n        description=FieldDescriptions.qwen3_encoder,\n        input=Input.Connection,\n    )\n\n    def invoke(self, context: InvocationContext) -> ZImageLoRALoaderOutput:\n        lora_key = self.lora.key\n\n        if not context.models.exists(lora_key):\n            raise ValueError(f\"Unknown lora: {lora_key}!\")\n\n        # Check for existing LoRAs with the same key.\n        if self.transformer and any(lora.lora.key == lora_key for lora in self.transformer.loras):\n            raise ValueError(f'LoRA \"{lora_key}\" already applied to transformer.')\n        if self.qwen3_encoder and any(lora.lora.key == lora_key for lora in self.qwen3_encoder.loras):\n            raise ValueError(f'LoRA \"{lora_key}\" already applied to Qwen3 encoder.')\n\n        # Warn on variant mismatch between LoRA and transformer.\n        lora_config = context.models.get_config(lora_key)\n        lora_variant = getattr(lora_config, \"variant\", None)\n        if lora_variant and self.transformer is not None:\n            transformer_config = context.models.get_config(self.transformer.transformer.key)\n            transformer_variant = getattr(transformer_config, \"variant\", None)\n            if transformer_variant and lora_variant != transformer_variant:\n                context.logger.warning(\n                    f\"LoRA variant mismatch: LoRA '{lora_config.name}' is for {lora_variant.value} \"\n                    f\"but transformer is {transformer_variant.value}. This may cause unexpected results.\"\n                )\n\n        output = ZImageLoRALoaderOutput()\n\n        # Attach LoRA layers to the models.\n        if self.transformer is not None:\n            output.transformer = self.transformer.model_copy(deep=True)","sourceCodeStart":49,"sourceCodeEnd":85,"githubUrl":"https://github.com/invoke-ai/InvokeAI/blob/0b6a024f2ff6a86bfb953dcdb9cc504ef7397a06/invokeai/app/invocations/z_image_lora_loader.py#L49-L85","documentation":"Same duplicate-key rule as the transformer, applied to the Qwen3 text encoder: if the requested LoRA key is already present in self.qwen3_encoder.loras, a ValueError is raised. Applying the same LoRA twice to the text encoder would double-count its contribution to prompt embeddings.","triggerScenarios":"Invoking ZImageLoRALoader where self.lora.key equals an entry already in the ZImageQwen3EncoderField's loras list passed as self.qwen3_encoder.","commonSituations":"A single LoRA that patches both transformer and encoder applied twice to the encoder input via chained loader nodes; duplicated nodes in the editor; generated graphs appending encoder LoRAs without deduplication.","solutions":["Remove the duplicate entry from the Qwen3 encoder's loras list or drop the redundant loader node.","Use one loader node per unique LoRA, feeding both transformer and encoder outputs.","Deduplicate by key in scripts that assemble encoder LoRA lists."],"exampleFix":"// before\nencoder_loras = [lora_a, lora_a]  # duplicate key\n// after\nencoder_loras = [lora_a]","handlingStrategy":"validation","validationCode":"enc_keys = {l.lora.key for l in loader.qwen3_encoder.loras} if loader.qwen3_encoder else set()\nif loader.lora.key in enc_keys:\n    raise ValueError(f\"LoRA {loader.lora.key} would be applied twice to the Qwen3 encoder\")","typeGuard":null,"tryCatchPattern":"try:\n    out = z_image_lora_loader.invoke(context)\nexcept ValueError as e:\n    if \"already applied to Qwen3 encoder\" in str(e):\n        context.logger.error(f\"{e} - drop the redundant encoder LoRA entry.\")\n    else:\n        raise","preventionTips":["Feed transformer and encoder from a single loader node per LoRA.","Deduplicate encoder loras lists by key in generated graphs.","Audit chained loader nodes after copying subgraphs."],"tags":["lora","duplicate","qwen3","z-image"],"backgroundTag":"duplicate-lora-application","analyzedSha":"0b6a024f2ff6a86bfb953dcdb9cc504ef7397a06","analyzedAt":"2026-08-29T04:46:49.967Z","schemaVersion":2},"datasetVersion":"2026-08-29T07:17:48.351Z"}