Comfy-Org/ComfyUI · error · RuntimeError
SeedVR2Conditioning: model object does not match expected Se
Error message
SeedVR2Conditioning: model object does not match expected SeedVR2 structure: input.model is None (input type {type(model).__name__}). What it means
Raised by the SeedVR2 resolver when the input does have a 'model' attribute but its value is None. This distinguishes a half-initialized or cleared wrapper from a wrong type entirely (error 956), and reports the input's type to help identify which object was connected.
Source
Thrown at comfy_extras/nodes_seedvr.py:44
)
from torchvision.transforms import functional as TVF
from torchvision.transforms.functional import InterpolationMode
_SEEDVR2_INVALID_MODEL_MSG_PREFIX = "SeedVR2Conditioning: model object does not match expected SeedVR2 structure"
_ATTR_MISSING = object()
def _resolve_seedvr2_diffusion_model(model):
inner = getattr(model, "model", _ATTR_MISSING)
if inner is _ATTR_MISSING:
raise RuntimeError(
f"{_SEEDVR2_INVALID_MODEL_MSG_PREFIX}: input has no 'model' attribute "
f"(got type {type(model).__name__})."
)
if inner is None:
raise RuntimeError(
f"{_SEEDVR2_INVALID_MODEL_MSG_PREFIX}: input.model is None "
f"(input type {type(model).__name__})."
)
diffusion_model = getattr(inner, "diffusion_model", _ATTR_MISSING)
if diffusion_model is _ATTR_MISSING:
raise RuntimeError(
f"{_SEEDVR2_INVALID_MODEL_MSG_PREFIX}: 'model.model' has no "
f"'diffusion_model' attribute (got type {type(inner).__name__})."
)
if diffusion_model is None:
raise RuntimeError(
f"{_SEEDVR2_INVALID_MODEL_MSG_PREFIX}: 'model.model.diffusion_model' "
f"is None (model.model type {type(inner).__name__})."
)
return diffusion_model
def div_pad(image, factor):View on GitHub (pinned to 1c6d8d45b3)
Solutions
- Re-load the SeedVR2 model with a fresh 'Load Diffusion Model' node and reconnect it.
- If custom code nils out .model for memory reasons, restore the inner model before invoking the node.
- Verify the load node actually succeeded (no upstream load errors swallowed).
Defensive patterns
Strategy: validation
Validate before calling
if getattr(model, 'model', None) is None:
raise ValueError("model wrapper has model=None; reload the checkpoint before use") Type guard
def has_live_inner_model(model) -> bool:
return getattr(model, 'model', None) is not None Prevention
- Do not reuse model wrappers after unload/disposal code paths.
- Confirm the load node completed without errors before downstream SeedVR2 nodes run.
When it happens
Trigger: A model wrapper whose .model was set to None — e.g. after unloading/disposal, a failed load that left a stub object, or a mock/placeholder passed from custom code.
Common situations: Memory-management code that offloads and nulls inner models; failed/interrupted checkpoint loads; test doubles that mimic the wrapper shape but leave model=None.
Related errors
- SeedVR2Conditioning: model object does not match expected Se
- SeedVR2Conditioning: model object does not match expected Se
- SeedVR2Conditioning: model object does not match expected Se
- INVALID_TAG_FILTER
- ERROR: audio encoder file is invalid or unsupported embed_di
AI-assisted analysis of Comfy-Org/ComfyUI@1c6d8d45b3 (2026-08-14).
Data as JSON: /api/errors/c193c742e140b07d.
Report an issue: GitHub.