invoke-ai/InvokeAI · error · NotImplementedError
No subclass of LoadedModel is registered for base={config.ba
Error message
No subclass of LoadedModel is registered for base={config.base}, type={config.type}, format={config.format} What it means
The model loader registry maps (base, type, format) triples to loader classes. get_implementation looks up the exact key and then a wildcard-Any-base key, and raises NotImplementedError when neither is registered — i.e., no loader supports that combination of model base, type, and format.
Source
Thrown at invokeai/backend/model_manager/load/model_loader_registry.py:92
raise Exception(
f"{subclass.__name__} is trying to register as a loader for {base}/{type}/{format}, but this type of model has already been registered by {cls._registry[key].__name__}"
)
cls._registry[key] = subclass
return subclass
return decorator
@classmethod
def get_implementation(
cls, config: AnyModelConfig, submodel_type: Optional[SubModelType]
) -> Tuple[Type[ModelLoaderBase], Config_Base, Optional[SubModelType]]:
"""Get subclass of ModelLoaderBase registered to handle base and type."""
key1 = cls._to_registry_key(config.base, config.type, config.format) # for a specific base type
key2 = cls._to_registry_key(BaseModelType.Any, config.type, config.format) # with wildcard Any
implementation = cls._registry.get(key1) or cls._registry.get(key2)
if not implementation:
raise NotImplementedError(
f"No subclass of LoadedModel is registered for base={config.base}, type={config.type}, format={config.format}"
)
return implementation, config, submodel_type
@staticmethod
def _to_registry_key(base: BaseModelType, type: ModelType, format: ModelFormat) -> str:
return "-".join([base.value, type.value, format.value])
View on GitHub (pinned to 0b6a024f2f)
Solutions
- Upgrade InvokeAI to a version whose loader registry includes the required (base, type, format) combination.
- Check that the model was identified with the intended format; re-convert/re-import it in a supported format (e.g. diffusers instead of a custom single-file format).
- If you are a developer, register a ModelLoaderBase subclass for the key via ModelLoaderRegistry.register.
Example fix
// before: loading an unsupported format directly
impl, cfg, sub = ModelLoaderRegistry.get_implementation(config, None)
// after: guard the combination first
from invokeai.backend.model_manager.load.model_loader_registry import ModelLoaderRegistry
if not (ModelLoaderRegistry._registry.get(ModelLoaderRegistry._to_registry_key(config.base, config.type, config.format)) or ModelLoaderRegistry._registry.get(ModelLoaderRegistry._to_registry_key(BaseModelType.Any, config.type, config.format))):
raise RuntimeError(f"No loader for {config.base}/{config.type}/{config.format}; upgrade InvokeAI or convert the model")
impl, cfg, sub = ModelLoaderRegistry.get_implementation(config, None) Defensive patterns
Strategy: type-guard
Validate before calling
from invokeai.backend.model_manager.load.model_loader_registry import ModelLoaderRegistry
key1 = ModelLoaderRegistry._to_registry_key(config.base, config.type, config.format)
key2 = ModelLoaderRegistry._to_registry_key(BaseModelType.Any, config.type, config.format)
if not (ModelLoaderRegistry._registry.get(key1) or ModelLoaderRegistry._registry.get(key2)):
raise RuntimeError(f"No loader registered for {config.base}/{config.type}/{config.format}") Type guard
def loader_exists(config) -> bool:
return (ModelLoaderRegistry._registry.get(ModelLoaderRegistry._to_registry_key(config.base, config.type, config.format))
or ModelLoaderRegistry._registry.get(ModelLoaderRegistry._to_registry_key(BaseModelType.Any, config.type, config.format))) is not None Try / catch
try:
impl, cfg, sub = ModelLoaderRegistry.get_implementation(config, submodel_type)
except NotImplementedError as e:
raise RuntimeError(f"This InvokeAI build cannot load {config.type}/{config.format}; upgrade or convert the model") from e Prevention
- Keep InvokeAI upgraded so newly supported model formats have loaders
- Convert exotic formats to diffusers layout before importing
- Avoid hand-editing the format field of model records in the database
When it happens
Trigger: Calling ModelLoaderRegistry.get_implementation(config, submodel_type) with a config whose (base, type, format) tuple has no registered loader, e.g. a newly added ModelType/ModelFormat or a custom config.
Common situations: Running a new InvokeAI version's model database with an older/patched install lacking the loader; custom or experimental model formats (e.g. new quantized formats) before a loader was implemented.
Related errors
- User account is inactive or does not exist
- Unsupported IP-Adapter base type: '{ip_adapter_info.base}'.
- Unsupported base model: {base_model}
- Unsupported model base: {model_identifier.base}
- Error model. HiDiffusion now only supports sd15, sd21, sdxl,
AI-assisted analysis of invoke-ai/InvokeAI@0b6a024f2f (2026-08-29).
Data as JSON: /api/errors/8326f8edce95531c.
Report an issue: GitHub.