Skip to content

Commit 5772965

Browse files
committed
Fix slightly different output with old backend
1 parent e046e60 commit 5772965

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

invokeai/backend/stable_diffusion/diffusion_backend.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,8 +100,10 @@ def apply_cfg(ctx: DenoiseContext) -> torch.Tensor:
100100
if isinstance(guidance_scale, list):
101101
guidance_scale = guidance_scale[ctx.step_index]
102102

103-
return torch.lerp(ctx.negative_noise_pred, ctx.positive_noise_pred, guidance_scale)
104-
# return ctx.negative_noise_pred + guidance_scale * (ctx.positive_noise_pred - ctx.negative_noise_pred)
103+
# Note: Although logically it same, it seams that precision errors differs.
104+
# This sometimes results in slightly different output.
105+
# return torch.lerp(ctx.negative_noise_pred, ctx.positive_noise_pred, guidance_scale)
106+
return ctx.negative_noise_pred + guidance_scale * (ctx.positive_noise_pred - ctx.negative_noise_pred)
105107

106108
def run_unet(self, ctx: DenoiseContext, ext_manager: ExtensionsManager, conditioning_mode: ConditioningMode):
107109
sample = ctx.latent_model_input

0 commit comments

Comments
 (0)