docs: picture-only features say the sound can still react

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
digital-garbage
2026-09-28 19:56:47 +03:00
co-authored by Claude Opus 5.5
parent 106163d039
commit 17382c8b63
5 changed files with 15 additions and 15 deletions
+2 -2
View File
@@ -6,9 +6,9 @@
- **Shot memory** (experimental, Chain Sampler ▸ Guidance): new gens can reuse the layout of
a liked gen with fresh details. Ratings learn when to reuse, which shot and how strongly.
No extra model call; sound untouched.
No extra model call.
- **Decisiveness** (experimental, Temporal Score Rescaling): above 1 commits harder, below 1
varies more. Learned from ratings or set by hand. Picture only, no extra model call.
varies more. Learned from ratings or set by hand. No extra model call.
- **Late-branch guidance** (experimental, H3): each step also makes a weaker picture (one
late block skipped) and steers away from it. ~15% cost at block 43. Learned or manual.
- **STAS** (experimental, H3): strengthens the model's own frame-edge signals over the first
+1 -1
View File
@@ -4,7 +4,7 @@ STG-style skip guidance (the weak copy skips one block), made cheap enough for C
both copies share every block before the branch, so the weak one only re-runs the tail.
Branching at 43 of H3's 50 blocks costs ~7 blocks per step (~15%), not a second forward.
guided = normal + w * (normal - weak) picture only; sound is the normal pass
guided = normal + w * (normal - weak) picture only; the sound can still react
The strength w is learned from ratings (rated_dial.py) or set by hand.
"""
+5 -5
View File
@@ -254,7 +254,7 @@
{ name: "decode_noise_scale", label: "Decode noise scale", kind: "float", default: 0.0, min: 0, max: 1, step: 0.01,
hint: "Adds fine detail and grain back while decoding. 0 is a clean decode, ~0.025 is a gentle restore. Free, and affects the video only — not the latent." },
{ name: "h3_video_detail", label: "Video detail (H3)", kind: "float", default: 1.0, min: 0, max: 2, step: 0.05,
hint: "Crisper above 1, softer below. Changes the picture only, never the sound. Lightly tested: 1.25 looked sharper on one run." },
hint: "Crisper above 1, softer below. Changes the picture; the sound isn't edited but can react. Lightly tested: 1.25 looked sharper on one run." },
{ name: "decode_timestep", label: "Decode timestep", kind: "float", default: 0.05, min: 0, max: 1, step: 0.01,
hint: "How much freedom the decoder gets while adding that detail. Higher looks more detailed but drifts further from what was actually generated. Only used when Decode noise scale is above 0." },
{ name: "decode_tile_size", label: "Decode tile size", kind: "int", default: 0, min: 0, max: 4096, step: 64,
@@ -313,24 +313,24 @@
hint: "How closely a frame must resemble a banked bad one before steering starts. Lower is more aggressive and more likely to push away from content that was actually fine." },
{ name: "shot_memory", label: "Shot memory (experimental)", kind: "combo", choices: ["off", "learned", "manual"], default: "off",
hint: "New gens may reuse the layout of a shot you liked, with fresh details. Ratings learn when to reuse, which shot, and how strongly.",
detail: "Works on the starting noise: its coarse part decides where things sit in the frame, the fine part the details. A liked gen's coarse noise is kept; the next gen either blends it in or starts fresh, and the ratings of both kinds decide which it does more often. Needs a refinement key. No extra model call; sound untouched. A pass whose latent already holds a picture (LTX anchor, second pass) is left alone, and the run log says so. One rating teaches from the run's first scene. Learned = strength learned too; manual = strength fixed below." },
detail: "Works on the starting noise: its coarse part decides where things sit in the frame, the fine part the details. A liked gen's coarse noise is kept; the next gen either blends it in or starts fresh, and the ratings of both kinds decide which it does more often. Needs a refinement key. No extra model call; the sound's noise isn't edited, but the sound can still react. A pass whose latent already holds a picture (LTX anchor, second pass) is left alone, and the run log says so. One rating teaches from the run's first scene. Learned = strength learned too; manual = strength fixed below." },
{ name: "shot_memory_amount", label: "Shot memory strength", kind: "float", default: 0.7, min: 0.0, max: 0.95, step: 0.05, dependsOn: "shot_memory", dependsValue: "manual",
hint: "How much of the liked shot's layout to keep. 0.95 is nearly the same layout." },
{ name: "tsr", label: "Decisiveness (experimental)", kind: "combo", choices: ["off", "learned", "manual"], default: "off",
hint: "Above 1 the model commits harder and varies less; below 1 it varies more. Learned: each gen tries a nearby value and ratings move it.",
detail: "Temporal Score Rescaling (arXiv 2510.01184): scales the noise part of each step's picture prediction. It fades out near pure noise, so the first steps are left alone. Picture only, no extra model call. Learned needs a refinement key." },
detail: "Temporal Score Rescaling (arXiv 2510.01184): scales the noise part of each step's picture prediction. It fades out near pure noise, so the first steps are left alone. Edits the picture only; H3 mixes picture and sound inside the model, so the sound can react. No extra model call. Learned needs a refinement key." },
{ name: "tsr_k", label: "Decisiveness", kind: "float", default: 1.0, min: 0.5, max: 2.0, step: 0.01, dependsOn: "tsr", dependsValue: "manual",
hint: "1.0 = off." },
{ name: "late_guidance", label: "Late-branch guidance (H3, experimental)", kind: "combo", choices: ["off", "learned", "manual"], default: "off",
hint: "Each step also makes a weaker picture and steers away from it. Learned: ratings set the strength.",
detail: "Skip guidance (STG) made cheap for CFG 1: the weak copy skips one late block and shares every block before it, so at block 43 it costs about 15% per step instead of a second full pass. Picture only; sound keeps the normal pass. Untested on H3. Learned needs a refinement key." },
detail: "Skip guidance (STG) made cheap for CFG 1: the weak copy skips one late block and shares every block before it, so at block 43 it costs about 15% per step instead of a second full pass. Edits the picture only; H3 mixes picture and sound inside the model, so the sound can react. Untested on H3. Learned needs a refinement key." },
{ name: "late_guidance_strength", label: "Late-branch strength", kind: "float", default: 0.5, min: 0.0, max: 2.0, step: 0.05, dependsOn: "late_guidance", dependsValue: "manual",
hint: "How hard to push away from the weak copy. 0 = off." },
{ name: "late_guidance_block", label: "Late-branch block", kind: "int", default: 43, min: 1, max: 49, dependsOn: "late_guidance", dependsVals: ["learned", "manual"],
hint: "The block the weak copy skips. Higher = cheaper and subtler." },
{ name: "stas", label: "STAS: steadier motion (H3, experimental)", kind: "combo", choices: ["off", "learned", "manual"], default: "off",
hint: "Strengthens the model's own frame-edge signals over the first steps. Aimed at steadier motion. Learned: ratings set the strength.",
detail: "Massive-activation steering (arXiv 2603.17825). A few channels carry huge values on the first frame and each frame's edges; this sets them to alpha times their peak at one block, over the first 40% of steps. No extra model call. Tested on Wan and CogVideoX, untested on H3; may calm subtle motion. The run log says which channels it found, or that it found none at that block. Learned needs a refinement key." },
detail: "Massive-activation steering (arXiv 2603.17825). A few channels carry huge values on the first frame and each frame's edges; this sets them to alpha times their peak at one block, over the first 40% of steps. It edits picture rows inside the model, so the sound can react in the same step. No extra model call. Tested on Wan and CogVideoX, untested on H3; may calm subtle motion. The run log says which channels it found, or that it found none at that block. Learned needs a refinement key." },
{ name: "stas_alpha", label: "STAS strength", kind: "float", default: 2.0, min: 0.5, max: 4.0, step: 0.1, dependsOn: "stas", dependsValue: "manual",
hint: "Paper range 1.2-2.5." },
{ name: "stas_block", label: "STAS block", kind: "int", default: 15, min: 0, max: 49, dependsOn: "stas", dependsVals: ["learned", "manual"],
+6 -6
View File
@@ -3198,7 +3198,7 @@ class FunPackLTXAVSceneChainSampler:
}),
"shot_memory": (list(_shot_memory.MODES), {
"default": "off",
"tooltip": "EXPERIMENTAL. The starting noise remembers shots you liked: a new run may reuse a liked shot's layout with fresh details, or start fresh. Whether to reuse, which shot and how strongly are all learned from ratings. learned = all three learned; manual = strength fixed below. Needs refinement_key_input. No extra model call; sound untouched.",
"tooltip": "EXPERIMENTAL. The starting noise remembers shots you liked: a new run may reuse a liked shot's layout with fresh details, or start fresh. Whether to reuse, which shot and how strongly are all learned from ratings. learned = all three learned; manual = strength fixed below. Needs refinement_key_input. No extra model call; sound noise not edited (the sound can still react).",
}),
"shot_memory_amount": ("FLOAT", {
"default": 0.7, "min": 0.0, "max": 0.95, "step": 0.05,
@@ -3206,7 +3206,7 @@ class FunPackLTXAVSceneChainSampler:
}),
"tsr": (list(_tsr.MODES), {
"default": "off",
"tooltip": "EXPERIMENTAL decisiveness (Temporal Score Rescaling, arXiv 2510.01184). Above 1 the model commits harder and varies less; below 1 it varies more. learned = each run tries a nearby value and ratings move it; manual = fixed below. Picture only, no extra model call.",
"tooltip": "EXPERIMENTAL decisiveness (Temporal Score Rescaling, arXiv 2510.01184). Above 1 the model commits harder and varies less; below 1 it varies more. learned = each run tries a nearby value and ratings move it; manual = fixed below. Edits the picture only (the sound can react); no extra model call.",
}),
"tsr_k": ("FLOAT", {
"default": 1.0, "min": 0.5, "max": 2.0, "step": 0.01,
@@ -3214,7 +3214,7 @@ class FunPackLTXAVSceneChainSampler:
}),
"late_guidance": (list(_late.MODES), {
"default": "off",
"tooltip": "EXPERIMENTAL, H3 only. Each step also makes a weaker picture (one late block skipped) and pushes away from it. Both share the blocks before the branch, so it costs ~15% at block 43. learned = strength learned from ratings; manual = fixed below. Picture only.",
"tooltip": "EXPERIMENTAL, H3 only. Each step also makes a weaker picture (one late block skipped) and pushes away from it. Both share the blocks before the branch, so it costs ~15% at block 43. learned = strength learned from ratings; manual = fixed below. Edits the picture only; the sound can react.",
}),
"late_guidance_strength": ("FLOAT", {
"default": 0.5, "min": 0.0, "max": 2.0, "step": 0.05,
@@ -8570,7 +8570,7 @@ class FunPackLTXAVSceneChainSampler:
f"{_stas.MA_RATIO:.0f}x the mean, nothing steered -- try another block"), 0
print(f"[FunPackSceneChain] STAS: alpha {_alpha:.2f} at block {block}, first "
f"{_stas.EARLY_FRACTION:.0%} of steps, frame 0 + frame edges, picture only.")
f"{_stas.EARLY_FRACTION:.0%} of steps, frame 0 + frame edges, picture rows (the sound can react).")
return patched, _report
except Exception as _e: # noqa: BLE001
_log.failed("FunPackSceneChain", "STAS", _e, "the run goes on without it")
@@ -8582,7 +8582,7 @@ class FunPackLTXAVSceneChainSampler:
Every step runs the model twice. The normal pass saves the stream as it enters block
`branch`. The weak pass skips blocks 0..branch-1 (their result is that saved stream),
skips `branch` itself, and runs the tail as usual. The picture is then pushed away
from the weak prediction; sound keeps the normal one.
from the weak prediction; sound keeps the normal one for that step (later steps react).
The weak pass is flagged in transformer_options (WEAK_BRANCH_FLAG) so capture hooks
(REINS, query steering, the influence probe) do not learn from it. Returns the model
@@ -8679,7 +8679,7 @@ class FunPackLTXAVSceneChainSampler:
_late_wrapper, old_wrapper)
print(f"[FunPackSceneChain] late-branch guidance: strength {_w:.2f}, weak copy "
f"skips block {branch} and shares 0-{branch - 1} "
f"(~{100.0 * (len(dit) - branch) / len(dit):.0f}% extra per step), picture only.")
f"(~{100.0 * (len(dit) - branch) / len(dit):.0f}% extra per step), edits the picture (the sound can react).")
return patched, stats
except Exception as _e: # noqa: BLE001
_log.failed("FunPackSceneChain", "late-branch guidance", _e,
+1 -1
View File
@@ -11,7 +11,7 @@ so it cannot disturb the first steps; `s` sets how early it takes hold.
One number per run, learned from ratings: every run tries a slightly different k
around the key's current value, and each rating pulls the value toward the k that
was liked or away from the one that was disliked. Picture only, sound untouched;
was liked or away from the one that was disliked. Edits the picture only (the sound can react);
no extra model call.
"""