Commit Graph
47 Commits
Author SHA1 Message Date
EthanfelandClaude Opus 4.8 487385cf60 docs: sync README + wiki to v1.7 (new nodes, params, architectures)
Bring the documentation up to date with the 1.7.0 / algo 1.10.2 state:
- README: document Conflict Editor, Merge Formula, Metadata Reader, Extract
  from Model, Combination Generator; fill param gaps (clip_strength_multiplier,
  dare_dampening, scoring_svd/device/formula, memory_mode, record_dataset,
  output_strength=-1 auto); clarify HunyuanVideo is dit-preset-only (not auto-detected).
- Wiki: add 7 missing nodes to Nodes.md; fix stale option lists (scoring_svd 4
  modes, memory_mode auto_ignore_strength, community_cache upload_only); add
  acestep_dit + Ideogram 4 to architecture tables; fix Home arch count (8->9);
  replace obsolete quality-level/profile names (enhanced+/maximum -> refine+/full,
  classic/v1.2 -> basic/full strategy sets).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15 15:19:02 +02:00
EthanfelandClaude Fable 5 8b7a04e8ad docs(research): batch-2 adversarial verification of math-validation claims
Re-verified the 10 load-bearing claims with 2 adversarial votes each
(source-fidelity + independent refutation, 20 agents). 7 upheld, 3
disputed — all shipped code changes survive; disputes were attribution
errors, now corrected:

- Mean-source-norm calibration is from the Pico paper (arXiv 2604.16826
  "Crowded in B-Space"), not KnOTS — corrected throughout
- k/D chance baseline + canonical-correlation identity are
  first-principles facts (proven in-vote: Bjorck-Golub principal
  angles; Haar-uniform expectation), not statements of the Pico paper

Appends an addendum with the full tally and the load-bearing caveats:
J1/J0 bias vanishes at rho=0 (MC-verified at 4M samples); the 0.239
multi-SLERP collapse figure was MergeKit's tangent-space multislerp
(Karcher change independently justified via Buss & Fillmore 2001);
stable rank <-> quality is non-monotone (CART bell curve, AdaRank) —
keep the one-sided cap, never maximize rank; DELLA epsilon-convention
difference between paper and official repo.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 05:58:38 +02:00
EthanfelandClaude Fable 5 0f8a97c368 fix(autotuner): math validation HIGH fixes — excess-conflict baseline, Karcher mean
From the deep-research math validation (docs/research/2026-06-11-math-validation.md):

1. Excess conflict compared a magnitude-WEIGHTED mismatch ratio
   (min(|a|,|b|) weights) against the UNWEIGHTED arccos(rho)/pi
   expectation (Sheppard / degree-0 arc-cosine kernel). The two are not
   the same statistic (Cho & Saul: J1 != J0 angular dependence), and for
   correlated LoRAs mismatches concentrate on small-magnitude positions,
   so the weighted ratio sat systematically below the baseline — real
   conflict was under-detected (excess clamped to 0), biasing decisions
   away from TIES. Now: unweighted mismatch fraction AND correlation
   computed on the same noise-floored position set, baseline
   arccos(rho_strong)/pi. Weighted ratio kept as a separate metric.

2. slerp mode for N>=3 diffs replaced iterative pairwise SLERP with a
   weighted Karcher (Frechet) mean on the unit hypersphere (chordal-mean
   init, log/exp-map iteration, existing norm correction). Iterative
   multi-SLERP is order-dependent and collapses empirically (scores
   below plain linear averaging at m=5; Karcher 0.610 vs multi-SLERP
   0.239). N=2 keeps standard SLERP (the Karcher mean reduces to it).

Bump AUTOTUNER_ALGO_VERSION 1.7.0 -> 1.8.0 and ANALYSIS_CACHE_VERSION
1.7.1 -> 1.8.0 (pair metrics and merge behavior changed). Adds the full
cited validation report and 8 tests: identical/negated/independent
vectors give zero excess, count-concentrated conflict now detected
(old formula provably clamped it to 0), Karcher order-independence,
symmetric-direction, weight-pull, and N=2 SLERP regression (244 pass).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-11 02:27:24 +02:00
EthanfelandClaude Fable 5 8ad35ac475 feat(autotuner): batch 4 — record_dataset wiring, merge-on-write, identity guard
- Wire the documented record_dataset option: new widget on the AutoTuner
  node calls _save_tuner_dataset_entry after each full sweep (the
  function existed, was tested, and was documented in the wiki — but
  nothing ever called it). Wiki wording aligned: entries are recorded
  on full sweeps only, cache/memory replays don't append.

- Merge-on-write for shared cache files: lora/pair/analysis cache saves
  and the content-hash cache re-read the on-disk state and overlay the
  caller's keys (caller wins; None never clobbers a real lora entry;
  analysis entries are remapped to the caller's stack order first).
  Entries are content-derived so same-key collisions hold equivalent
  data — this removes cross-process lost updates without resorting to
  cross-platform file locking. The GC's prune save passes merge=False
  so dead keys aren't resurrected.

- Model/clip identity tracking via weakrefs (_track_model_identity):
  bare id() comparison could alias a new object reusing a freed
  object's address and serve a stale cached merge; the guard now also
  detects clip swaps and id reuse. Shared by optimize_merge and
  auto_tune.

- _extract_block_name is lru_cached (pure function, called per prefix
  per smoothing pass with two regex evaluations) and drops its local
  re import.

Adds 3 test classes (235 total pass).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-10 15:35:33 +02:00
EthanfelandClaude Opus 4.7 e5b7d4dfe9 feat(combinator): add rerun_source=original_progress filter
When rerun_mode=True and rerun_source='original_progress', restrict the
shuffled combo list to hashes present in the original combo_progress.json
before iteration. Lets the backfill rerun replay exactly the combos that
were processed originally, ignoring any LoRAs added since and any combos
that were never run.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-21 16:41:49 +02:00
EthanfelandClaude Opus 4.7 9e85ba178a feat(autotuner): add community_cache='upload_only' mode
Runs the full local sweep and uploads the resulting config to the HF
community cache, but never replays HF cache hits. Intended for backfill
reruns that need to re-publish enriched configs without being
short-circuited by the existing cached (unenriched) entry.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-21 16:03:42 +02:00
EthanfelandClaude Opus 4.7 a131ff9280 docs: add HF-enrichment skip task to combinator rerun plan
Task 2: during rerun mode, check HF for a matching enriched config
(any candidate carries per_prefix_decisions); if found, mark the combo
complete and advance. Adds per-instance caches for the HF file list
and per-combo results so the extra traffic is bounded.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-21 15:25:31 +02:00
EthanfelandClaude Opus 4.7 744efb2477 docs: add combinator rerun_mode toggle plan
Small side plan: temporary BOOLEAN input on LoRACombinationGenerator that
routes progress tracking to combo_progress_rerun.json, enabling a full
re-run of the 400-combo collection to backfill per-prefix decisions
once Phase A of the estimator plan lands. To be reverted after use.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-21 13:58:50 +02:00
EthanfelandClaude Opus 4.7 4d1892a2f0 docs: add estimator pre-node implementation plan
Task-by-task TDD plan for the case-based retrieval estimator. Covers
per-prefix decision capture (Phase A), feature extractor + index builder,
LoRAEstimator runtime, and the ComfyUI node surface.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-21 13:51:15 +02:00
EthanfelandClaude Opus 4.7 251e298d27 docs: estimator pre-node design
k-NN retrieval over HF community cache, emits tuner_data for the
existing optimizer replay path. Per-prefix instrumentation lands
first, dataset gets re-collected, estimator ships with both global
and per-prefix retrieval.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-21 13:43:33 +02:00
EthanfelandClaude Opus 4.6 dd48cc33c8 docs: add LoRA Combination Generator implementation plan
4 tasks: core logic tests, static methods, ComfyUI node interface,
stop mechanism verification. TDD approach throughout.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-19 12:18:08 +02:00
EthanfelandClaude Opus 4.6 014e15aa34 docs: add LoRA Combination Generator design
Node that exhaustively generates all 2/3-way LoRA combinations for
AutoTuner dataset collection. Uses seed-based deterministic shuffle
with lightweight completion tracking.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-19 12:15:59 +02:00
EthanfelandClaude Opus 4.6 abe3433e16 docs: replace exclusive cross-attention claim with v1.5 paper quote
The doc previously stated voice identity enters "exclusively" through
cross-attention, which was an inference not supported by any source.
Replace with the actual quote from the ACE-Step 1.5 paper and clarify
that voice info propagates through self-attention/MLP after injection.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-14 17:19:38 +02:00
EthanfelandClaude Opus 4.6 10bf36ada4 docs: fix node name references in ACE-Step recommendations
Use actual node names (LoRA Stack, LoRA Optimizer, LoRA AutoTuner)
instead of nonexistent "ZImage LoRA Merger node". Broaden recommendations
to cover all ACE-Step LoRA merges, not just vocal + music.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-14 13:14:57 +02:00
EthanfelandClaude Opus 4.6 fe9becfe73 feat: add ACE-Step 1.5 merge optimization for voice preservation
Add dedicated architecture support for ACE-Step music generation model LoRAs
with optimizations informed by the v1.5 hybrid attention architecture — cross-
attention is the primary voice-identity pathway (always global, attending to
timbre+lyric+text conditioning), while self-attention alternates sliding window
(local timbre) and global GQA (long-range structure).

Changes:
- New `acestep_dit` preset: wider orthogonal band (0.30), higher TIES threshold
  (0.35), full magnitude preservation (floor 1.0) — biases toward SLERP over
  TIES to prevent voice signal trimming in cross-attn layers
- Fix `to_out` → `o_proj` normalization bug (was producing `out_proj`)
- Add v1.0 detection and normalization (transformer_blocks, speaker_embedder,
  lyric_encoder mapped to v1.5 canonical form)
- Refine WAN detection to exclude transformer_blocks (prevents v1.0 misdetect)
- Add `acestep_dit` to all architecture_preset UI dropdowns
- 25 new tests (detection, normalization, preset)
- Technical reference doc with architecture analysis and design rationale

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-14 12:59:13 +02:00
EthanfelandClaude Sonnet 4.6 860af94257 docs: add implementation plan for dynamic stacker enable/disable + right-click UX
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-09 11:54:57 +02:00
EthanfelandClaude Sonnet 4.6 f9bc343468 docs: add design for dynamic stacker enable/disable, remove, reorder
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-09 11:52:13 +02:00
EthanfelandClaude Sonnet 4.6 4bf9fb279a docs: add Community Cache wiki page
New page covers how it works, privacy model, setup, file structure,
score-based replacement, cache hit log examples, version compatibility,
and troubleshooting. Wired into sidebar and home page.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-04 15:36:06 +02:00
EthanfelandClaude Sonnet 4.6 3b4a574355 feat: drop download_only — community cache is upload_and_download only
Removes the passive download_only option to encourage contribution.
Users who want community results need to also contribute back.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-04 15:27:19 +02:00
EthanfelandClaude Sonnet 4.6 620399d3c1 feat: add community_cache — HF-backed shared analysis results
Replaces dead record_dataset param with community_cache dropdown
(disabled / download_only / upload_and_download).

Downloads are anonymous via urllib; uploads require HF_TOKEN and
huggingface_hub. LoRA filenames are never shared — content hashes
(SHA256[:16]) are used as keys. Per-LoRA/pair conflict metrics and
winning merge configs are shared; network errors fall back silently to
the full local sweep.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-04 13:39:56 +02:00
EthanfelandClaude Sonnet 4.6 91f514e291 docs: document memory_mode, selection, output_mode, and caching infrastructure
- Add memory_mode, selection, output_mode to AutoTuner entries in Nodes.md
- Add output_mode, memory_mode, selection sections to Configuration-Guide
- Add AutoTuner Caching Infrastructure section covering all three cache types
  (.memory.json, .analysis.json, .analysis.partial.json) and how to clear them
- Add 3 troubleshooting entries for cache-related issues in Tips-and-Troubleshooting
- Update speed tip to mention memory_mode=auto

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-03 20:20:44 +02:00
EthanfelandClaude Sonnet 4.6 f91d7ccf9d docs: fix 3 bugs in pair/lora cache plan
- Task 4: guard min(participating) against empty set
- Task 5: add CPU path hit check before executor.submit
- Task 5/6: guard pair extraction with entry is not None

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-03 17:56:50 +02:00
EthanfelandClaude Sonnet 4.6 3c22d1c0e5 docs: add pair/lora cache implementation plan
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-03 17:50:25 +02:00
EthanfelandClaude Sonnet 4.6 810f858ec4 docs: add pair/lora cache design for cross-run analysis reuse
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-03 17:43:22 +02:00
EthanfelandClaude Sonnet 4.6 4ca73e93e5 docs: add analysis resume implementation plan
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-03 16:38:59 +02:00
EthanfelandClaude Sonnet 4.6 90c5f9e774 docs: add analysis resume design and unignore docs/plans
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-03 16:37:07 +02:00
EthanfelandClaude Opus 4.6 4b97d7cacf docs: update AutoTuner sub-merge plan with reviewed bug fixes
Incorporates 7 fixes from code review:
- Bug 1: normalize_keys="disabled" for recursive outer call
- Bug 2: clip_strength_multiplier in at_kwargs
- Bug 4: update active_loras when formula resolves to single item
- Bug 6: _suppress_pbar for sub-merge progress bars
- Bug 7: document evaluator exclusion from sub-merges
- Bug 8: save/restore _detected_arch around recursive call
- Bug 9: _skip_qkv_refusion on single-LoRA path

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 21:17:55 +01:00
EthanfelandClaude Opus 4.6 c197f21444 docs: add AutoTuner per sub-merge implementation plan
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 21:10:05 +01:00
EthanfelandClaude Opus 4.6 557b532556 docs: add AutoTuner per sub-merge design document
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 21:07:47 +01:00
EthanfelandClaude Opus 4.6 4b605d01f4 docs: add merge formula implementation plan
5-task plan: parser, passthrough node, tree executor,
optimize_merge integration, and verification.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 15:59:17 +01:00
EthanfelandClaude Opus 4.6 cb4fc4e27e docs: add merge formula design document
Hierarchical merge topology via text formula expression.
Users define merge order (e.g., "(1+2) + 3") to prevent
style LoRAs from being drowned out by character LoRA majority.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 15:56:03 +01:00
EthanfelandClaude Opus 4.6 ae0d804bba docs: add contributors to technical report
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 00:29:05 +01:00
EthanfelandClaude Opus 4.6 4ae79d0c9e docs: add v2 workflow, rename Legacy, update wiki for Settings nodes
- Add example_workflows/LoRa Optimizer v2.json for the new node layout
- Rename LoRA Optimizer (Advanced) → (Legacy) across all wiki pages
- Document Settings nodes (Merge, Optimizer, AutoTuner) in Nodes.md
- Add Settings and Compatibility Analyzer workflows to Workflows.md
- Add decision_smoothing, smooth_slerp_gate, scoring_speed/formula,
  and Settings node architecture to Configuration-Guide.md
- Update How-It-Works.md node registry and variant descriptions
- Rename patch_compression non_ties → smart in all references
- Update Home.md feature table (8 architectures, settings nodes)
- Add zit_example_1.png asset
- Update SVG assets (timeline, pipeline, bridge, ties, merge-use-cases)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 22:56:19 +01:00
EthanfelandClaude Opus 4.6 b273cd8cf9 docs: remove all calibration_data references from documentation
Clean up README, wiki Nodes, How-It-Works, and maintainer sync docs
to reflect removal of calibration_data feature.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 19:00:55 +01:00
EthanfelandClaude Opus 4.6 7959ce81fd merge: integrate PR #1 correctness refactor into test branch
Merges srv1n's correctness refactor (PR #1) with conflict resolution
to preserve our recent setting renames and fixes while incorporating
their core improvements:

- Target-key grouping: analysis/merge operates on resolved model weights
  instead of raw LoRA prefixes, fixing trainer-specific aliasing bugs
- Exact low-rank linear patches: lossless linear merges for weighted_sum
  and weighted_average when no nonlinear ops are needed
- Excess conflict metric: sign disagreement beyond statistical expectation
  (cosine-sim aware), replacing raw conflict ratio in decisions
- Subspace overlap: measures how much LoRA weight perturbations align
- Block smoothing: reduces noisy per-prefix mode flips
- Activation-aware calibration scoring for Phase 2 quality evaluation
- ACE-Step architecture support
- Soft LoKr/LoHa imports for graceful degradation
- RS-LoRA compensation re-enabled with safe heuristic
- 519-line test suite (19 tests, all passing)

Conflict resolution kept our:
- Setting renames (merge_refinement, patch_compression, strategy_set)
- Qwen-Image detection fix
- LoRACompatibilityAnalyzer node
- Conflict-mode masking in _apply_conflict_modes (PR's approach)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 14:19:34 +01:00
EthanfelandClaude Opus 4.6 63f54f73a4 docs: add merge strategy guide and update README setting references
Add educational SVG/PNG diagram explaining orthogonal vs conflicting vs
aligned LoRA relationships and when to change merge settings. Update all
README references to use new setting names (merge_refinement,
patch_compression, strategy_set, additive).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 13:19:13 +01:00
srv1n 15eb41a758 Remove local paths from maintainer note 2026-03-08 16:13:13 +05:30
srv1n 561249f096 Tighten reviewer-facing maintainer note 2026-03-08 16:08:59 +05:30
srv1n dad533a4f3 Expand maintainer handoff summary 2026-03-08 16:06:52 +05:30
srv1n be7cb96f1e Sync correctness refactor onto upstream dfd3920 2026-03-08 16:02:45 +05:30
EthanfelandClaude Opus 4.6 38d288659c docs: add AutoTuner diff cache design
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 02:38:52 +01:00
EthanfelandClaude Opus 4.6 b47736e1cf docs: add wiki pages and bump version to 1.2.2
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 01:39:14 +01:00
EthanfelandClaude Opus 4.6 7d2f1ad623 chore: remove remaining plan docs from tracking (gitignored)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 18:26:21 +01:00
EthanfelandClaude Opus 4.6 b5c43f6621 chore: remove plan doc from tracking (gitignored)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 18:26:08 +01:00
EthanfelandClaude Opus 4.6 043c8200a4 docs: add WanVideoLoRAOptimizer design document
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 18:17:16 +01:00
EthanfelandClaude Opus 4.6 c916642263 Add architecture-aware key normalization implementation plan
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 14:15:01 +01:00
EthanfelandClaude Opus 4.6 b79d897325 Add architecture-aware key normalization design doc
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 13:24:17 +01:00