invoke-ai/InvokeAI · error · ValueError

Negative conditioning is required when guidance_scale > 1.0

Error message

Negative conditioning is required when guidance_scale > 1.0

What it means

ErnieImageDenoise performs classifier-free guidance only when guidance_scale > 1.0, and CFG requires negative conditioning to steer away from. If guidance_scale exceeds 1 but no negative_conditioning input was supplied, the invocation raises this ValueError instead of silently running without CFG.

Source

Thrown at invokeai/app/invocations/ernie_image_denoise.py:98

    denoising_end: float = InputField(default=1.0, ge=0, le=1, description=FieldDescriptions.denoising_end)
    seed: int = InputField(default=0, description="Random seed for noise generation.")
    scheduler: ERNIE_IMAGE_SCHEDULER_NAME_VALUES = InputField(
        default="euler",
        description="Scheduler used during denoising.",
        ui_choice_labels=ERNIE_IMAGE_SCHEDULER_LABELS,
    )

    @torch.no_grad()
    def invoke(self, context: InvocationContext) -> LatentsOutput:
        device = TorchDevice.choose_torch_device()
        dtype = TorchDevice.choose_bfloat16_safe_dtype(device)

        pos_info = self._load_conditioning(context, self.positive_conditioning, dtype, device)
        neg_info: Optional[ErnieImageConditioningInfo] = None
        do_cfg = self.guidance_scale > 1.0
        if do_cfg:
            if self.negative_conditioning is None:
                raise ValueError("Negative conditioning is required when guidance_scale > 1.0")
            neg_info = self._load_conditioning(context, self.negative_conditioning, dtype, device)

        transformer_info = context.models.load(self.transformer.transformer)

        with ExitStack() as exit_stack:
            (_, transformer) = exit_stack.enter_context(transformer_info.model_on_device())

            text_in_dim = int(transformer.config.text_in_dim)
            in_channels = int(transformer.config.in_channels)  # 128 -- already patched

            text_bth, text_lens = sampling_utils.pad_text(
                [pos_info.prompt_embeds], device=device, dtype=dtype, text_in_dim=text_in_dim
            )
            neg_text_bth = neg_text_lens = None
            if neg_info is not None:
                neg_text_bth, neg_text_lens = sampling_utils.pad_text(
                    [neg_info.prompt_embeds], device=device, dtype=dtype, text_in_dim=text_in_dim
                )

View on GitHub (pinned to 0b6a024f2f)

Solutions

  1. Either connect a negative conditioning field (prompt with negative text) to negative_conditioning
  2. Or set guidance_scale to exactly 1.0 so CFG is disabled and negative conditioning isn't required

Example fix

// before
ErnieImageDenoise(positive_conditioning=pos, guidance_scale=5.0)  # negative is None
// after
neg = ErnieConditioningInvocation(prompt="")
ErnieImageDenoise(positive_conditioning=pos, negative_conditioning=neg, guidance_scale=5.0)
Defensive patterns

Strategy: validation

Validate before calling

if guidance_scale > 1.0 and negative_conditioning is None:
    raise ValueError("negative_conditioning is required when guidance_scale > 1.0; or set guidance_scale = 1.0")

Type guard

def cfg_is_satisfied(guidance_scale: float, negative_conditioning) -> bool:
    return guidance_scale <= 1.0 or negative_conditioning is not None

Try / catch

try:
    out = invocation.invoke(context)
except ValueError as e:
    if "Negative conditioning is required" in str(e):
        invocation.guidance_scale = 1.0  # disable CFG as fallback
        out = invocation.invoke(context)
    else:
        raise

Prevention

When it happens

Trigger: Setting guidance_scale to e.g. 4.0 while leaving the negative_conditioning input unconnected (None) on the ErnieImageDenoise invocation.

Common situations: Txt2img graphs where users only wire the positive prompt and crank the guidance; API payloads omitting the negative conditioning field; UIs that hide the negative prompt input by default.

Related errors


AI-assisted analysis of invoke-ai/InvokeAI@0b6a024f2f (2026-08-29). Data as JSON: /api/errors/c9059c36f3da06ca. Report an issue: GitHub.