feat: extend REINS candidate/steerable blocks down to 1 and 5-15

CANDIDATE_BLOCKS now covers the whole depth range (1-45), and the
block-choice combo (node + Editor) offers 1/5/10/15 alongside the
existing 20-40 -- test-only, for probing the shallow end where the
anchor/reference rows haven't been attended to yet.
This commit is contained in:
digital-garbage
2026-09-03 22:37:59 +03:00
parent 978e762e90
commit 4e08348574
3 changed files with 4 additions and 4 deletions
+1 -1
View File
@@ -43,7 +43,7 @@ import torch
# of guessed from someone else's percentage. Only DEFAULT_BLOCK ever STEERS; the rest of
# CANDIDATE_BLOCKS are captured read-only alongside it so block_sweep() has something to rank.
DEFAULT_BLOCK = 25
CANDIDATE_BLOCKS = sorted({5, 10, 15, 20, 25, 30, 35, 40, 45, DEFAULT_BLOCK})
CANDIDATE_BLOCKS = sorted({1, 5, 10, 15, 20, 25, 30, 35, 40, 45, DEFAULT_BLOCK})
MIN_PER_GROUP = 2 # need 2+ POSITIVE-weight and 2+ NEGATIVE-weight rows. Was 3 (parity with
# absolute/taste steering's floor, not derived from anything specific to this mechanism).
+2 -2
View File
@@ -317,8 +317,8 @@
hint: "EXPERIMENTAL, unvalidated, H3 only. Reaches inside the model instead of around it: captures one block's video-row hidden state each generation, and once you have 3+ liked and 3+ disliked runs on this refinement key, adds their mean difference back into that block's output on every later run. No architectural ceiling like the attention-bias mechanisms have — push the strength too far and coherence can break with no warning." },
{ name: "h3_repr_steering_strength", label: "Representation steering strength", kind: "float", default: 0.05, min: 0.0, max: 2.0, step: 0.01, dependsOn: "h3_repr_steering",
hint: "Fraction of the block's own hidden-state norm added along the learned direction. Start low and push it deliberately high on a same-seed test to confirm it moves the video at all before trusting a small value." },
{ name: "h3_repr_steering_block", label: "Steer at block", kind: "combo", choices: ["20", "25", "30", "35", "40"], default: "25", dependsOn: "h3_repr_steering",
hint: "TEST-ONLY: which of the block-sweep's candidate blocks actually gets steered, instead of always block 25. The other candidate blocks are still captured read-only either way." },
{ name: "h3_repr_steering_block", label: "Steer at block", kind: "combo", choices: ["1", "5", "10", "15", "20", "25", "30", "35", "40"], default: "25", dependsOn: "h3_repr_steering",
hint: "TEST-ONLY: which of the block-sweep's candidate blocks actually gets steered, instead of always block 25. Blocks 1-15 are deep-end territory (the anchor/reference rows haven't been read by the network yet at that depth) -- expect this to behave differently, not just 'weaker', than 20-40. The other candidate blocks are still captured read-only either way." },
{ name: "identity_transfer_enabled", label: "Best-FaceID compatibility", kind: "bool", default: false,
hint: "Feeds the identity pin image the way Best-FaceID identity LoRAs expect it. Needs an Identity pin set.",
detail: "Replaces Continuity's identity-pin guide with separate, non-rendered reference tokens plus an optional ArcFace projector below. Load the LoRA itself in Models. No effect without an identity pin." },
+1 -1
View File
@@ -2806,7 +2806,7 @@ class FunPackLTXAVSceneChainSampler:
"default": 0.05, "min": 0.0, "max": 2.0, "step": 0.01,
"tooltip": "How much of the learned direction to add, as a fraction of that block's own hidden-state norm. Unlike the attention-bias channel, there is no architectural ceiling here -- push too far and coherence breaks with no warning. Start low; the way to tell it is doing anything at all is to push this deliberately high on a same-seed test and see if the video visibly moves, then back off.",
}),
"h3_repr_steering_block": (["20", "25", "30", "35", "40"], {
"h3_repr_steering_block": (["1", "5", "10", "15", "20", "25", "30", "35", "40"], {
"default": "25",
"tooltip": "TEST-ONLY: which block actually gets steered (the rest of the sweep's candidate blocks are still captured read-only, same as always). direction() is recomputed for whichever block you pick here -- this does not change what block_sweep ranks, only which block's learned direction gets injected into this run.",
}),