invoke-ai/InvokeAI · error · ValueError
The Wan T5 Encoder must resolve to a standalone Wan T5 encod
Error message
The Wan T5 Encoder must resolve to a standalone Wan T5 encoder model.
What it means
When the 'Wan T5 Encoder' field is set, the loader validates the referenced model resolves to a config with type ModelType.WanT5Encoder and format ModelFormat.WanT5Encoder. Any other type/format means the field doesn't point at a standalone Wan T5 encoder, so invoke() raises this ValueError before building the output.
Source
Thrown at invokeai/app/invocations/wan_model_loader.py:282
if self.vae_model is not None:
self._validate_standalone_vae(context, self.vae_model, main_variant)
vae = self.vae_model.model_copy(update={"submodel_type": SubModelType.VAE})
elif main_is_diffusers:
vae = self.model.model_copy(update={"submodel_type": SubModelType.VAE})
elif self.component_source is not None:
self._validate_component_source_vae(context, self.component_source, main_variant)
vae = self.component_source.model_copy(update={"submodel_type": SubModelType.VAE})
else:
raise ValueError(
"No source for VAE. Either set 'VAE' to a standalone Wan VAE, "
"or set 'Component Source' to a Diffusers Wan main model."
)
# Tokenizer + text encoder: standalone override > main (if Diffusers) > component source.
if self.wan_t5_encoder_model is not None:
t5_config = context.models.get_config(self.wan_t5_encoder_model)
if t5_config.type != ModelType.WanT5Encoder or t5_config.format != ModelFormat.WanT5Encoder:
raise ValueError("The Wan T5 Encoder must resolve to a standalone Wan T5 encoder model.")
tokenizer = self.wan_t5_encoder_model.model_copy(update={"submodel_type": SubModelType.Tokenizer})
text_encoder = self.wan_t5_encoder_model.model_copy(update={"submodel_type": SubModelType.TextEncoder})
elif main_is_diffusers:
tokenizer = self.model.model_copy(update={"submodel_type": SubModelType.Tokenizer})
text_encoder = self.model.model_copy(update={"submodel_type": SubModelType.TextEncoder})
elif self.component_source is not None:
self._validate_component_source_format(context, self.component_source)
tokenizer = self.component_source.model_copy(update={"submodel_type": SubModelType.Tokenizer})
text_encoder = self.component_source.model_copy(update={"submodel_type": SubModelType.TextEncoder})
else:
raise ValueError(
"No source for Wan T5 encoder. "
"Either set 'Wan T5 Encoder' to a standalone UMT5-XXL encoder, "
"or set 'Component Source' to a Diffusers Wan main model."
)
return WanModelLoaderOutput(
transformer=WanTransformerField(View on GitHub (pinned to 0b6a024f2f)
Solutions
- Set 'Wan T5 Encoder' to a standalone Wan/UMT5-XXL T5 encoder model registered with type and format WanT5Encoder
- Re-import the T5 encoder so it is registered with the correct WanT5Encoder type and format
- Leave the field unset and instead supply a Diffusers main model or Component Source so the tokenizer/text-encoder come from there
Example fix
// before wan_t5_encoder_model=ModelIdentifierField(key='some-main-model', submodel_type=SubModelType.TextEncoder) // after wan_t5_encoder_model=ModelIdentifierField(key='wan-umt5-xxl-encoder', submodel_type=SubModelType.TextEncoder)
Defensive patterns
Strategy: validation
Validate before calling
if invocation.wan_t5_encoder_model is not None:
cfg = context.models.get_config(invocation.wan_t5_encoder_model)
if cfg.type != ModelType.WanT5Encoder or cfg.format != ModelFormat.WanT5Encoder:
raise ValueError('wan_t5_encoder_model must be a standalone Wan T5 encoder') Type guard
def is_wan_t5_encoder(field, ctx) -> bool:
cfg = ctx.models.get_config(field)
return cfg.base == BaseModelType.Wan and cfg.type == ModelType.WanT5Encoder and cfg.format == ModelFormat.WanT5Encoder Try / catch
try:
output = invocation.invoke(context)
except ValueError as e:
if 'must resolve to a standalone Wan T5 encoder model' in str(e):
invocation.wan_t5_encoder_model = pick_umt5_xxl_encoder() Prevention
- Pick the T5 encoder only from the Wan T5 Encoder model-type filter in the UI
- Re-scan the models directory if a recently imported encoder shows the wrong type
- Never point the T5 field at a Main model or VAE
When it happens
Trigger: invoke() with wan_t5_encoder_model set to a model whose config type is not WanT5Encoder or whose format is not WanT5Encoder — e.g. pointing it at a Main model, a VAE, or a T5 encoder registered with a generic format.
Common situations: Selecting the wrong model in the T5 encoder dropdown; an older import registered the UMT5-XXL encoder with a legacy type/format; pointing the field at a full Wan main Diffusers folder instead of the standalone encoder model.
Related errors
- No source for Wan T5 encoder. Either set 'Wan T5 Encoder' to
- The {label} model must resolve to a Wan main model.
- The Component Source model must resolve to a Wan main model.
- The VAE must resolve to a standalone Wan VAE model.
- The same model is wired to both 'Transformer' and 'Transform
AI-assisted analysis of invoke-ai/InvokeAI@0b6a024f2f (2026-08-29).
Data as JSON: /api/errors/ea14f78cd1c58e3c.
Report an issue: GitHub.