invoke-ai/InvokeAI · error · ValueError
No Qwen3 Encoder source provided. Either set 'Qwen3 Encoder'
Error message
No Qwen3 Encoder source provided. Either set 'Qwen3 Encoder' to a standalone model, or set 'Qwen3 Source' to a Diffusers Z-Image model.
What it means
ZImageModelLoader similarly requires a Qwen3 text encoder source: a standalone 'Qwen3 Encoder' model, a Diffusers Z-Image 'Qwen3 Source' to copy the TextEncoder submodel from, or a self-contained SDNQ model. With all three absent, invoke() raises this ValueError before returning ZImageModelLoaderOutput.
Source
Thrown at invokeai/app/invocations/z_image_model_loader.py:136
"or set 'Qwen3 Source' to a Diffusers Z-Image model."
)
# Determine Qwen3 Encoder source
if self.qwen3_encoder_model is not None:
# Use standalone Qwen3 Encoder
qwen3_tokenizer = self.qwen3_encoder_model.model_copy(update={"submodel_type": SubModelType.Tokenizer})
qwen3_encoder = self.qwen3_encoder_model.model_copy(update={"submodel_type": SubModelType.TextEncoder})
elif self.qwen3_source_model is not None:
# Extract from Diffusers Z-Image model
self._validate_diffusers_format(context, self.qwen3_source_model, "Qwen3 Source")
qwen3_tokenizer = self.qwen3_source_model.model_copy(update={"submodel_type": SubModelType.Tokenizer})
qwen3_encoder = self.qwen3_source_model.model_copy(update={"submodel_type": SubModelType.TextEncoder})
elif self_contained_source is not None:
# Extract from the self-contained SDNQ main model
qwen3_tokenizer = self_contained_source.model_copy(update={"submodel_type": SubModelType.Tokenizer})
qwen3_encoder = self_contained_source.model_copy(update={"submodel_type": SubModelType.TextEncoder})
else:
raise ValueError(
"No Qwen3 Encoder source provided. Either set 'Qwen3 Encoder' to a standalone model, "
"or set 'Qwen3 Source' to a Diffusers Z-Image model."
)
return ZImageModelLoaderOutput(
transformer=TransformerField(transformer=transformer, loras=[]),
qwen3_encoder=Qwen3EncoderField(tokenizer=qwen3_tokenizer, text_encoder=qwen3_encoder),
vae=VAEField(vae=vae),
)
def _get_self_contained_source(self, context: InvocationContext) -> Optional[ModelIdentifierField]:
"""Return the main model as a submodel source when it is a self-contained pipeline that
ships its own VAE and Qwen3 submodels.
A truthy ``submodels`` dict is not sufficient: Main_SDNQ_Diffusers_ZImage_Config builds
whatever submodels it recognizes from model_index.json, so a partial (or partially
recognized) pipeline can expose e.g. only the transformer. The loader then loads the VAE /
Qwen3 encoder / tokenizer from fixed ``vae`` / ``text_encoder`` / ``tokenizer`` subfolders, soView on GitHub (pinned to 0b6a024f2f)
Solutions
- Set 'Qwen3 Encoder' to a standalone Qwen3 text-encoder model.
- Or set 'Qwen3 Source' to a Diffusers Z-Image model and let the loader derive the encoder (and tokenizer).
- Or supply a self-contained SDNQ main model.
- Re-install the missing Qwen3 encoder if it was deleted from the Model Manager.
Example fix
// before loader = ZImageModelLoaderInvocation(transformer=..., qwen3_encoder_model=None, qwen3_source_model=None) // after loader = ZImageModelLoaderInvocation(transformer=..., qwen3_source_model=ModelField(id='diffusers-z-image'))
Defensive patterns
Strategy: validation
Validate before calling
if loader.qwen3_encoder_model is None and loader.qwen3_source_model is None and loader.main_model_is_sdnq is not True:
raise ValueError("Provide a standalone Qwen3 Encoder, a Diffusers Z-Image Qwen3 Source, or an SDNQ main model") Try / catch
try:
out = z_image_model_loader.invoke(context)
except ValueError as e:
if "No Qwen3 Encoder source" in str(e):
context.logger.error("Set 'Qwen3 Encoder' or 'Qwen3 Source' before invoking the loader.")
else:
raise Prevention
- Include the Qwen3 encoder (or its Diffusers source) whenever you set up a Z-Image loader.
- Remember the encoder is separate from the transformer-only checkpoint.
- Re-check loader inputs after removing any model referenced by the graph.
When it happens
Trigger: invoke() reaches encoder resolution with qwen3_encoder_model None, qwen3_source_model None, and self_contained_source None.
Common situations: Graph built from a transformer-only checkpoint without any text-encoder assets; SDNQ/Diffusers source model removed from the Model Manager after the workflow was authored; user assumed the main Z-Image model bundles the encoder.
Related errors
- No Mistral encoder source provided. Single-file / GGUF trans
- No Qwen3 Encoder source provided. Standalone safetensors/GGU
- No VAE source provided. Either set 'VAE' to a FLUX VAE model
- Expected PreTrainedModel for text encoder, got {type(text_en
- Expected PreTrainedModel for text encoder, got {type(text_en
AI-assisted analysis of invoke-ai/InvokeAI@0b6a024f2f (2026-08-29).
Data as JSON: /api/errors/58a84c318457e517.
Report an issue: GitHub.