invoke-ai/InvokeAI · error · NotImplementedError
CheckpointConfigBase is not implemented for the Krea-2 diffu
Error message
CheckpointConfigBase is not implemented for the Krea-2 diffusers loader.
What it means
The Krea-2 loader only supports diffusers-format directories, not legacy single-file checkpoint configs (Checkpoint_Config_Base subclasses, i.e. .safetensors/.ckpt singles). If handed such a config, it raises NotImplementedError because there is no single-file weight-conversion path implemented for this loader.
Source
Thrown at invokeai/backend/model_manager/load/model_loaders/krea2.py:264
@ModelLoaderRegistry.register(base=BaseModelType.Krea2, type=ModelType.Main, format=ModelFormat.Diffusers)
class Krea2DiffusersModel(GenericDiffusersLoader):
"""Class to load Krea-2 main models (Krea-2-Turbo) in diffusers format.
Loads every submodel (transformer, vae, text_encoder, tokenizer, scheduler) from the diffusers
pipeline folder via the class names declared in model_index.json. The transformer resolves to
diffusers' ``Krea2Transformer2DModel`` (only available in diffusers main / >=0.39); the VAE to
``AutoencoderKLQwenImage`` and the text encoder to ``Qwen3VLModel``.
"""
def _load_model(
self,
config: AnyModelConfig,
submodel_type: Optional[SubModelType] = None,
) -> AnyModel:
if isinstance(config, Checkpoint_Config_Base):
raise NotImplementedError("CheckpointConfigBase is not implemented for the Krea-2 diffusers loader.")
if submodel_type is None:
raise Exception("A submodel type must be provided when loading main pipelines.")
model_path = Path(config.path)
# model_index.json declares the tokenizer as the slow `Qwen2Tokenizer`, which requires
# vocab.json/merges.txt. Krea-2 ships only a fast tokenizer.json, so load via AutoTokenizer
# (which resolves to Qwen2TokenizerFast from tokenizer.json).
#
# Krea-2's tokenizer_config.json stores `extra_special_tokens` as a list (the special tokens
# are already baked into tokenizer.json as added tokens). Newer transformers expects a dict and
# crashes on the list, so override it with an empty dict — the special tokens are still
# recognized from tokenizer.json.
if submodel_type is SubModelType.Tokenizer:
return AutoTokenizer.from_pretrained(
model_path / submodel_type.value, local_files_only=True, extra_special_tokens={}
)View on GitHub (pinned to 0b6a024f2f)
Solutions
- Convert the single-file checkpoint to a diffusers directory layout and re-register the model with the diffusers config type.
- Download the official diffusers-format repository instead of the single-file checkpoint.
- Use a different loader/legacy path that supports Checkpoint configs for this model family.
- Implement a single-file conversion path in the loader if supporting checkpoint configs is required.
Example fix
// before loader._load_model(Checkpoint_Config_File(path="krea2.safetensors"), SubModelType.Transformer) // after cfg = Main_Diffusers_Krea2_Config(path="krea2_diffusers/") loader._load_model(cfg, SubModelType.Transformer)
Defensive patterns
Strategy: type-guard
Validate before calling
from invokeai.backend.model_manager.configs.base import Checkpoint_Config_Base
if isinstance(config, Checkpoint_Config_Base):
raise TypeError("use a diffusers-format config for the Krea-2 loader") Type guard
def is_diffusers_config(config) -> bool:
from invokeai.backend.model_manager.configs.base import Checkpoint_Config_Base
return not isinstance(config, Checkpoint_Config_Base) Try / catch
try:
model = loader._load_model(config, submodel_type)
except NotImplementedError as e:
if "Krea-2 diffusers loader" in str(e):
config = convert_checkpoint_to_diffusers_config(config)
model = loader._load_model(config, submodel_type)
else:
raise Prevention
- Prefer diffusers-directory downloads over single-file checkpoints for Krea-2 models.
- Convert legacy Checkpoint configs once at registration time, not at load time.
- Dispatch loaders based on model format so checkpoint files go to a compatible loader.
When it happens
Trigger: Calling _load_model (or registering/loading a model through the manager) with a config whose type is a Checkpoint_Config_Base subclass while it dispatches to the Krea-2 loader.
Common situations: Users downloading a single-file Krea-2 checkpoint (.safetensors) instead of the diffusers repo; legacy model records stored as checkpoint format then routed to the new diffusers loader.
Related errors
- Unrecognised PiD decoder checkpoint extension: {suffix!r}
- CheckpointConfigBase is not implemented for Qwen Image Edit
- {source} is missing model parameters: {sorted(incompatible_k
- {source} is missing {key} after prefix strip and key convers
- Expected Main_Checkpoint_Wan_Config, got {type(config).__nam
AI-assisted analysis of invoke-ai/InvokeAI@0b6a024f2f (2026-08-29).
Data as JSON: /api/errors/1669d20dd645c424.
Report an issue: GitHub.