invoke-ai/InvokeAI · error · ValueError
Only Tokenizer and TextEncoder submodels are supported. Rece
Error message
Only Tokenizer and TextEncoder submodels are supported. Received: {submodel_type.value if submodel_type else 'None'} What it means
The diffusers-format Qwen VL encoder loader supports only Tokenizer and TextEncoder submodels. Any other submodel type (or None) falls past the match/if-chain and raises this ValueError echoing the received submodel type.
Source
Thrown at invokeai/backend/model_manager/load/model_loaders/qwen_image.py:324
model_path = Path(config.path)
target_device = TorchDevice.choose_torch_device()
model_dtype = TorchDevice.choose_bfloat16_safe_dtype(target_device)
match submodel_type:
case SubModelType.Tokenizer:
tokenizer_path = model_path / "tokenizer"
return AutoTokenizer.from_pretrained(str(tokenizer_path), local_files_only=True)
case SubModelType.TextEncoder:
encoder_path = model_path / "text_encoder"
return Qwen2_5_VLForConditionalGeneration.from_pretrained(
str(encoder_path),
torch_dtype=model_dtype,
low_cpu_mem_usage=True,
local_files_only=True,
)
raise ValueError(
f"Only Tokenizer and TextEncoder submodels are supported. "
f"Received: {submodel_type.value if submodel_type else 'None'}"
)
@ModelLoaderRegistry.register(base=BaseModelType.Any, type=ModelType.QwenVLEncoder, format=ModelFormat.Checkpoint)
class QwenVLEncoderCheckpointLoader(ModelLoader):
"""Loads a single-file Qwen2.5-VL encoder checkpoint (e.g. ComfyUI fp8_scaled).
The checkpoint bundles the language model and the visual tower into one
safetensors file. Tokenizer + processor are pulled from HuggingFace
(`Qwen/Qwen2.5-VL-7B-Instruct`) on first use, with offline cache fallback.
"""
DEFAULT_HF_REPO = "Qwen/Qwen2.5-VL-7B-Instruct"
def _load_model(
self,View on GitHub (pinned to 0b6a024f2f)
Solutions
- Request only SubModelType.Tokenizer or SubModelType.TextEncoder from this loader.
- Load transformer/VAE components from their own registered models.
- Fix the model registration so other submodels resolve to appropriate loaders.
Example fix
// before enc = loader._load_model(config, SubModelType.VAE) // after tok = loader._load_model(config, SubModelType.Tokenizer) enc = loader._load_model(config, SubModelType.TextEncoder)
Defensive patterns
Strategy: validation
Validate before calling
SUPPORTED = {SubModelType.Tokenizer, SubModelType.TextEncoder}
if submodel_type not in SUPPORTED:
raise ValueError(f"QwenVL encoder loader supports only Tokenizer/TextEncoder, got {submodel_type}") Type guard
def is_encoder_submodel(sub: SubModelType | None) -> bool:
return sub in (SubModelType.Tokenizer, SubModelType.TextEncoder) Try / catch
try:
comp = loader._load_model(config, submodel_type)
except ValueError as e:
if "Only Tokenizer and TextEncoder" in str(e):
logger.warning("Load other components from their own model entries")
else:
raise Prevention
- Only request Tokenizer/TextEncoder from text-encoder model entries
- Register transformer and VAE models separately
- Check the loader's supported submodel set before calling it generically
When it happens
Trigger: Calling this loader's _load_model with submodel_type other than SubModelType.Tokenizer or SubModelType.TextEncoder (e.g. Transformer, VAE, or None).
Common situations: Registry/base-type misconfiguration causing the manager to request unrelated submodels from the encoder entry; scripts enumerating submodels generically.
Related errors
- Only Transformer submodels are currently supported. Received
- A submodel type must be provided when loading main pipelines
- Expected QwenVLEncoder_Diffusers_Config, got {type(config)._
- Expected QwenVLEncoder_Checkpoint_Config, got {type(config).
- No VAE source provided. Single-file / GGUF transformers requ
AI-assisted analysis of invoke-ai/InvokeAI@0b6a024f2f (2026-08-29).
Data as JSON: /api/errors/9a54c6fd24abe2d1.
Report an issue: GitHub.