invoke-ai/InvokeAI · error · ValueError
Both selected models are tagged as the {primary_expert}-nois
Error message
Both selected models are tagged as the {primary_expert}-noise expert ('{main_config.name}' and '{low_config.name}'). A Wan A14B expert pair must contain one high and one low expert. What it means
WanModelLoaderInvocation infers each expert's role from an 'expert' filename tag ('high'/'low'). If both the main and low-noise models are tagged as the same expert (primary_expert == low_expert != 'none'), the pair cannot contain one high and one low expert, so invoke raises this ValueError. Untagged files ('none') are tolerated with a warning, since the wiring itself declares intent.
Source
Thrown at invokeai/app/invocations/wan_model_loader.py:197
)
low_id = self.transformer_low_noise_model.model_copy(update={"submodel_type": SubModelType.Transformer})
low_expert = getattr(low_config, "expert", "none")
if getattr(low_config, "variant", None) != main_variant:
low_variant = getattr(low_config, "variant", None)
raise ValueError(
"The high-noise and low-noise models must use the same Wan variant, but "
f"'{main_config.name}' is {main_variant.value} and '{low_config.name}' is "
f"{getattr(low_variant, 'value', low_variant)}."
)
# The expert tag is a filename heuristic, so 'none' (untagged) is common on
# community finetunes. The wiring itself is explicit user intent — main slot
# = high, low-noise slot = low — so an untagged file is taken at its wired
# position (or inferred as the complement of its tagged partner). Only a
# genuine conflict, both files claiming the *same* expert, is an error.
if primary_expert == low_expert != "none":
raise ValueError(
f"Both selected models are tagged as the {primary_expert}-noise expert "
f"('{main_config.name}' and '{low_config.name}'). A Wan A14B expert pair "
"must contain one high and one low expert."
)
if primary_expert == "none" and low_expert == "none":
context.logger.warning(
"Neither Wan A14B filename identifies its expert, so 'Transformer' is assumed to "
"be the high-noise expert and 'Transformer (Low Noise)' the low-noise expert. If the "
"output looks wrong, swap the two models."
)
# Make sure 'transformer' is the high-noise expert and
# 'transformer_low_noise' is the low-noise expert. If the user
# accidentally swapped them, swap back.
if primary_expert == "low" or low_expert == "high":
transformer = low_id
transformer_low_noise = primary_id
# The swap overrides the wiring on the strength of aView on GitHub (pinned to 0b6a024f2f)
Solutions
- Download and select the complementary low-noise expert file (its filename should carry the 'low' expert tag).
- Rename one file so its filename encodes the correct expert tag (e.g., include 'low_noise'), then rescan in the model manager.
- Verify the two selected files are genuinely the high and low experts of the same A14B release.
Example fix
// before primary_expert = "high" # from main model filename low_expert = "high" # same tag on both files -> ValueError // after: pair high with low transformer = wan22_a14b_high_noise.safetensors transformer_low_noise_model = wan22_a14b_low_noise.safetensors
Defensive patterns
Strategy: validation
Validate before calling
def expert_tag(config): return getattr(config, "expert", "none")
if expert_tag(main_config) == expert_tag(low_config) != "none":
raise ValueError("Both files tagged as the same expert; pair one high with one low") Type guard
def is_valid_expert_pair(main_config, low_config) -> bool:
tags = {getattr(main_config, "expert", "none"), getattr(low_config, "expert", "none")}
return "none" in tags or tags == {"high", "low"} Try / catch
try:
out = wan_model_loader.invoke(context)
except ValueError as e:
if "tagged as the" in str(e) and "expert" in str(e):
select_complementary_low_expert_file()
else:
raise Prevention
- Keep expert role in filenames ('high_noise'/'low_noise') so the heuristic tags resolve.
- Download both experts from the same A14B release rather than mixing sources.
- Check the model config's 'expert' tag for both slots before wiring dual-expert graphs.
When it happens
Trigger: Selecting two files that both carry e.g. 'high_noise' in their filenames as the main and low-noise models (e.g., wan2.2_i2v_high_noise_bf16.safetensors in both slots); misnamed community files whose expert tags collide.
Common situations: Users downloading only the high-noise expert and wiring it twice under different filenames; community finetunes shipped with duplicated/incorrect expert naming; picking two files from the same expert directory.
Related errors
- The same model is wired to both 'Transformer' and 'Transform
- 'Transformer (Low Noise)' must be a single-file Wan model (G
- The high-noise and low-noise models must use the same Wan va
- No VAE source provided. Single-file / GGUF transformers requ
- No Mistral encoder source provided. Single-file / GGUF trans
AI-assisted analysis of invoke-ai/InvokeAI@0b6a024f2f (2026-08-29).
Data as JSON: /api/errors/b8420b3d10df0ba3.
Report an issue: GitHub.