Compare commits

...
Author SHA1 Message Date
asagi4 1b0ff62d10 v2.0.0-rc.3 2025-05-31 00:25:05 +03:00
asagi4 cf93093d59 Fix long prompts with Attention Couple
Broken by moving the LCM calculation outside the loop

See #108
2025-05-31 00:22:42 +03:00
2 changed files with 7 additions and 6 deletions
+6 -5
View File
@@ -54,7 +54,7 @@ class AttentionCoupleHook(TransformerOptionsHook):
self.num_conds = len(conds) + 1
self.base_strength = base_cond[1].pop("strength", 1.0)
self.strengths = [cond[1].get("strength", 1.0) for cond in conds]
self.conds: list[torch.Tensor] = [cond[0] for cond in conds]
self.conds: list[torch.Tensor] = [base_cond[0]] + [cond[0] for cond in conds]
base_mask = base_cond[1].pop("mask", None)
masks = [cond[1].pop("mask") * cond[1].pop("mask_strength") for cond in conds]
@@ -91,18 +91,19 @@ class AttentionCoupleHook(TransformerOptionsHook):
lcm_tokens_k = lcm_for_list(num_tokens_k)
lcm_tokens_v = lcm_for_list(num_tokens_v)
# Skip the base cond here, which is always first
self.conds_k_tensor = torch.cat(
[
cond[0].repeat(1, lcm_tokens_k // num_tokens_k[i], 1) * self.strengths[i]
for i, cond in enumerate(conds_kv)
cond[0].repeat(1, lcm_tokens_k // num_tokens_k[i + 1], 1) * self.strengths[i]
for i, cond in enumerate(conds_kv[1:])
],
dim=0,
)
if has_negpip:
self.conds_v_tensor = torch.cat(
[
cond[1].repeat(1, lcm_tokens_v // num_tokens_v[i], 1) * self.strengths[i]
for i, cond in enumerate(conds_kv)
cond[1].repeat(1, lcm_tokens_v // num_tokens_v[i + 1], 1) * self.strengths[i]
for i, cond in enumerate(conds_kv[1:])
],
dim=0,
)
+1 -1
View File
@@ -1,7 +1,7 @@
[project]
name = "comfyui-prompt-control"
description = "Nodes for convenient prompt editing, making many common operations prompt-controllable"
version = "2.0.0-rc.2"
version = "2.0.0-rc.3"
license = { file = "LICENSE" }
# some lark versions older than 1.1.9 apparently have a bug that breaks things, see https://github.com/asagi4/comfyui-prompt-control/issues/35
dependencies = ["lark >= 1.1.9"]