Comfy-Org/ComfyUI · error · ValueError
SeedVR2 requires conditioning latents from the SeedVR2Condit
Error message
SeedVR2 requires conditioning latents from the SeedVR2Conditioning node.
What it means
SeedVR2's NaDiT forward pulls its reference/conditioning latents from the 'condition' entry of kwargs, which ComfyUI only populates when the SeedVR2Conditioning node attached them to the model input. A missing 'condition' means the model was run as a plain generative DiT, which SeedVR2 (a restoration model) does not support.
Source
Thrown at comfy/ldm/seedvr/model.py:1287
if NaDiT._seedvr2_is_single_conditioning_branch(cond_or_uncond):
return out
pos, neg = out.chunk(2, dim=0)
return torch.cat([neg, pos], dim=0)
def forward(
self,
x,
timestep,
context, # l c
disable_cache: bool = False,
**kwargs
):
transformer_options = kwargs.get("transformer_options", {})
patches_replace = transformer_options.get("patches_replace", {})
blocks_replace = patches_replace.get("dit", {})
conditions = kwargs.get("condition")
if conditions is None:
raise ValueError("SeedVR2 requires conditioning latents from the SeedVR2Conditioning node.")
x = self._check_seedvr2_video_latent(x, SEEDVR2_LATENT_CHANNELS, "latent")
conditions = self._check_seedvr2_video_latent(conditions, SEEDVR2_LATENT_CHANNELS + 1, "conditioning")
b, _, t, h, w = x.shape
if conditions.shape[0] != b or conditions.shape[2:] != (t, h, w):
raise ValueError(
f"SeedVR2 conditioning shape must match latent batch/temporal/spatial dimensions; got latent {tuple(x.shape)} and conditioning {tuple(conditions.shape)}."
)
x = x.movedim(1, -1)
conditions = conditions.movedim(1, -1)
cache = Cache(disable=disable_cache)
txt, txt_shape = self._resolve_text_conditioning(context, transformer_options.get("cond_or_uncond"))
vid, vid_shape = flatten(x)
cond_latent, _ = flatten(conditions)
vid = torch.cat([vid, cond_latent], dim=-1)
View on GitHub (pinned to 1c6d8d45b3)
Solutions
- Insert the SeedVR2Conditioning node between the SeedVR2 MODEL and the sampler, feeding it the LQ latent (and mask).
- Un-bypass the SeedVR2Conditioning node if it is muted.
- Verify the conditioning actually flows on the model object ComfyUI samples with (check the model input patch is present).
- Do not attempt unconditional generation with SeedVR2 — it is restoration-only.
Defensive patterns
Strategy: validation
Validate before calling
def validate_seedvr2_model_input(model_input_kwargs):
if model_input_kwargs.get("condition") is None:
raise ValueError("SeedVR2 requires SeedVR2Conditioning; attach LQ latent + mask before sampling")
return model_input_kwargs Prevention
- Always insert the SeedVR2Conditioning node between the SeedVR2 model and the sampler.
- Do not bypass or mute the conditioning node.
- Remember SeedVR2 is restoration-only; there is no unconditional path.
When it happens
Trigger: Sampling with a SeedVR2 model whose MODEL output never passed through the SeedVR2Conditioning node; bypassing the conditioning node in the workflow (bypass passes inputs through unchanged, dropping the attached condition); custom node code calling model forward without the condition kwarg.
Common situations: User connects SeedVR2 model + positive prompt directly to a sampler; the SeedVR2Conditioning node is muted; a ported workflow lost the conditioning link.
Related errors
- SeedVR2 expected an even text-conditioning batch, got shape
- SeedVR2 expected {name} channels to be {channels}, got shape
- SeedVR2 conditioning shape must match latent batch/temporal/
- Need at least {require_count} hooks to combine, but only had
- PixDiT_T2I requires context (text embeddings) of shape [B, L
AI-assisted analysis of Comfy-Org/ComfyUI@1c6d8d45b3 (2026-08-14).
Data as JSON: /api/errors/b1dad334702d679c.
Report an issue: GitHub.