From 4e08348574a21f080b07770eac1a5126e77b3d8c Mon Sep 17 00:00:00 2001 From: digital-garbage <133010426+digital-garbage@users.noreply.github.com> Date: Thu, 3 Sep 2026 22:37:59 +0300 Subject: [PATCH] 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. --- h3_repr_steering.py | 2 +- movie_editor/frontend/engine_settings.js | 4 ++-- samplers.py | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/h3_repr_steering.py b/h3_repr_steering.py index 03a812ba..836867d6 100644 --- a/h3_repr_steering.py +++ b/h3_repr_steering.py @@ -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). diff --git a/movie_editor/frontend/engine_settings.js b/movie_editor/frontend/engine_settings.js index 86611edd..8ba09277 100644 --- a/movie_editor/frontend/engine_settings.js +++ b/movie_editor/frontend/engine_settings.js @@ -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." }, diff --git a/samplers.py b/samplers.py index 1adeb989..f55a3b25 100644 --- a/samplers.py +++ b/samplers.py @@ -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.", }),