{"record":{"id":"96f69b46d63a9bb8","repo":"invoke-ai/InvokeAI","slug":"the-same-model-is-wired-to-both-transformer-and","errorCode":null,"errorMessage":"The same model is wired to both 'Transformer' and 'Transformer (Low Noise)'. A Wan A14B expert pair needs two different single-file models.","messagePattern":"The same model is wired to both 'Transformer' and 'Transformer \\(Low Noise\\)'\\. A Wan A14B expert pair needs two different single-file models\\.","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"invokeai/app/invocations/wan_model_loader.py","lineNumber":166,"sourceCode":"        if main_is_diffusers:\n            transformer = self.model.model_copy(update={\"submodel_type\": SubModelType.Transformer})\n            if getattr(main_config, \"has_dual_expert\", False):\n                transformer_low_noise = self.model.model_copy(update={\"submodel_type\": SubModelType.Transformer2})\n                recorded = getattr(main_config, \"boundary_ratio\", None)\n                if recorded is not None:\n                    boundary_ratio = float(recorded)\n        elif main_is_single_file:\n            primary_expert = getattr(main_config, \"expert\", \"none\")\n            primary_id = self.model.model_copy(update={\"submodel_type\": SubModelType.Transformer})\n\n            if self.transformer_low_noise_model is not None and main_variant == WanVariantType.TI2V_5B:\n                # The field's own docs promise this input is ignored for the\n                # single-expert TI2V-5B — e.g. a leftover wire from an A14B session.\n                context.logger.warning(\"'Transformer (Low Noise)' is ignored for the single-expert TI2V-5B variant.\")\n\n            if self.transformer_low_noise_model is not None and main_variant != WanVariantType.TI2V_5B:\n                if self.transformer_low_noise_model.key == self.model.key:\n                    raise ValueError(\n                        \"The same model is wired to both 'Transformer' and 'Transformer (Low Noise)'. \"\n                        \"A Wan A14B expert pair needs two different single-file models.\"\n                    )\n                low_config = context.models.get_config(self.transformer_low_noise_model)\n                self._validate_main_config(low_config, \"Transformer (Low Noise)\")\n                # The two experts don't have to share a format — both single-file\n                # loaders produce a plain WanTransformer3DModel, so a GGUF high-noise\n                # expert pairs fine with a safetensors low-noise one.\n                if low_config.format not in _SINGLE_FILE_FORMATS:\n                    raise ValueError(\n                        f\"'Transformer (Low Noise)' must be a single-file Wan model (GGUF or checkpoint). \"\n                        f\"'{low_config.name}' is in {low_config.format.value} format.\"\n                    )\n                low_id = self.transformer_low_noise_model.model_copy(update={\"submodel_type\": SubModelType.Transformer})\n                low_expert = getattr(low_config, \"expert\", \"none\")\n\n                if getattr(low_config, \"variant\", None) != main_variant:\n                    low_variant = getattr(low_config, \"variant\", None)","sourceCodeStart":148,"sourceCodeEnd":184,"githubUrl":"https://github.com/invoke-ai/InvokeAI/blob/0b6a024f2ff6a86bfb953dcdb9cc504ef7397a06/invokeai/app/invocations/wan_model_loader.py#L148-L184","documentation":"WanModelLoaderInvocation.invoke raises this when the same model key is wired to both the 'Transformer' (high-noise) and 'Transformer (Low Noise)' inputs on an A14B (dual-expert) variant. A Wan A14B pair requires two distinct single-file models (high + low expert); using the identical file for both slots is rejected. Note the TI2V-5B variant is exempt — there the low-noise input is simply ignored with a warning.","triggerScenarios":"Selecting the identical model (same key) in both the 'Transformer' and 'Transformer (Low Noise)' fields of wan_model_loader while the main model's variant is A14B; copying the main model field into the low-noise field when building a workflow; leftover wire from a session where one model served both slots.","commonSituations":"Users configuring Wan 2.2 A14B dual-expert inference who mistakenly pick the same GGUF/checkpoint twice; duplicated workflow nodes where both inputs reference one model; misunderstanding that A14B needs separate high- and low-noise files.","solutions":["Select a different model in 'Transformer (Low Noise)' — the complementary low-noise expert file for your A14B pair.","If you actually run the single-expert TI2V-5B variant, disconnect the low-noise input entirely (it is ignored there anyway).","Verify the two selected models differ by comparing their keys before invoking."],"exampleFix":"// before\nif self.transformer_low_noise_model.key == self.model.key:  # same model both slots -> ValueError\n    raise ValueError(...)\n// after: wire distinct experts\ntransformer = wan_a14b_high_noise_model\ntransformer_low_noise_model = wan_a14b_low_noise_model  # different key","handlingStrategy":"validation","validationCode":"if transformer_low_noise_model is not None and transformer_low_noise_model.key == model.key:\n    raise ValueError(\"Wire a distinct low-noise expert (or disconnect the input for TI2V-5B)\")","typeGuard":"def expert_pair_is_distinct(main, low) -> bool:\n    return low is None or low.key != main.key","tryCatchPattern":"try:\n    out = wan_model_loader.invoke(context)\nexcept ValueError as e:\n    if \"wired to both\" in str(e):\n        select_distinct_low_noise_model() or disconnect_low_noise_input()\n    else:\n        raise","preventionTips":["For Wan A14B always pair two different single-file experts (high + low).","For TI2V-5B leave 'Transformer (Low Noise)' unconnected.","Compare model keys of both slots before running dual-expert graphs."],"tags":["invokeai","wan","model-loader","configuration","a14b"],"backgroundTag":"duplicate-model-wiring","analyzedSha":"0b6a024f2ff6a86bfb953dcdb9cc504ef7397a06","analyzedAt":"2026-08-29T04:46:49.967Z","schemaVersion":2},"datasetVersion":"2026-08-29T07:17:48.351Z"}