Relax sigma batch equality check tolerance

This commit is contained in:
xmarre
2026-02-11 10:23:39 +01:00
parent fa036b3108
commit 4527e33dbd
+26 -7
View File
@@ -15,6 +15,27 @@ import comfy.patcher_extension
import comfy.hooks
def _to_sigma_scalar(v) -> float | None:
"""Return scalar sigma even if passed as a batch vector (shape [B])."""
if v is None:
return None
if torch.is_tensor(v):
t = v.detach()
if t.numel() == 0:
return None
t = t.reshape(-1)
if t.numel() == 1:
return float(t.item())
# Usually all batch sigmas are identical; if not, be conservative.
if not torch.allclose(t, t[0], rtol=1e-3, atol=1e-5):
return float(t.max().item())
return float(t[0].item())
try:
return float(v)
except Exception:
return None
def _clone_cond_metadata(cond):
"""
Clone only the conditioning metadata containers, not the tensors.
@@ -1186,13 +1207,11 @@ class Guider_AutoGuidanceCFG(comfy.samplers.CFGGuider):
ratio = max_ratio
sigma_max = getattr(self, "_ag_sigma_max", None)
if sigma_max is not None and sigma_max > 0:
try:
sigma_cur = float(timestep.item())
except Exception:
sigma_cur = float(timestep.detach().cpu().item())
prog = 1.0 - (sigma_cur / sigma_max) # 0 early -> 1 late
prog = max(0.0, min(1.0, prog))
ratio = max_ratio * (prog * prog) # quadratic ramp
sigma_cur = _to_sigma_scalar(timestep)
if sigma_cur is not None:
prog = 1.0 - (sigma_cur / sigma_max) # 0 early -> 1 late
prog = max(0.0, min(1.0, prog))
ratio = max_ratio * (prog * prog) # quadratic ramp
limit = ratio * n_cfg
scale = torch.clamp(limit / (n_delta + 1e-8), max=1.0)