From 8a50599bd8c242d24a04799570cc09f6e91f05f6 Mon Sep 17 00:00:00 2001 From: rockerBOO Date: Mon, 17 Mar 2025 01:03:13 -0400 Subject: [PATCH 1/2] Fix RenormCFG node for batches --- comfy_extras/nodes_lumina2.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/comfy_extras/nodes_lumina2.py b/comfy_extras/nodes_lumina2.py index 275189785..eb71f1462 100644 --- a/comfy_extras/nodes_lumina2.py +++ b/comfy_extras/nodes_lumina2.py @@ -33,12 +33,13 @@ class RenormCFG: ori_pos_norm = torch.linalg.vector_norm(cond_eps , dim=tuple(range(1, len(cond_eps.shape))), keepdim=True ) - max_new_norm = ori_pos_norm * float(renorm_cfg) - new_pos_norm = torch.linalg.vector_norm( + max_new_norms = ori_pos_norm * float(renorm_cfg) + new_pos_norms = torch.linalg.vector_norm( half_eps, dim=tuple(range(1, len(half_eps.shape))), keepdim=True ) - if new_pos_norm >= max_new_norm: - half_eps = half_eps * (max_new_norm / new_pos_norm) + for max_new_norm, new_pos_norm, denoise in zip(max_new_norms, new_pos_norms, half_eps): + if new_pos_norm >= max_new_norm: + denoise = denoise * (max_new_norm / new_pos_norm) else: cond_eps, uncond_eps = cond_denoised[:, :in_channels], uncond_denoised[:, :in_channels] cond_rest, _ = cond_denoised[:, in_channels:], uncond_denoised[:, in_channels:] From 11a182ef100748541682455622c92bf9b3ebe16e Mon Sep 17 00:00:00 2001 From: rockerBOO Date: Mon, 17 Mar 2025 12:09:01 -0400 Subject: [PATCH 2/2] Update half_eps --- comfy_extras/nodes_lumina2.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/comfy_extras/nodes_lumina2.py b/comfy_extras/nodes_lumina2.py index eb71f1462..5c321b5f8 100644 --- a/comfy_extras/nodes_lumina2.py +++ b/comfy_extras/nodes_lumina2.py @@ -37,9 +37,9 @@ class RenormCFG: new_pos_norms = torch.linalg.vector_norm( half_eps, dim=tuple(range(1, len(half_eps.shape))), keepdim=True ) - for max_new_norm, new_pos_norm, denoise in zip(max_new_norms, new_pos_norms, half_eps): + for i, (max_new_norm, new_pos_norm) in enumerate(zip(max_new_norms, new_pos_norms)): if new_pos_norm >= max_new_norm: - denoise = denoise * (max_new_norm / new_pos_norm) + half_eps[i] = half_eps[i] * (max_new_norm / new_pos_norm) else: cond_eps, uncond_eps = cond_denoised[:, :in_channels], uncond_denoised[:, :in_channels] cond_rest, _ = cond_denoised[:, in_channels:], uncond_denoised[:, in_channels:]