fix: re-enable output_guidance/trajectory_guidance/score_slider on H3
These were force-disabled for a gate bug, not a measured failure: they all rode _make_steer_ramp's last-half window, which measured 0-of-4 and 0-of-12 real step coverage on H3's shift-based schedules because it read sigma as schedule position, which is false there. That gate was already rewritten to recover the true position from the schedule's own base grid and is wired into all three call sites -- their correction steps are also self-normalizing (a fraction of the live tensor/embedding's own norm, not an LTXAV-tuned constant), and trajectory_guidance's buckets were built for H3's schedules from the start. Re-enabled to actually test them now that the thing that broke them is fixed. embed_guidance/taste_nearest_prompt stay off: different value function, and phrase emphasis's own manipulation check directly measured near-invisible pushes from it at H3's calibration -- an actual negative result, not a stale gate. Unvalidated on real hardware -- this removes a stale reason for disabling them, not a claim that any of the three help. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
a456a856e6
commit
2ace081737
+14
-9
@@ -10200,15 +10200,20 @@ class FunPackVideoRefinerV2(FunPackVideoRefiner):
|
||||
#
|
||||
# The conditioning-payload value function (below) is NOT trained on H3: it only
|
||||
# feeds embed_guidance/value_guidance/taste_nearest_prompt, all forced off there
|
||||
# (see self._is_h3 override in the sampler) because they were built and calibrated
|
||||
# for LTXAV and have never been shown to do anything useful on H3 -- training it
|
||||
# would be pure waste. The OUTPUT value function just below is a different story:
|
||||
# explore_first_step reads it too (to select between candidate seeds), and that
|
||||
# mechanism is not H3-excluded -- training it only for output_guidance's sake
|
||||
# (also forced off on H3) silently starved explore_first_step of every sample it
|
||||
# needed, permanently printing "not ready yet" no matter how much was rated. So
|
||||
# only the conditioning-payload VF stays H3-gated; the output VF trains on every
|
||||
# family. h3_repr_steering has its own commit below, unconditional either way.
|
||||
# (see self._is_h3 override in the sampler) because phrase emphasis's own
|
||||
# manipulation check MEASURED near-invisible pushes from it at H3's real
|
||||
# calibration -- training it would be pure waste. The OUTPUT value function just
|
||||
# below is a different story: explore_first_step reads it too (to select between
|
||||
# candidate seeds), and that mechanism is not H3-excluded -- training it only for
|
||||
# output_guidance's sake, back when output_guidance was ALSO unconditionally
|
||||
# forced off on H3, silently starved explore_first_step of every sample it needed,
|
||||
# permanently printing "not ready yet" no matter how much was rated. Fixed by
|
||||
# training the output VF on every family regardless of which of its consumers are
|
||||
# gated. (2026-09-22: output_guidance/trajectory_guidance/score_slider are no
|
||||
# longer forced off on H3 either -- that was a stale gate bug, not a measured
|
||||
# failure like the conditioning-payload VF above -- but this training call was
|
||||
# already unconditional before that change and needs no update.) h3_repr_steering
|
||||
# has its own commit below, unconditional either way.
|
||||
if (has_previous_run and refinement_key and not learning_profile.get("skip_learning")
|
||||
and self._v2_reward_admissible(learning_profile)):
|
||||
if not _is_h3:
|
||||
|
||||
+23
-13
@@ -8786,19 +8786,29 @@ class FunPackLTXAVSceneChainSampler:
|
||||
self._is_h3 = self._set_stream_axes(model)
|
||||
if self._is_h3:
|
||||
# H3's rating-driven mechanisms are h3_phrase_emphasis (Studio), h3_repr_steering,
|
||||
# and (2026-09-03, re-enabled) dynashift -- see project_reward_model_rework.md.
|
||||
# Everything else here was built and calibrated for LTXAV and has never been shown
|
||||
# to do anything useful on H3 (output_guidance/trajectory_guidance/score_slider
|
||||
# ride the same last-half gate that was calibrated there, and embed_guidance/
|
||||
# taste_nearest_prompt read the same relative value function that phrase
|
||||
# emphasis's own manipulation check showed produces near-invisible pushes at H3's
|
||||
# real calibration). Forced off HERE, not just hidden in Engine Settings, so a
|
||||
# project saved before this still behaves correctly instead of silently doing
|
||||
# several things nobody asked for. DynaShift is the one exception, reopened
|
||||
# specifically to test its own (unmodified) mechanism plus a new positive-pull
|
||||
# channel on H3 -- unvalidated there like h3_repr_steering, not a claim it works.
|
||||
output_guidance = trajectory_guidance = False
|
||||
embed_guidance = score_slider = taste_nearest_prompt = False
|
||||
# dynashift (re-enabled 2026-09-03), and (re-enabled 2026-09-22) output_guidance/
|
||||
# trajectory_guidance/score_slider -- see project_reward_model_rework.md.
|
||||
#
|
||||
# The last three were originally disabled for a GATE bug, not a measured failure:
|
||||
# they all ride `_make_steer_ramp`'s last-half window, which read sigma as
|
||||
# "position in schedule" and measured 0-of-4 / 0-of-12 real coverage on H3's
|
||||
# shift-based schedules. That gate was rewritten to recover the true position from
|
||||
# the schedule's own base grid (see `_make_steer_ramp`'s docstring) and IS wired
|
||||
# into all three call sites via `ramp_fn=_steer_ramp`. Their correction steps are
|
||||
# also self-normalizing -- a fraction of the live tensor/embedding's own norm
|
||||
# (`_build_output_guidance_wrapper`'s "NORM-CALIBRATED step", score_slider's
|
||||
# `0.15 * cond.norm()`), not a constant tuned for LTXAV's specific scale -- and
|
||||
# trajectory_guidance's own buckets (trajectory_probe.py) were built FOR H3's
|
||||
# schedules from the start, reading real per-run sigma positions rather than an
|
||||
# external formula. Re-enabled to actually test them now that the thing that broke
|
||||
# them is fixed; still unvalidated on real hardware, not a claim they help.
|
||||
#
|
||||
# embed_guidance/taste_nearest_prompt stay OFF: unlike the three above, these read
|
||||
# a DIFFERENT (conditioning-space) value function that phrase emphasis's own
|
||||
# manipulation check directly MEASURED as producing near-invisible pushes at H3's
|
||||
# real calibration (conditioning.py, `_is_h3` branch) -- an actual negative result,
|
||||
# not an untested gate, so there's nothing here that fixing the ramp changes.
|
||||
embed_guidance = taste_nearest_prompt = False
|
||||
# Read once per run, consumed by _install_h3_final_layer at each scene's sample call.
|
||||
self._h3_video_detail = max(0.0, min(2.0, float(h3_video_detail)))
|
||||
# The gate every rating-driven wrapper shares. On H3 it is read off the schedule's
|
||||
|
||||
Reference in New Issue
Block a user