{"record":{"id":"58a84c318457e517","repo":"invoke-ai/InvokeAI","slug":"no-qwen3-encoder-source-provided-either-set-qwen","errorCode":null,"errorMessage":"No Qwen3 Encoder source provided. Either set 'Qwen3 Encoder' to a standalone model, or set 'Qwen3 Source' to a Diffusers Z-Image model.","messagePattern":"No Qwen3 Encoder source provided\\. Either set 'Qwen3 Encoder' to a standalone model, or set 'Qwen3 Source' to a Diffusers Z-Image model\\.","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"invokeai/app/invocations/z_image_model_loader.py","lineNumber":136,"sourceCode":"                \"or set 'Qwen3 Source' to a Diffusers Z-Image model.\"\n            )\n\n        # Determine Qwen3 Encoder source\n        if self.qwen3_encoder_model is not None:\n            # Use standalone Qwen3 Encoder\n            qwen3_tokenizer = self.qwen3_encoder_model.model_copy(update={\"submodel_type\": SubModelType.Tokenizer})\n            qwen3_encoder = self.qwen3_encoder_model.model_copy(update={\"submodel_type\": SubModelType.TextEncoder})\n        elif self.qwen3_source_model is not None:\n            # Extract from Diffusers Z-Image model\n            self._validate_diffusers_format(context, self.qwen3_source_model, \"Qwen3 Source\")\n            qwen3_tokenizer = self.qwen3_source_model.model_copy(update={\"submodel_type\": SubModelType.Tokenizer})\n            qwen3_encoder = self.qwen3_source_model.model_copy(update={\"submodel_type\": SubModelType.TextEncoder})\n        elif self_contained_source is not None:\n            # Extract from the self-contained SDNQ main model\n            qwen3_tokenizer = self_contained_source.model_copy(update={\"submodel_type\": SubModelType.Tokenizer})\n            qwen3_encoder = self_contained_source.model_copy(update={\"submodel_type\": SubModelType.TextEncoder})\n        else:\n            raise ValueError(\n                \"No Qwen3 Encoder source provided. Either set 'Qwen3 Encoder' to a standalone model, \"\n                \"or set 'Qwen3 Source' to a Diffusers Z-Image model.\"\n            )\n\n        return ZImageModelLoaderOutput(\n            transformer=TransformerField(transformer=transformer, loras=[]),\n            qwen3_encoder=Qwen3EncoderField(tokenizer=qwen3_tokenizer, text_encoder=qwen3_encoder),\n            vae=VAEField(vae=vae),\n        )\n\n    def _get_self_contained_source(self, context: InvocationContext) -> Optional[ModelIdentifierField]:\n        \"\"\"Return the main model as a submodel source when it is a self-contained pipeline that\n        ships its own VAE and Qwen3 submodels.\n\n        A truthy ``submodels`` dict is not sufficient: Main_SDNQ_Diffusers_ZImage_Config builds\n        whatever submodels it recognizes from model_index.json, so a partial (or partially\n        recognized) pipeline can expose e.g. only the transformer. The loader then loads the VAE /\n        Qwen3 encoder / tokenizer from fixed ``vae`` / ``text_encoder`` / ``tokenizer`` subfolders, so","sourceCodeStart":118,"sourceCodeEnd":154,"githubUrl":"https://github.com/invoke-ai/InvokeAI/blob/0b6a024f2ff6a86bfb953dcdb9cc504ef7397a06/invokeai/app/invocations/z_image_model_loader.py#L118-L154","documentation":"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.","triggerScenarios":"invoke() reaches encoder resolution with qwen3_encoder_model None, qwen3_source_model None, and self_contained_source None.","commonSituations":"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.","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."],"exampleFix":"// before\nloader = ZImageModelLoaderInvocation(transformer=..., qwen3_encoder_model=None, qwen3_source_model=None)\n// after\nloader = ZImageModelLoaderInvocation(transformer=..., qwen3_source_model=ModelField(id='diffusers-z-image'))","handlingStrategy":"validation","validationCode":"if loader.qwen3_encoder_model is None and loader.qwen3_source_model is None and loader.main_model_is_sdnq is not True:\n    raise ValueError(\"Provide a standalone Qwen3 Encoder, a Diffusers Z-Image Qwen3 Source, or an SDNQ main model\")","typeGuard":null,"tryCatchPattern":"try:\n    out = z_image_model_loader.invoke(context)\nexcept ValueError as e:\n    if \"No Qwen3 Encoder source\" in str(e):\n        context.logger.error(\"Set 'Qwen3 Encoder' or 'Qwen3 Source' before invoking the loader.\")\n    else:\n        raise","preventionTips":["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."],"tags":["model-loader","missing-input","qwen3","text-encoder","z-image"],"backgroundTag":"missing-required-input","analyzedSha":"0b6a024f2ff6a86bfb953dcdb9cc504ef7397a06","analyzedAt":"2026-08-29T04:46:49.967Z","schemaVersion":2},"datasetVersion":"2026-08-29T07:17:48.351Z"}