Comfy-Org/ComfyUI · error · RuntimeError
SeedVR2Conditioning: model object does not match expected Se
Error message
SeedVR2Conditioning: model object does not match expected SeedVR2 structure: 'model.model.diffusion_model' is None (model.model type {type(inner).__name__}). What it means
The innermost SeedVR2 structure check: input.model.diffusion_model exists as an attribute but is None. The resolver requires a live diffusion model instance to configure conditioning, so a present-but-None value means the wrapper was constructed but the network was never attached or was cleared.
Source
Thrown at comfy_extras/nodes_seedvr.py:55
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):
height_factor, width_factor = factor
height, width = image.shape[-2:]
pad_height = (height_factor - (height % height_factor)) % height_factor
pad_width = (width_factor - (width % width_factor)) % width_factor
if pad_height == 0 and pad_width == 0:
return image
padding = (0, pad_width, 0, pad_height)
return torch.nn.functional.pad(image, padding, mode='constant', value=0.0)View on GitHub (pinned to 1c6d8d45b3)
Solutions
- Instantiate a fresh model load (new 'Load Diffusion Model' node) instead of reusing a disposed wrapper.
- Ensure load completes before the SeedVR2 node runs; check for swallowed upstream load errors.
- In custom code, verify model.model.diffusion_model is not None before calling the node.
Defensive patterns
Strategy: validation
Validate before calling
dm = getattr(getattr(model, 'model', None), 'diffusion_model', None)
if dm is None:
raise ValueError("model.model.diffusion_model is None; perform a fresh model load") Type guard
def has_live_diffusion_model(model) -> bool:
return getattr(getattr(model, 'model', None), 'diffusion_model', None) is not None Prevention
- Never hand-construct BaseModel stubs without loading a state dict.
- After memory-offload code that nils diffusion_model, reload before running SeedVR2 nodes.
When it happens
Trigger: A BaseModel whose diffusion_model was set to None — partially initialized model after a failed load, post-unload state, or a manually constructed BaseModel without loading state; custom code that disposes diffusion_model then reuses the object.
Common situations: Interrupted model loads leaving stubs; aggressive memory-offload code that drops the inner network; constructing model objects programmatically without populating diffusion_model.
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/a5b06111c364c6ea.
Report an issue: GitHub.