invoke-ai/InvokeAI · error · ValueError
Unsupported submodel type for WanT5Encoder: {submodel_type.v
Error message
Unsupported submodel type for WanT5Encoder: {submodel_type.value if submodel_type else 'None'} What it means
When loading the Wan T5 text encoder's submodels, _load_model only handles SubModelType.Tokenizer and SubModelType.TextEncoder; anything else falls through to this ValueError. The message interpolates the unsupported SubModelType value so you can see which type was requested. It is a guard against asking a T5-encoder loader for a component it never contains (e.g. a VAE or transformer).
Source
Thrown at invokeai/backend/model_manager/load/model_loaders/wan.py:592
target = nested_text_encoder if nested_text_encoder.exists() else root
return UMT5EncoderModel.from_pretrained(
str(target),
torch_dtype=torch.bfloat16,
local_files_only=True,
)
if submodel_type == SubModelType.Tokenizer:
from transformers import AutoTokenizer
# Prefer a sibling tokenizer/ directory; fall back to the encoder dir
# itself, which is normal for "flat" downloads.
target = (
nested_tokenizer
if nested_tokenizer.exists()
else (nested_text_encoder if nested_text_encoder.exists() else root)
)
return AutoTokenizer.from_pretrained(str(target), local_files_only=True)
raise ValueError(
f"Unsupported submodel type for WanT5Encoder: {submodel_type.value if submodel_type else 'None'}"
)
View on GitHub (pinned to 0b6a024f2f)
Solutions
- Request only SubModelType.Tokenizer or SubModelType.TextEncoder for the Wan T5 encoder entry.
- Check your model-config records: the submodel listing for the T5 encoder should not include VAE/transformer entries; fix the config or re-convert the model.
- If you iterate submodels generically, filter by the model's supported submodel types before calling the loader.
Example fix
// before enc = loader._load_model(t5_config, SubModelType.Vae) // after enc = loader._load_model(t5_config, SubModelType.TextEncoder) tok = loader._load_model(t5_config, SubModelType.Tokenizer)
Defensive patterns
Strategy: type-guard
Validate before calling
SUPPORTED = {SubModelType.Tokenizer, SubModelType.TextEncoder}
if submodel_type not in SUPPORTED:
raise ValueError(f"WanT5Encoder supports only {SUPPORTED}, got {submodel_type}") Type guard
def is_t5_submodel(st: SubModelType | None) -> bool:
return st in (SubModelType.Tokenizer, SubModelType.TextEncoder) Try / catch
try:
model = loader._load_model(t5_config, submodel_type)
except ValueError as e:
if "Unsupported submodel type for WanT5Encoder" in str(e):
logging.warning("skipping unsupported submodel request: %s", submodel_type)
else:
raise Prevention
- Only register Tokenizer/TextEncoder submodels on Wan T5 encoder model records.
- When iterating all SubModelType values, filter against the model's actual submodel list first.
- Validate converted Wan model folders include text_encoder/ and tokenizer/ directories.
When it happens
Trigger: Calling _load_model(config, SubModelType.Vae) (or Transformer/Scheduler/etc.) on a Wan model whose submodel dispatch resolves to the WanT5Encoder branch.
Common situations: Misconfigured model record where the wrong SubModelType was attached to a Wan T5 encoder entry; iterate-all-submodels scripts that blindly request every SubModelType for each config; copy-pasted loader code from the main-transformer branch.
Related errors
- A submodel type (Tokenizer or TextEncoder) must be provided.
- Invalid mode selected
- Unexpected control_input type: ${type(control_input)}
- Unexpected T2I-Adapter base model type: '${t2i_adapter_model
- 'latents' or 'noise' must be provided!
AI-assisted analysis of invoke-ai/InvokeAI@0b6a024f2f (2026-08-29).
Data as JSON: /api/errors/a641a8a4f90a25d5.
Report an issue: GitHub.