Skip to content

fix(sa3): use the monotonic audio-to-audio schedule - #320

Merged
leszko merged 2 commits into
mainfrom
ryanontheinside/fix/sa3-monotonic-a2a-schedule
Aug 18, 2026
Merged

fix(sa3): use the monotonic audio-to-audio schedule#320
leszko merged 2 commits into
mainfrom
ryanontheinside/fix/sa3-monotonic-a2a-schedule

Conversation

@ryanontheinside

@ryanontheinside ryanontheinside commented Aug 3, 2026

Copy link
Copy Markdown
Collaborator

Summary

One-line vendor pin bump: SA3_VENDOR_SHA moves to 960da1f, the fork
branch combining the plugin fix already pinned by #319 with the
audio-to-audio schedule fix (Stability PR #94: build and warp a
normalized schedule, scale by sigma_max, then pin the first point).
Without it, any audio-to-audio run at sigma_max < 1 gets a
non-monotonic schedule whose interior points exceed the requested noise
level. SA3_SAME_L_PLUGIN_REVISION stays at c076985: verified ancestor
of the new pin, and the delta touches only schedule files, so existing
tagged engines remain valid.

Validation (2026-08-17)

  • Schedule matrix at the new pin: sigma_max {0, .1, .25, .5, .75, 1} x
    steps {1,4,8,16} x {no shift, LogSNR} plus batched seq_len: 123 cells,
    0 failures (exact endpoints, monotone, bounded, TRT and TFLite match
    the reference). The old pin fails 76 of these cells.
  • sigma_max = 1 (plain text-to-audio) is bit-identical: schedules match
    exactly and a fixed-seed end-to-end generation reproduces the same
    latent across the pin move.
  • Full unit suite green; live runtime battery re-run under this pin
    (vendor auto-moved on restart, versioned engine reselected, denoise
    sweeps clean, 0 stale ticks).

Merge handoff

Second in the stack: merge after #319, before #321. No engine rebuilds
needed (plugin revision unchanged). Upstreaming of the schedule fix
itself is tracked separately in Stability PR #94; DEMON does not wait on
it.

@ryanontheinside
ryanontheinside force-pushed the ryanontheinside/chore/sa3-current-upstream-pin branch from 3395004 to b00a1f2 Compare August 17, 2026 19:16
@ryanontheinside
ryanontheinside force-pushed the ryanontheinside/fix/sa3-monotonic-a2a-schedule branch from 8322c5c to edbd8e6 Compare August 17, 2026 19:16
Base automatically changed from ryanontheinside/chore/sa3-current-upstream-pin to main August 18, 2026 09:52
Move SA3_VENDOR_SHA to the combined fork pin (current Stability main +
the TRT integer-attribute fix + the normalized-then-scaled schedule
ordering). The schedule change is host-side Python only; the SAME-L
plugin source is unchanged between the previous pin and this one, so
SA3_SAME_L_PLUGIN_REVISION stays put and the existing versioned decoder
engine is reused.
@leszko
leszko force-pushed the ryanontheinside/fix/sa3-monotonic-a2a-schedule branch from edbd8e6 to ca16f4a Compare August 18, 2026 09:54
* Pin SA3 to current upstream and version SAME-L plugins

Move the managed SA3 source from the old FP8 development lineage to
current upstream plus the rebased TensorRT integer-attribute fix.

The current upstream SAME-L plugin bakes its AOT/JIT implementation into
the serialized engine. Include the plugin revision and implementation
choice in the engine name and metadata so stale decoders are ignored
instead of being paired with incompatible plugin code. Keep the plugin
revision stable across unrelated vendor bumps so they do not force a
1.2 GB decoder rebuild. Existing engines remain beside the new artifact
for rollback.

Also accept git worktrees as DEMON_SA3_SRC overrides.

* fix(sa3): pin the vendored SA3 to the monotonic audio-to-audio schedule

Move SA3_VENDOR_SHA to the combined fork pin (current Stability main +
the TRT integer-attribute fix + the normalized-then-scaled schedule
ordering). The schedule change is host-side Python only; the SAME-L
plugin source is unchanged between the previous pin and this one, so
SA3_SAME_L_PLUGIN_REVISION stays put and the existing versioned decoder
engine is reused.

* Map the SA3 denoise knob onto measured audio change

Keep the upstream-corrected monotonic schedule, but map the product dial
to entry sigma using the inverse of the measured change curve. This
spreads useful movement across the control instead of concentrating it
near the top.

The mapping is deliberately presented as a product choice, not another
sampler fix: its referee is validated for ordering rather than equal
perceptibility, and one global curve moves different material at
different rates. DEMON_SA3_DENOISE_MAPPING=identity bypasses it while
retaining the upstream schedule correction.
@leszko
leszko marked this pull request as ready for review August 18, 2026 10:01
@leszko
leszko merged commit 7c3a31b into main Aug 18, 2026
@leszko
leszko deleted the ryanontheinside/fix/sa3-monotonic-a2a-schedule branch August 18, 2026 10:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants