invoke-ai/InvokeAI · error · ValueError

Unsupported model base: {model_identifier.base}

Error message

Unsupported model base: {model_identifier.base}

What it means

preprocess_t5_encoder_model_identifier normalizes a T5 text-encoder model identifier so it points at the right submodel (TextEncoder2 for Flux, TextEncoder3 for StableDiffusion3, TextEncoder for T5-family bases). Bases outside the supported set have no T5 encoder mapping, so ValueError is raised with the offending base value.

Source

Thrown at invokeai/app/util/t5_model_identifier.py:16

from invokeai.app.invocations.model import ModelIdentifierField
from invokeai.backend.model_manager.taxonomy import BaseModelType, SubModelType


def preprocess_t5_encoder_model_identifier(model_identifier: ModelIdentifierField) -> ModelIdentifierField:
    """A helper function to normalize a T5 encoder model identifier so that T5 models associated with FLUX
    or SD3 models can be used interchangeably.
    """
    if model_identifier.base == BaseModelType.Any:
        return model_identifier.model_copy(update={"submodel_type": SubModelType.TextEncoder2})
    elif model_identifier.base == BaseModelType.Flux:
        return model_identifier.model_copy(update={"submodel_type": SubModelType.TextEncoder2})
    elif model_identifier.base == BaseModelType.StableDiffusion3:
        return model_identifier.model_copy(update={"submodel_type": SubModelType.TextEncoder3})
    else:
        raise ValueError(f"Unsupported model base: {model_identifier.base}")


def preprocess_t5_tokenizer_model_identifier(model_identifier: ModelIdentifierField) -> ModelIdentifierField:
    """A helper function to normalize a T5 tokenizer model identifier so that T5 models associated with FLUX
    or SD3 models can be used interchangeably.
    """
    if model_identifier.base == BaseModelType.Any:
        return model_identifier.model_copy(update={"submodel_type": SubModelType.Tokenizer2})
    elif model_identifier.base == BaseModelType.Flux:
        return model_identifier.model_copy(update={"submodel_type": SubModelType.Tokenizer2})
    elif model_identifier.base == BaseModelType.StableDiffusion3:
        return model_identifier.model_copy(update={"submodel_type": SubModelType.Tokenizer3})
    else:
        raise ValueError(f"Unsupported model base: {model_identifier.base}")

View on GitHub (pinned to 0b6a024f2f)

Solutions

  1. Use a T5, Flux, or StableDiffusion3 model as the T5 encoder identifier
  2. Update the workflow/graph to reference the correct encoder model for the model family
  3. Fix the model identifier's base/submodel fields if the stored record is stale
  4. Check preprocessing of the tokenizer counterpart (preprocess_t5_tokenizer_model_identifier) uses a matching supported base

Example fix

// before
encoder = ModelIdentifierField(base=BaseModelType.StableDiffusion1, ...)  # unsupported
// after
encoder = ModelIdentifierField(base=BaseModelType.StableDiffusion3, ..., submodel_type=SubModelType.TextEncoder3)
Defensive patterns

Strategy: validation

Validate before calling

from invokeai.backend.model_manager.config import BaseModelType

T5_ENCODER_BASES = {BaseModelType.T5Encoder, BaseModelType.Flux, BaseModelType.StableDiffusion3}

def t5_encoder_ok(model_identifier):
    return model_identifier.base in T5_ENCODER_BASES

Type guard

def is_t5_capable_base(identifier):
    return getattr(identifier, 'base', None) in (
        BaseModelType.T5Encoder, BaseModelType.Flux, BaseModelType.StableDiffusion3
    )

Try / catch

try:
    encoder_id = preprocess_t5_encoder_model_identifier(identifier)
except ValueError as e:
    if 'Unsupported model base' in str(e):
        raise ValueError(f"{identifier.base} cannot supply a T5 encoder; use a T5/Flux/SD3 model") from e
    raise

Prevention

When it happens

Trigger: Calling invoke with a T5 encoder model whose ModelIdentifierField.base is e.g. StableDiffusion1/2-XL or another non-SD3/Flux/T5 base.

Common situations: Selecting an SD1.5 or SDXL checkpoint as the T5 encoder in a Flux/SD3 workflow; misconfigured model identifier stored in a graph after switching model families; stale saved workflows referencing a different base.

Related errors


AI-assisted analysis of invoke-ai/InvokeAI@0b6a024f2f (2026-08-29). Data as JSON: /api/errors/4ff9bf63ff84c317. Report an issue: GitHub.