invoke-ai/InvokeAI · error · NotAMatchError
state dict does not look like an Anima ControlNet-LLLite mod
Error message
state dict does not look like an Anima ControlNet-LLLite model
What it means
_validate_looks_like_anima_lllite is a guard called from from_model_on_disk that requires the state dict to contain the characteristic Anima ControlNet-LLLite keys (checked via _has_anima_lllite_keys). When the keys are absent entirely, the prober concludes the file is not an Anima LLLite model and raises NotAMatchError so other config types can try.
Source
Thrown at invokeai/backend/model_manager/configs/controlnet.py:342
return cls(**args)
@classmethod
def _get_cond_in_channels(cls, mod: ModelOnDisk) -> int:
# Mirrors AnimaControlNetLLLite.from_state_dict: prefer the saved `lllite.*` hyperparam, falling back to
# the conv1 weight shape (ch_half, cond_in_channels, 4, 4).
meta_value = mod.metadata().get("lllite.cond_in_channels")
if meta_value is not None:
return int(meta_value)
conv1_weight = mod.load_state_dict().get("lllite_conditioning1.conv1.weight")
if conv1_weight is None:
raise NotAMatchError("state dict has Anima ControlNet-LLLite keys but no lllite_conditioning1.conv1.weight")
return int(conv1_weight.shape[1])
@classmethod
def _validate_looks_like_anima_lllite(cls, mod: ModelOnDisk) -> None:
state_dict = mod.load_state_dict()
if not _has_anima_lllite_keys(state_dict):
raise NotAMatchError("state dict does not look like an Anima ControlNet-LLLite model")
View on GitHub (pinned to 0b6a024f2f)
Solutions
- Verify the file is genuinely an Anima ControlNet-LLLite checkpoint (check for lllite_conditioning1.* keys)
- Use the correct config type / import route for a standard ControlNet model instead
- Re-download from the official Anima LLLite release if the file is corrupted or renamed
- Exclude the file from the InvokeAI models directory/scan if it belongs to another tool
Example fix
// before # standard SD controlnet.safetensors registered as anima lllite invokeai-Web import ./controlnet.safetensors // after # import standard controlnets via the controlnet config family invokeai-web import ./controlnet.safetensors # matched as ControlNet, not Anima LLLite
Defensive patterns
Strategy: validation
Validate before calling
from safetensors import safe_open
def looks_like_anima_lllite(path) -> bool:
with safe_open(path, framework="pt") as f:
return any(k.startswith("lllite_conditioning") for k in f.keys()) Try / catch
try:
config = probe(mod)
except NotAMatchError as e:
if "does not look like an Anima ControlNet-LLLite" in str(e):
config = probe_as_standard_controlnet(mod) # try other config family
else:
raise Prevention
- Download ControlNet-LLLite models only from trusted Anima releases
- Keep standard ControlNets separate from LLLite model folders
- Let InvokeAI auto-probe rather than forcing the LLLite config class
- Inspect safetensors keys before import to classify the model
When it happens
Trigger: from_model_on_disk probing a ControlNet checkpoint that lacks any Anima LLLite key pattern — a standard SD ControlNet, a kohya LLLite with different naming, or an unrelated safetensors file placed in the models directory.
Common situations: Pointing InvokeAI at a generic ControlNet .safetensors expecting LLLite support; downloading a file for a different backend; auto-scan picking up unrelated weight files in a watched folder.
Related errors
- state dict has Anima ControlNet-LLLite keys but no lllite_co
- Unsupported control_lllite type: {type(control_lllite)}
- The Anima ControlNet-LLLite model '{lllite_field.control_mod
- This Anima ControlNet-LLLite adapter is an inpainting adapte
- Unsupported Anima ControlNet-LLLite adapter: expected 3 or 4
AI-assisted analysis of invoke-ai/InvokeAI@0b6a024f2f (2026-08-29).
Data as JSON: /api/errors/bae361e2e939d479.
Report an issue: GitHub.