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

  1. Only request SubModelType.Transformer from the GGUF Wan model record.
  2. Register separate standalone Wan VAE and T5 encoder models and reference them in your pipeline setup.
  3. 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

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


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