{"record":{"id":"068982622f35974e","repo":"invoke-ai/InvokeAI","slug":"unsupported-pid-backbone-backbone-r","errorCode":null,"errorMessage":"Unsupported PiD backbone: {backbone!r}","messagePattern":"Unsupported PiD backbone: (.+?)","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"invokeai/backend/pid/decode.py","lineNumber":466,"sourceCode":"    seed: int = 0\n    pid_memory_optimization: bool = False\n    student_t_list: list[float] = field(default_factory=lambda: list(_STUDENT_T_LIST))\n\n\nclass PiDDecoder:\n    \"\"\"High-level decoder that hides PidNet construction and sampling.\n\n    Usage::\n\n        net = load_pid_decoder(state_dict, backbone)\n        net = net.to(device=..., dtype=...)\n        decoder = PiDDecoder(net, backbone=BaseModelType.Flux)\n        image = decoder.decode(latent=..., caption_embs=...)\n    \"\"\"\n\n    def __init__(self, net: PidNet, backbone: BaseModelType) -> None:\n        if backbone not in _PER_BACKBONE:\n            raise ValueError(f\"Unsupported PiD backbone: {backbone!r}\")\n        self.net = net\n        self.backbone = backbone\n\n    @property\n    def sr_scale(self) -> int:\n        return int(self.net.sr_scale)\n\n    @property\n    def latent_spatial_down_factor(self) -> int:\n        return int(_PER_BACKBONE[self.backbone][\"latent_spatial_down_factor\"])\n\n    @torch.no_grad()\n    def decode(\n        self,\n        *,\n        latent: Tensor,\n        caption_embs: Tensor,\n        caption_mask: Optional[Tensor] = None,","sourceCodeStart":448,"sourceCodeEnd":484,"githubUrl":"https://github.com/invoke-ai/InvokeAI/blob/0b6a024f2ff6a86bfb953dcdb9cc504ef7397a06/invokeai/backend/pid/decode.py#L448-L484","documentation":"PiDDecoder supports only a fixed set of backbones (per-backbone configs live in the module-level _PER_BACKBONE map). __init__ validates the backbone BaseModelType argument and raises ValueError for anything not registered, e.g. unsupported or newly added model families.","triggerScenarios":"Constructing PiDDecoder(net, backbone=<BaseModelType not in _PER_BACKBONE>) — e.g. passing BaseModelType.SDXL, StableDiffusion3, or a placeholder/unknown enum value instead of Flux.","commonSituations":"Wiring a PiD decoder node to a non-FLUX base model; typo or stale config mapping a model's base type to PiD; using a new InvokeAI base model type before PiD support exists.","solutions":["Use BaseModelType.Flux (or another type present in _PER_BACKBONE) as the backbone argument","Check _PER_BACKBONE keys in invokeai/backend/pid/decode.py for the supported set","If you need a new backbone, add its config entry to _PER_BACKBONE before passing it"],"exampleFix":"// before\ndecoder = PiDDecoder(net, backbone=BaseModelType.SDXL)\n// after\ndecoder = PiDDecoder(net, backbone=BaseModelType.Flux)","handlingStrategy":"validation","validationCode":"from invokeai.backend.util.base_types import BaseModelType\nfrom invokeai.backend.pid.decode import _PER_BACKBONE\nassert backbone in _PER_BACKBONE, f\"backbone {backbone} unsupported\"\ndecoder = PiDDecoder(net, backbone=backbone)","typeGuard":"def is_supported_pid_backbone(b: BaseModelType) -> bool:\n    return b in _PER_BACKBONE","tryCatchPattern":"try:\n    decoder = PiDDecoder(net, backbone=backbone)\nexcept ValueError as e:\n    logger.error(str(e))\n    decoder = None  # or fall back to a supported backbone","preventionTips":["Only pass BaseModelType values enumerated in _PER_BACKBONE","Centralize backbone selection in config so it cannot be arbitrary","Add a unit test asserting each supported base constructs a decoder"],"tags":["valueerror","config","model-loading"],"backgroundTag":"unsupported-model-backbone","analyzedSha":"0b6a024f2ff6a86bfb953dcdb9cc504ef7397a06","analyzedAt":"2026-08-29T04:46:49.967Z","schemaVersion":2},"datasetVersion":"2026-08-29T07:17:48.351Z"}