invoke-ai/InvokeAI · error · ValueError
Only the Transformer submodel is available from a GGUF Wan c
Error message
Only the Transformer submodel is available from a GGUF Wan checkpoint. Pair with a standalone Wan VAE and Wan T5 encoder for the other components.
What it means
A GGUF Wan checkpoint file contains only quantized transformer weights — no VAE or T5 text encoder. The loader therefore rejects any submodel_type other than Transformer, with guidance to pair the checkpoint with standalone Wan VAE and T5 components.
Source
Thrown at invokeai/backend/model_manager/load/model_loaders/wan.py:410
pairing happens at the WanModelLoaderInvocation layer. TI2V-5B ships as a
single file.
Mirrors the QwenImage GGUF loader pattern: ``gguf_sd_loader`` -> strip the
ComfyUI ``model.diffusion_model.`` / ``diffusion_model.`` prefix if present
-> auto-detect arch from state-dict shapes -> ``init_empty_weights`` +
``load_state_dict(strict=False, assign=True)``.
"""
def _load_model(
self,
config: AnyModelConfig,
submodel_type: Optional[SubModelType] = None,
) -> AnyModel:
if not isinstance(config, Main_GGUF_Wan_Config):
raise TypeError(f"Expected Main_GGUF_Wan_Config, got {type(config).__name__}.")
if submodel_type != SubModelType.Transformer:
raise ValueError(
"Only the Transformer submodel is available from a GGUF Wan checkpoint. "
"Pair with a standalone Wan VAE and Wan T5 encoder for the other components."
)
return self._load_from_singlefile(config)
def _load_from_singlefile(self, config: Main_GGUF_Wan_Config) -> AnyModel:
import accelerate
from diffusers import WanTransformer3DModel
from invokeai.backend.util.logging import InvokeAILogger
model_path = Path(config.path)
target_device = TorchDevice.choose_torch_device()
compute_dtype = TorchDevice.choose_bfloat16_safe_dtype(target_device)
sd = gguf_sd_loader(model_path, compute_dtype=compute_dtype)
View on GitHub (pinned to 0b6a024f2f)
Solutions
- Only request SubModelType.Transformer from the GGUF Wan model record.
- Register separate standalone Wan VAE and T5 encoder models and reference them in your pipeline setup.
- If you need a single all-in-one model, use a full Wan pipeline (diffusers folder) instead of the GGUF single file.
Example fix
// before vae = manager.load_model(gguf_config, submodel_type=SubModelType.VAE) // after transformer = manager.load_model(gguf_config, submodel_type=SubModelType.Transformer) vae = manager.load_model(standalone_vae_config, submodel_type=SubModelType.VAE)
Defensive patterns
Strategy: validation
Validate before calling
from invokeai.backend.model_manager import SubModelType
def validate_gguf_submodel(submodel_type):
if submodel_type != SubModelType.Transformer:
raise ValueError("GGUF Wan checkpoints provide only the Transformer; use standalone VAE/T5 models") Try / catch
try:
model = manager.load_model(gguf_config, submodel_type)
except ValueError as e:
if 'Only the Transformer submodel' in str(e):
model = manager.load_model(gguf_config, submodel_type=SubModelType.Transformer)
else:
raise Prevention
- Treat GGUF Wan records as transformer-only in automation code.
- Register standalone Wan VAE and T5 encoder models alongside GGUF checkpoints.
- Configure base models/pipelines to source VAE/text-encoder from separate records.
When it happens
Trigger: Requesting SubModelType.VAE or SubModelType.TextEncoder from a model record pointing at a GGUF Wan checkpoint file, or calling the GGUF loader with submodel_type=None or an unexpected submodel.
Common situations: Expecting the GGUF file to behave like a full pipeline; model manager config incorrectly listing VAE/text-encoder submodels as sourced from the GGUF file; automation requesting all submodels uniformly.
Related errors
- Expected Main_GGUF_Wan_Config, got {type(config).__name__}.
- Only the Transformer submodel is available from a single-fil
- Expected AutoencoderKLWan for Wan VAE, got {type(vae_info.mo
- state dict does not look like a Wan transformer
- state dict has no undecorated transformer block weights — it
AI-assisted analysis of invoke-ai/InvokeAI@0b6a024f2f (2026-08-29).
Data as JSON: /api/errors/68a99909bc79b753.
Report an issue: GitHub.