{"record":{"id":"db122b97c3fd08a2","repo":"invoke-ai/InvokeAI","slug":"cfg-scale-must-be-greater-than-1","errorCode":null,"errorMessage":"cfg_scale must be greater than 1","messagePattern":"cfg_scale must be greater than 1","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"invokeai/app/invocations/denoise_latents.py","lineNumber":245,"sourceCode":"        default=None,\n        description=FieldDescriptions.latents,\n        input=Input.Connection,\n        ui_order=4,\n    )\n    denoise_mask: Optional[DenoiseMaskField] = InputField(\n        default=None,\n        description=FieldDescriptions.denoise_mask,\n        input=Input.Connection,\n        ui_order=8,\n    )\n\n    @field_validator(\"cfg_scale\")\n    def ge_one(cls, v: Union[List[float], float]) -> Union[List[float], float]:\n        \"\"\"validate that all cfg_scale values are >= 1\"\"\"\n        if isinstance(v, list):\n            for i in v:\n                if i < 1:\n                    raise ValueError(\"cfg_scale must be greater than 1\")\n        else:\n            if v < 1:\n                raise ValueError(\"cfg_scale must be greater than 1\")\n        return v\n\n    @staticmethod\n    def _get_text_embeddings_and_masks(\n        cond_list: list[ConditioningField],\n        context: InvocationContext,\n        device: torch.device,\n        dtype: torch.dtype,\n    ) -> tuple[Union[list[BasicConditioningInfo], list[SDXLConditioningInfo]], list[Optional[torch.Tensor]]]:\n        \"\"\"Get the text embeddings and masks from the input conditioning fields.\"\"\"\n        text_embeddings: Union[list[BasicConditioningInfo], list[SDXLConditioningInfo]] = []\n        text_embeddings_masks: list[Optional[torch.Tensor]] = []\n        for cond in cond_list:\n            cond_data = context.conditioning.load(cond.conditioning_name)\n            text_embeddings.append(cond_data.conditionings[0].to(device=device, dtype=dtype))","sourceCodeStart":227,"sourceCodeEnd":263,"githubUrl":"https://github.com/invoke-ai/InvokeAI/blob/0b6a024f2ff6a86bfb953dcdb9cc504ef7397a06/invokeai/app/invocations/denoise_latents.py#L227-L263","documentation":"The DenoiseLatents invocation validates that every classifier-free-guidance scale value is >= 1 via a pydantic field_validator. CFG below 1 would invert the guidance direction, which InvokeAI considers invalid, so a single float below 1 raises this ValueError at model validation time.","triggerScenarios":"Constructing a DenoiseLatents with `cfg_scale` < 1 as a plain float; passing a list of cfg_scale values where any single element is < 1 (list branch at this line).","commonSituations":"Users experimenting with negative/low CFG borrowed from other tools (some samplers allow cfg<1); API clients submitting per-step CFG lists where one entry is wrong; UI defaults carried over from libraries that permit cfg 0.x.","solutions":["Raise cfg_scale to a value >= 1 (typically 6-12 for SD)","Check each element if passing a list — remove or raise any element below 1","If you truly want unguided output, set cfg_scale = 1 (equivalent to no CFG) rather than < 1"],"exampleFix":"// before\nDenoiseLatents(cfg_scale=0.75, ...)\n// after\nDenoiseLatents(cfg_scale=1.0, ...)  # or higher, e.g. 7.5","handlingStrategy":"validation","validationCode":"values = cfg_scale if isinstance(cfg_scale, list) else [cfg_scale]\nif any(v < 1 for v in values):\n    raise ValueError(\"all cfg_scale values must be >= 1\")","typeGuard":"def is_valid_cfg(cfg: object) -> bool:\n    if isinstance(cfg, list):\n        return all(isinstance(v, (int, float)) and v >= 1 for v in cfg)\n    return isinstance(cfg, (int, float)) and cfg >= 1","tryCatchPattern":"try:\n    denoise = DenoiseLatents(cfg_scale=cfg, ...)\nexcept pydantic.ValidationError as e:\n    cfg = max(cfg, 1.0)\n    denoise = DenoiseLatents(cfg_scale=cfg, ...)","preventionTips":["Clamp cfg_scale to >= 1 in any UI or API wrapper","Validate list elements individually, not just the container","Use cfg_scale = 1 for unguided generation instead of values below 1"],"tags":["python","pydantic","validation","cfg","stable-diffusion"],"backgroundTag":"schema-validation-failed","analyzedSha":"0b6a024f2ff6a86bfb953dcdb9cc504ef7397a06","analyzedAt":"2026-08-29T04:46:49.967Z","schemaVersion":2},"datasetVersion":"2026-08-29T07:17:48.351Z"}