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
- Either connect a negative conditioning field (prompt with negative text) to negative_conditioning
- 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
- Always provide an empty-prompt negative conditioning node for CFG runs
- Default guidance_scale to 1.0 when the negative input is optional
- Validate required edges for guidance_scale > 1 before submitting the graph
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
- denoising_start must be 0 when no initial latents are provid
- 'latents' or 'noise' must be provided!
- User not found or inactive
- Missing authentication credentials
- Authentication required
AI-assisted analysis of invoke-ai/InvokeAI@0b6a024f2f (2026-08-29).
Data as JSON: /api/errors/c9059c36f3da06ca.
Report an issue: GitHub.