invoke-ai/InvokeAI · error · NotAMatchError
state dict has no undecorated transformer block weights — it
Error message
state dict has no undecorated transformer block weights — it looks like a Wan LoRA or adapter rather than a full transformer
What it means
Raised by Main_GGUF_Wan_Config.from_model_on_disk when the state dict has GGML tensors and Wan-like keys but lacks undecorated transformer block weights (_has_wan_transformer_block_weights fails). The message says the file looks like a Wan LoRA or adapter: its keys are decorated with LoRA/adapter prefixes (lora_A/lora_B, delta-style naming) rather than the plain block weight keys a full DiT carries.
Source
Thrown at invokeai/backend/model_manager/configs/main.py:2205
expert: Literal["high", "low", "none"] = Field(
default="none",
description="For Wan 2.2 A14B's dual-expert MoE: 'high' for the high-noise expert, "
"'low' for the low-noise expert. 'none' for single-transformer models (TI2V-5B).",
)
@classmethod
def from_model_on_disk(cls, mod: ModelOnDisk, override_fields: dict[str, Any]) -> Self:
raise_if_not_file(mod)
raise_for_override_fields(cls, override_fields)
sd = mod.load_state_dict()
if not _has_ggml_tensors(sd):
raise NotAMatchError("state dict does not look like GGUF quantized")
if not _has_wan_keys(sd):
raise NotAMatchError("state dict does not look like a Wan transformer")
if not _has_wan_transformer_block_weights(sd):
raise NotAMatchError(
"state dict has no undecorated transformer block weights — it looks like a Wan LoRA "
"or adapter rather than a full transformer"
)
unsupported_reason = _find_unsupported_wan_variant_marker(sd)
if unsupported_reason is not None:
raise NotAMatchError(unsupported_reason)
gguf_name = mod.metadata().get("general.name", "")
normalized_identity = "".join(
character for character in f"{mod.path.stem} {gguf_name}".lower() if character.isalnum()
)
if "wan21" in normalized_identity:
raise NotAMatchError("Wan 2.1 GGUF models are not supported by the Wan 2.2 loader")
# A misnamed Wan 2.1 GGUF slips past the name check above; the architectural
# markers don't care what the file is called.
wan_2_1_reason = _find_wan_2_1_marker(sd)
if wan_2_1_reason is not None:
raise NotAMatchError(f"Wan 2.1 GGUF models are not supported by the Wan 2.2 loader: {wan_2_1_reason}")
View on GitHub (pinned to 0b6a024f2f)
Solutions
- Move the file to the LoRA models folder / import it as a LoRA model type instead of a Main model
- Download the actual full Wan 2.2 transformer GGUF (e.g. Wan2.2-T2V-A14B-high-noise-*.gguf) if you intended to install the base model
- Check key names in the file (look for lora_A/lora_B prefixes) to confirm it is an adapter before importing
Example fix
// before # wan2.2_lightx2v_T2V_14B_high_noise_lora.gguf placed in autoimport/ as a main model // after # copy it to autoimport/lora/ (or choose Model Type = LoRA during manual import)
Defensive patterns
Strategy: validation
Validate before calling
sd = ModelOnDisk(path).load_state_dict()
keys = [k for k in sd if isinstance(k, str)]
if any('.lora_' in k or 'lora_A' in k for k in keys):
print(f'{path.name} looks like a LoRA; import it as a LoRA, not a main model') Type guard
def is_full_wan_transformer(sd: dict) -> bool:
return _has_wan_keys(sd) and _has_wan_transformer_block_weights(sd) Try / catch
try:
import_model(path, model_type='main')
except NotAMatchError as e:
if 'LoRA' in str(e):
import_model(path, model_type='lora')
else:
raise Prevention
- Keep LoRA downloads out of the main/checkpoint autoimport folder
- Wan speed-up adapters (lightx2v etc.) are LoRAs — file them under LoRA
- Peek at key prefixes (lora_A/lora_B/delta) before bulk-importing unknown GGUFs
When it happens
Trigger: Importing a Wan LoRA shipped as GGUF/quantized instead of a full transformer checkpoint; importing a Wan speed-up adapter (lightx2v/ACC-style) GGUF; converting a Wan LoRA to GGUF and placing it in main-model autoimport.
Common situations: Downloading Wan 2.2 LoRAs (low-noise/high-noise distill adapters) alongside main model GGUFs and mixing them in one folder; CivitAI Wan LoRA files mislabeled as models.
Related errors
- state dict does not look like a Wan transformer
- {unsupported_reason}
- Wan 2.1 GGUF models are not supported by the Wan 2.2 loader
- Wan 2.1 GGUF models are not supported by the Wan 2.2 loader:
- could not determine Wan variant from state dict
AI-assisted analysis of invoke-ai/InvokeAI@0b6a024f2f (2026-08-29).
Data as JSON: /api/errors/871171ee817f88f6.
Report an issue: GitHub.