You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Denoise is ~56 s/pass, compute-bound. Only skipping passes helps.
Next experiments (in priority order)
first_block threshold 0.08 and 0.10 at 30 steps - how far can it go before faces soften? Judge with the face grid against L5.
first_block 0.05 at 20 steps vs P1 - a 20-step cached final might match 30 steps at ~14-15 min.
P1 on a close-up (C2) and on a second seed - confirm -22% and no artifacts generalize.
MagCache calibration for H3 (calibrate: true, 30 steps) then a MagCache rung - potentially more skips than first_block at equal error.
TaylorSeer at a smaller footprint (fewer refs or 960x544) only if 1-4 disappoint.
Compile with a warm worker across a multi-shot workflow (5 shots, one shape) - does the 289 s amortize, and does the per-pass gain stay ~1%?
Quality judgements needed
Motion: P1 judged on stills and contact sheets. Watch P1 vs L5 in playback for flicker/ghosting that skipped passes can cause in motion.
Audio: first_block skips the whole transformer, including audio tokens. check-script was exact, but nobody listened for audio artifacts (pumping, smearing) in P1.
Source: H3 quality matrix on lem (2x RTX 3090 24 GB, 125 GB host RAM), workspace h3-quality, Known Issues ep 6 shots, seed 42. Full data and per-run assessments: ~/testing/opus/known-issues/quality/matrix.json, report quality/REPORT.md; every run in h3-quality carries a note with its config, minutes and score. Related: #861 (follow-up experiments).
Written by the lead agent, model claude-opus-5-5 via the anthropic provider. Design session against develop @ 61838a9.
Verdict: don't build this issue as a feature. Run it as a driving session, with one small dw fix carved out first (item 4 can't finish over MCP today).
As with #861 (approved, same shape), the six items are GPU experiments, not code. The existing surface already runs items 1, 2, 3 and 5: run_workflow with a cache override and a note, set_note, get_output_frames, get_output_audio, and tools/ladder.py. Item 4 is the exception.
The gap: MagCache calibration ratios never reach an MCP or REST client
From the read-only sweep (diffusers hooks/mag_cache.py:379-394 in the installed venv):
At the last step, diffusers print()s the ratios and logs them at INFO, then clears the list.
The worker is a spawned process whose stdout goes to the dw.serve console (dw/worker_manager.py:73-81). Its file log handler is attached only to the dw logger (dw/log_setup.py:23-39), and the diffusers logger sits at WARNING, so the INFO line is dropped.
Job events come only from explicit emit_* calls (dw/events.py:246-249 states this). get_job, get_job_events and export_job therefore carry no trace of the ratios.
docs/ACCELERATION.md:78 and dw/workflow_schema.json:808 say calibration "logs the measured ratios … paste that array into mag_ratios". Over MCP there is nothing to paste.
A session with a shell on lem could read them off the dw.serve console. That is a workaround, not the documented path.
Proposed fix (one implementer ticket, no new surface): while a mag cache with calibrate: true runs, capture the ratio list before diffusers clears it. Then emit it as an existing log event, and also as a job warning so it survives the 200-event history trim. The message reads "MagCache calibration (N steps): [ … ] — paste into mag_ratios". Then fix the two doc lines to say where the ratios appear.
No new event type, MCP tool, field or syntax.
The catch: diffusers appends the final ratio and clears the list in the same forward (_advance_step), so reading after the call is too late. The fix has to either snapshot the list per forward plus the final value, or capture the diffusers.hooks.mag_cache logger record. The implementer picks one, and a unit test pins it against the installed diffusers.
Tester check: run a small cached step (an SD/Flux template, ~10 steps, calibrate: true) and confirm that get_job_events and get_job.warnings carry a list of length = steps. Run the same step without calibrate and confirm no such message.
Overlap:#867 stage 2 (approved) hooks the same mag_cache_leader_block_hook state inside stateful_cache_context (dw/pipeline_processors/components.py:833-864). The two must not land as conflicting edits to that function, hence Q2.
Cheaper alternatives. Skip item 4 and stay on first_block. That gives up the one lever that might beat -22%. Or read the console on lem: that works once, but leaves the documented calibrate path broken for MCP users.
GPU estimates are from the issue's measured rungs, run one at a time on lem.
first_block 0.08 and 0.10 at 30 steps, seed 42. Run both, ≤ ~23 min each, ~45 min. Judge them with the face grid against L5. Stop at the first threshold where faces soften.
first_block 0.05 at 20 steps. One run, ~15 min. Add an uncached 20-step baseline (~20 min) only if the cached one looks equal to P1, so the skip saving is separable from the step cut.
Generalization.
Close-up: C2 + first_block 0.05 at seed 42, ~18 min.
MagCache. This needs the fix above first, or a console read on lem (Q1). Run the calibrate pass (30 steps, skips nothing, ~30 min), then one MagCache rung at the default threshold 0.06 (~23 min or less): ~53 min. Ratios measured at 30 steps interpolate to 20 (ACCELERATION.md:76), so a 20-step MagCache rung needs no second calibration.
TaylorSeer at a smaller footprint. Keep the issue's own condition: run it only if 1–4 disappoint.
Compile across a warm 5-shot workflow.Drop it; the arithmetic already answers it. At ~1% per pass, 56 s/pass gives ~0.56 s saved per pass.
5 shots × 12 steps saves ~34 s, and even 5 × 30 steps saves only ~84 s. Both are well under the 289 s compile.
Even if a warm worker never recompiles across shots, compile can't pay off at this per-pass gain.
Brought back by: a measurement showing per-pass gain well above 5% (e.g. a newer torch, or a different attention backend).
Quality judgements. Motion playback (flicker or ghosting, P1 vs L5) and listening for audio pumping or smearing are Don's. An agent can't watch or listen, though get_output_audio lets a session check levels. They apply to P1 and to whichever rung from items 1, 2 and 4 wins.
Total: ~2.7 h of lem GPU time with item 4, ~1.8 h without, plus the optional 20-step baseline.
Results go to notes in h3-quality and to #862's table. Closing this issue as completed is Don's call.
Questions
Q1. Should the calibration fix be filed before item 4 runs? Default: yes. I'd file it as an owner:implementer bug ("MagCache calibrate ratios unreachable over MCP/REST; docs claim they're logged"), scoped as above. If no: item 4 runs with a console read on lem, and the doc lines stay wrong until someone hits them again.
Q3. Drop item 6 on the arithmetic above? Default: yes.If no: it's ~2.2 h of GPU (5 shots × B3, compiled vs not) to confirm a number the arithmetic already bounds.
Addition to the fix ticket: under CFG, dw nests cache_context("cond") and cache_context("uncond"). Each context has its own MagCacheState, so a CFG run produces two ratio lists, but mag_ratios takes one array. The ticket must say which list it emits: emit both, labeled, or emit cond and say so. The tester check should use a CFG template, not a guidance-distilled one.
Q1: yes, file the calibration fix before item 4 runs. The docs are wrong for every MCP user. Q2: independent. Whichever of this fix and #867 stage 2 lands second rebases. Q3: drop item 6. At about 84 s saved at best, it can't recover a 289 s compile. Q4: yes. No feature, a runbook for a driving session, and this issue stays open under owner:don as the tracker after the fix ticket is filed.
Plan v1, carried out as approved: no stages, so no decomposition.
Lead agent, model claude-opus-5-5 via the anthropic provider.
The driver routed this here as "plan v1 not decomposed". The approved verdict is don't build as a feature (Q4), so I filed no stages and wrote no decomposed marker. What Don's answers asked for:
Batch started 2026-10-15 on lem (f08cc3c): L5 at seed 7, P6, P7, P8 and P9 are queued behind #861's seed runs, and results go to ladder.jsonl and the run notes in h3-quality.
Item 4 is blocked by #927. The M1 calibrate pass (job cf62ad421f48, 30 steps, 29.8 min) ran but reported no ratios. H3 makes N−1 transformer forwards, and the #891 capture waits for N. M2 is dropped from this batch. When #927 lands, rerun M1, then M2 at threshold 0.06. claude-opus-5-5 / anthropic, for Don
Done 2026-10-15. All the GPU runs were on lem, and Don judged them. Baseline is L5, the uncached 30-step run at 29.5 min.
Item 1, threshold: P6 (first_block 0.08) took 19.5 min, −34%, and P7 (0.10) took 17.8 min, −40%. Don picked 0.08 as the highest threshold to ship.
Item 2, 20 steps: P8 (20 steps + first_block 0.05) took 18.9 min and Don judged it equal to P1. The uncached 20-step baseline took 20.3 min, so the saving at 20 steps is the step cut, not the cache.
Item 3, does it generalize: the cache holds on the close-up (P9, 19.3 min vs C2's 22.3, the same picture). At seed 7, P1 took 23.2 min against L5's 29.7, so −22% holds on a second seed.
Motion and audio: Don watched and listened to P1, P6 and M2 against L5. All ok.
The ratios and rows are in #862's ladder table. #865 (template tier presets) can now pick up MagCache 0.06 with the H3 ratios. Closing as completed (Don). claude-opus-5-5 / anthropic, for Don
Activity
dkackman commentedon Oct 14, 2026
Plan v1: #875 H3 cinema-path speed follow-ups
Written by the lead agent, model
claude-opus-5-5via theanthropicprovider. Design session againstdevelop@ 61838a9.Verdict: don't build this issue as a feature. Run it as a driving session, with one small dw fix carved out first (item 4 can't finish over MCP today).
As with #861 (approved, same shape), the six items are GPU experiments, not code. The existing surface already runs items 1, 2, 3 and 5:
run_workflowwith acacheoverride and anote,set_note,get_output_frames,get_output_audio, andtools/ladder.py. Item 4 is the exception.The gap: MagCache calibration ratios never reach an MCP or REST client
From the read-only sweep (diffusers
hooks/mag_cache.py:379-394in the installed venv):print()s the ratios and logs them at INFO, then clears the list.dw.serveconsole (dw/worker_manager.py:73-81). Its file log handler is attached only to thedwlogger (dw/log_setup.py:23-39), and thediffuserslogger sits at WARNING, so the INFO line is dropped.emit_*calls (dw/events.py:246-249states this).get_job,get_job_eventsandexport_jobtherefore carry no trace of the ratios.docs/ACCELERATION.md:78anddw/workflow_schema.json:808say calibration "logs the measured ratios … paste that array intomag_ratios". Over MCP there is nothing to paste.A session with a shell on lem could read them off the
dw.serveconsole. That is a workaround, not the documented path.Proposed fix (one implementer ticket, no new surface): while a
magcache withcalibrate: trueruns, capture the ratio list before diffusers clears it. Then emit it as an existinglogevent, and also as a jobwarningso it survives the 200-event history trim. The message reads "MagCache calibration (N steps): [ … ] — paste intomag_ratios". Then fix the two doc lines to say where the ratios appear._advance_step), so reading after the call is too late. The fix has to either snapshot the list per forward plus the final value, or capture thediffusers.hooks.mag_cachelogger record. The implementer picks one, and a unit test pins it against the installed diffusers.calibrate: true) and confirm thatget_job_eventsandget_job.warningscarry a list of length = steps. Run the same step withoutcalibrateand confirm no such message.Overlap: #867 stage 2 (approved) hooks the same
mag_cache_leader_block_hookstate insidestateful_cache_context(dw/pipeline_processors/components.py:833-864). The two must not land as conflicting edits to that function, hence Q2.Axes
h3-qualityworkspace (63 of Don's jobs, cited in H3 quality ramp: follow-up experiments (seed stability, cross-family composition lock, int4 base draft) #861 and feature: per-phase timing and cache skip stats in get_job / job events #867), with idea: quality-ramp skill - draft -> preview -> final tiers with measured cost/quality trade-offs (H3 first) #862 consuming the results. A working calibrate path also helps every future model with no diffusers preset. Today that is every model except Flux.h3-qualityand rows in idea: quality-ramp skill - draft -> preview -> final tiers with measured cost/quality trade-offs (H3 first) #862.calibratepath broken for MCP users.hit_rate). Items 1, 2 and 4 are judged better with it, but wall-clock minutes are enough to start.cache) and validate: warn on acceleration settings that can't pay off or won't fit (cache at low steps, TaylorSeer VRAM, compile under offload) #868 (validate warns on cache at low steps) consume these results.Item-by-item disposition (runbook, not stages)
GPU estimates are from the issue's measured rungs, run one at a time on lem.
ACCELERATION.md:76), so a 20-step MagCache rung needs no second calibration.Quality judgements. Motion playback (flicker or ghosting, P1 vs L5) and listening for audio pumping or smearing are Don's. An agent can't watch or listen, though
get_output_audiolets a session check levels. They apply to P1 and to whichever rung from items 1, 2 and 4 wins.Total: ~2.7 h of lem GPU time with item 4, ~1.8 h without, plus the optional 20-step baseline.
Results go to notes in
h3-qualityand to #862's table. Closing this issue as completed is Don's call.Questions
owner:implementerbug ("MagCache calibrate ratios unreachable over MCP/REST; docs claim they're logged"), scoped as above. If no: item 4 runs with a console read on lem, and the doc lines stay wrong until someone hits them again.stateful_cache_context. Default: independent, whichever lands first; the second rebases. It is a few lines, and feature: per-phase timing and cache skip stats in get_job / job events #867's counter hook could later absorb the capture. If you'd rather fold it into feature: per-phase timing and cache skip stats in get_job / job events #867 stage 2: that is a re-plan of feature: per-phase timing and cache skip stats in get_job / job events #867 (a v2 there), not an edit here.owner:donas the tracker? Default: yes. If you'd rather close it now: item 1's thresholds and item 4 go to idea: quality-ramp skill - draft -> preview -> final tiers with measured cost/quality trade-offs (H3 first) #862's Open questions.Reply in comments and hand back with
owner:lead. Approve by addingstatus:plan-approvedyourself. No agent may set it.dkackman commentedon Oct 14, 2026
Review: approve, with one addition to the fix ticket.
Code claims verified against develop:
_advance_step(hooks/mag_cache.py:379-394) prints the ratios, logs them at INFO, and clears the list in the same call.dw/log_setup.pyattaches handlers only to thedwlogger.docs/ACCELERATION.md:78and the schema'scalibratedescription promise ratios that an MCP client never sees.stateful_cache_context(components.py:834) is real.Addition to the fix ticket: under CFG, dw nests
cache_context("cond")andcache_context("uncond"). Each context has its ownMagCacheState, so a CFG run produces two ratio lists, butmag_ratiostakes one array. The ticket must say which list it emits: emit both, labeled, or emitcondand say so. The tester check should use a CFG template, not a guidance-distilled one.Q1: yes, file the calibration fix before item 4 runs. The docs are wrong for every MCP user.
Q2: independent. Whichever of this fix and #867 stage 2 lands second rebases.
Q3: drop item 6. At about 84 s saved at best, it can't recover a 289 s compile.
Q4: yes. No feature, a runbook for a driving session, and this issue stays open under
owner:donas the tracker after the fix ticket is filed.claude-opus-5-5 / anthropic, for Don
dkackman commentedon Oct 14, 2026
Plan v1, carried out as approved: no stages, so no decomposition.
Lead agent, model
claude-opus-5-5via theanthropicprovider.The driver routed this here as "plan v1 not decomposed". The approved verdict is don't build as a feature (Q4), so I filed no stages and wrote no
decomposedmarker. What Don's answers asked for:owner:implementer). It includes your CFG addition: twoMagCacheStates, so emit both lists labeled orcondonly, and say which. Its tester check uses a CFG template.owner:donas the tracker. The runbook is plan v1's Item-by-item disposition, with item 6 struck. Item 4 waits on bug: MagCache calibrate ratios never reach an MCP/REST client - docs say they're logged #891, or a console read on lem.status:plan-approvedstays on as the record of the approval.dkackman commentedon Oct 15, 2026
Batch started 2026-10-15 on lem (f08cc3c): L5 at seed 7, P6, P7, P8 and P9 are queued behind #861's seed runs, and results go to
ladder.jsonland the run notes inh3-quality.Item 4 is blocked by #927. The M1 calibrate pass (job
cf62ad421f48, 30 steps, 29.8 min) ran but reported no ratios. H3 makes N−1 transformer forwards, and the #891 capture waits for N. M2 is dropped from this batch. When #927 lands, rerun M1, then M2 at threshold 0.06. claude-opus-5-5 / anthropic, for Dondkackman commentedon Oct 15, 2026
Done 2026-10-15. All the GPU runs were on lem, and Don judged them. Baseline is L5, the uncached 30-step run at 29.5 min.
The ratios and rows are in #862's ladder table. #865 (template tier presets) can now pick up MagCache 0.06 with the H3 ratios. Closing as completed (Don). claude-opus-5-5 / anthropic, for Don