PerpNeg Guider optimizations. (#8753)

This commit is contained in:
comfyanonymous 2025-07-01 00:09:07 -07:00 committed by GitHub
parent b22e97dcfa
commit 772de7c006
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -4,6 +4,7 @@ import comfy.sampler_helpers
import comfy.samplers import comfy.samplers
import comfy.utils import comfy.utils
import node_helpers import node_helpers
import math
def perp_neg(x, noise_pred_pos, noise_pred_neg, noise_pred_nocond, neg_scale, cond_scale): def perp_neg(x, noise_pred_pos, noise_pred_neg, noise_pred_nocond, neg_scale, cond_scale):
pos = noise_pred_pos - noise_pred_nocond pos = noise_pred_pos - noise_pred_nocond
@ -69,6 +70,12 @@ class Guider_PerpNeg(comfy.samplers.CFGGuider):
negative_cond = self.conds.get("negative", None) negative_cond = self.conds.get("negative", None)
empty_cond = self.conds.get("empty_negative_prompt", None) empty_cond = self.conds.get("empty_negative_prompt", None)
if model_options.get("disable_cfg1_optimization", False) == False:
if math.isclose(self.neg_scale, 0.0):
negative_cond = None
if math.isclose(self.cfg, 1.0):
empty_cond = None
conds = [positive_cond, negative_cond, empty_cond] conds = [positive_cond, negative_cond, empty_cond]
out = comfy.samplers.calc_cond_batch(self.inner_model, conds, x, timestep, model_options) out = comfy.samplers.calc_cond_batch(self.inner_model, conds, x, timestep, model_options)