{"record":{"id":"1907b1f11688abfd","repo":"unslothai/unsloth","slug":"repo-id-is-not-a-supported-diffusion-image-mod","errorCode":null,"errorMessage":"'{repo_id}' is not a supported diffusion image model. Supported families: {supported_family_names}. If this is a variant of one of them, pass family_override with that family name. (Video models and image models whose diffusers transformer has no single-file loader are not supported.)","messagePattern":"'(.+?)' is not a supported diffusion image model\\. Supported families: (.+?)\\. If this is a variant of one of them, pass family_override with that family name\\. \\(Video models and image models whose diffusers transformer has no single-file loader are not supported\\.\\)","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"studio/backend/core/inference/diffusion.py","lineNumber":1629,"sourceCode":"        gguf_filename: Optional[str] = None,\n        family_override: Optional[str] = None,\n        model_kind: Optional[str] = None,\n        base_repo: Optional[str] = None,\n    ) -> DiffusionFamily:\n        \"\"\"Cheap, network-free validation shared by the route (before it evicts the\n        chat model) and the load paths, so an unloadable pick fails BEFORE the GPU\n        handoff. Resolves the load kind (gguf / single_file / pipeline), then raises\n        ValueError for a missing single-file name, a non-unsloth non-GGUF repo, or an\n        undetectable family, and ValueError/FileNotFoundError for a bad local path.\n        Touches no GPU, network, or state.\"\"\"\n        kind = resolve_model_kind(gguf_filename, model_kind)\n        fam = detect_family_for_pick(repo_id, gguf_filename, family_override)\n        if fam is None:\n            # An excluded model gets its stated reason, not the unknown-family message that invites a doomed retry.\n            excluded = excluded_model_reason(repo_id)\n            if excluded:\n                raise ValueError(f\"'{repo_id}' cannot be loaded: {excluded}\")\n            raise ValueError(\n                f\"'{repo_id}' is not a supported diffusion image model. Supported families: \"\n                f\"{', '.join(supported_family_names())}. If this is a variant of one of them, \"\n                f\"pass family_override with that family name. (Video models and image models \"\n                f\"whose diffusers transformer has no single-file loader are not supported.)\"\n            )\n        # Refuse a too-old diffusers here, not deep in the load, but only when this load builds the diffusers pipeline: a\n        # GGUF this host routes to native sd.cpp never instantiates the class. The picker gate reads the same predicate.\n        # Imported here, not at module import, because the router imports this module's siblings.\n        from .diffusion_engine_router import family_buildable_here\n\n        if not family_buildable_here(fam, model_kind = kind):\n            assert_pipeline_class_available(fam.pipeline_class, fam.name)\n        # Families whose single file IS the whole pipeline have no GGUF path; reject before eviction.\n        if kind == \"gguf\" and fam.single_file_is_pipeline:\n            raise ValueError(\n                f\"'{fam.name}' checkpoints are whole-pipeline single files and have no GGUF \"\n                f\"transformer variant; load the .safetensors pipeline instead of a GGUF.\"\n            )","sourceCodeStart":1611,"sourceCodeEnd":1647,"githubUrl":"https://github.com/unslothai/unsloth/blob/203007d19051dcd2ae33876786d117c99f6b0368/studio/backend/core/inference/diffusion.py#L1611-L1647","documentation":"The fallback refusal when family detection returns None AND the repo is not on the exclusion list - the id simply does not match any supported family name or alias as a whole-segment token. The message lists supported families and suggests family_override for true variants, and notes the two structural gaps: video models and image models whose diffusers transformer has no single-file loader.","triggerScenarios":"validate_load_request with a repo_id whose lowercased name contains no supported family token (longest-segment match against _FAMILIES names/aliases fails), e.g. a brand-new model family, a renamed repo, or a typo in the id.","commonSituations":"A new image model shipped after this backend's family table was written; repo renamed on Hugging Face so the family keyword disappeared from the id; typo ('sdx1' instead of 'sdxl'); user attempts to load a video model through the image pipeline.","solutions":["Check the supported families listed in the message and pick a repo whose id contains one of those family tokens.","If the checkpoint really is a variant of a supported family, pass family_override='<family name>' with the load.","Fix typos or follow a rename: resolve the repo's current id on huggingface.co and retry.","If the model is genuinely new/unsupported, update the backend (family table) or wait for support - no parameter combination will load it."],"exampleFix":"# before: id contains no supported family token\nmanager.validate_load_request(repo_id=\"someorg/brand-new-model\")\n# ValueError: ... is not a supported diffusion image model ...\n\n# after: variant of a supported family -> explicit override\nmanager.validate_load_request(repo_id=\"someorg/brand-new-model\",\n                              family_override=\"qwen-image\")","handlingStrategy":"validation","validationCode":"from core.inference.diffusion_families import detect_family, supported_family_names\n\ndef family_known(repo_id: str, override: str | None = None) -> bool:\n    return detect_family(repo_id, override) is not None","typeGuard":null,"tryCatchPattern":"try:\n    fam = manager.validate_load_request(repo_id=repo_id, family_override=ov)\nexcept ValueError as e:\n    if \"not a supported diffusion image model\" in str(e):\n        suggest_supported_repos(supported_family_names())\n    else:\n        raise","preventionTips":["Build pickers from supported_family_names() instead of free-text repo entry.","When a new model generation ships, check whether the family table needs an entry before users hit this.","Use family_override only for genuine variants; a wrong override moves the failure deeper into the load.","Remember video models are structurally out of scope for the image loader - route them to the video pipeline."],"tags":["model-validation","family-detection","unsupported-model","diffusion"],"backgroundTag":null,"analyzedSha":"203007d19051dcd2ae33876786d117c99f6b0368","analyzedAt":"2026-08-15T02:48:39.846Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}