Anima Artist Options (Advanced)
Stabilizers, VRAM controls, and norm locks for Anima mixing
- advanced_options
- anchor_seeds_used
This is the basement. AnimaArtistOptions (Expert) is where the pack's real machinery lives: cross-seed style stabilizers, norm locking, VRAM limits, and the A/B switches the presets deliberately keep off by default. If AnimaArtistPreset is "pick a mode", this node is "build a mode from parts". Most people should not be here - the README's own advice is that SimpleOptions handles the common tweaks and this panel is for stabilizer A/B and debugging. But if your mixes keep flip-flopping between dominant artists across seeds, this is where the fix is.
The layout basics
start_block/end_block and start_percent/end_percent bound where (DiT blocks) and when (sampling progress) the patch applies. normalize_weights toggles relative-vs-absolute weights. layer_filter overrides the block range with a list like 0,3,5-10,-1.
The stabilizers, light to heavy
match_base_norm(+norm_lock_modetoken/row,norm_lock_scopeper_artist/mixed/both) - rescales the mixed artist attention output to the base's RMS energy. Stops one seed-specific artist spike from dominating. The "v26 norm-lock" path.artist_ema_alpha(0–0.95) - temporal EMA smoothing across sampling steps. 0.3–0.5 is light; past 0.8 style starts lagging content.lowrank_k- only matters withcombine_mode=lowrank_avg. k=1 gives one consensus direction (most stable, most homogeneous); k≥N equals plain output_avg.artist_static_capture+static_capture_k(default 6) +static_capture_mode- freezes artist attention after K warmup steps. Also a 30–50% speedup. Incompatible with concat_with_base (auto-ignored) and with EMA.artist_anchor_q+anchor_seeds_count+anchor_user_blend+anchor_deep_layer_threshold+anchor_refresh_each_step- the heaviest stabilizer: artist attention uses a fixed-seed anchor hidden state as Q, decoupling style from your seed. Costs one extra forward on first generation, then caches. Mutually exclusive with static_capture (anchor wins).stabilizer_end_percent- lets EMA/static/anchor stop early in sampling; try 0.4–0.6 when late-step samplers need dynamic motion.
VRAM and safety
max_batch_artists caps how many artists run per batched forward (0 = auto, adapting to free VRAM on GPU). low_vram_cache pushes the static/anchor caches into system RAM. compatibility_mode forces the tolerant concat path for regional-prompt setups. The experimental artist_q_reuse (reuse Q across artists) is off by default for a reason - it shifts same-seed renders and bypasses TeaCache-style patches.
Outputs
One output: advanced_options (ANIMA_OPTS) → AnimaArtistPresetApply.advanced_options or AnimaArtistCrossAttn.advanced_options.
Install
Manager → search "Anima Artist Mixer Forge", or:
cd ComfyUI/custom_nodes
git clone https://github.com/peter119lee/Anima-Artist-Mixer-Forge
then restart. No extra deps; Anima files + Anima-compatible CLIP loader required. Don't run alongside the original Anima-Artist-Mixer.
My take
If I had to pick two things to try first here, it's match_base_norm with token/per_artist locking for seed-to-seed drift, then artist_ema_alpha around 0.4. artist_anchor_q is a sledgehammer - it stabilizes style hard but strokes can stop tracking the current image; that's what anchor_user_blend is for. And note the honest signal in the README: artist_static_capture used to be a default and got pulled back because multi-artist evidence showed it over-constrains style. When the authors demote their own stabilizer, listen.
Inputs (19)
| Name | Type | Default | Description |
|---|---|---|---|
| start_block | INT | 00–63 | Start block (inclusive). |
| end_block | INT | -1-1–63 | End block (inclusive). -1 means last block. |
| start_percent | FLOAT | 0.0000–1 | Sampling progress start. 0.0 = start. |
| end_percent | FLOAT | 1.0000–1 | Sampling progress end. 1.0 = end. |
| normalize_weights | BOOLEAN | true | True: normalize artist weights to relative ratios. False: weights act as direct multipliers. Explicit ::weight syntax follows this option. |
| artist_ema_alpha | FLOAT | 0.000–0.95 | Cross-step EMA smoothing for artist outputs. |
| lowrank_k | INT | 11–32 | Rank for lowrank_avg. |
| artist_static_capture | BOOLEAN | false | Average the first K steps and freeze artist outputs. |
| static_capture_k | INT | 61–12 | Number of warmup steps for static capture. |
| artist_anchor_q | BOOLEAN | false | Use selected anchor-seed hidden states as artist-attn Q. |
| anchor_seed_list | STRING | Optional fixed anchor seeds, e.g. 12345,67890. When filled, anchor_seeds_count is ignored. | |
| anchor_seeds_count | INT | 11–4 | Number of fresh random anchor seeds generated per execution. |
| anchor_user_blend | FLOAT | 0.000–1 | Blend user x into anchor Q. 0=pure anchor, 1=pure user. |
| anchor_deep_layer_threshold | INT | -1-1–64 | -1 = all layers use anchor. N = layers >= N use user x. |
| stabilizer_end_percent | FLOAT | 1.000–1 | When EMA/static/anchor stabilizers stop during sampling. |
| anchor_refresh_mode | COMBO | once | [Adapter Mixer only] once reuses one start-of-run Q snapshot. warm_cache warms a sigma-keyframed Q trajectory once and reuses it for later KSampler seeds in the same session. |
| anchor_cache_points | INT | 82–12 | [Adapter Mixer only] CPU keyframes retained by warm_cache. More points improve sigma matching but use more system RAM. |
| layer_filteropt | STRING | Optional comma-separated block list/ranges, e.g. 0,3,5-10,-1. | |
| anchor_keyframe_modeopt | COMBO | uniform_sigma | [Adapter Mixer only] warm_cache keyframe selection. uniform_sigma keeps evenly spaced sigma frames. adaptive_q observes every warmup sigma and retains frames with the largest sampled Q-trajectory interpolation error; first warmup uses more CPU transfer. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| advanced_options | ANIMA_OPTS | — |
| anchor_seeds_used | STRING | — |