Anima LoRA Tag Loader (Auto Remap)
Put old Anima LoRAs on Anima-2.9B without the scribble-fest
- model
- clip
- model
- clip
- text
- remap_info
If you've dropped a LoRA trained for the original Anima onto Anima-2.9B and got back something that looks like the model had a seizure, it wasn't your seed or your prompt. Anima-2.9B is the original Anima (28 blocks) with 12 extra blocks spliced in LLaMA-Pro-style, for 40 total. Apply a 28-block LoRA naively and every key after the first insertion point lines up against the wrong layer - the weights land somewhere they were never trained to be, and you get exactly the "scribble-level" output the pack's README warns about.
This node is the fix, and it's the flagship of the ComfyUI-Anima29B-Remap pack: a <lora:name:weight> tag loader in the style of LoRA Tag Power Loader, with automatic block-index remapping built in. You write your prompt with LoRA tags like you always do, and it figures out the 28-vs-40 situation itself.
How it works
The node scans the connected model's keys for net.blocks.N to count blocks (the separate llm_adapter.blocks structure is deliberately ignored - it's 6 blocks and wasn't part of the expansion). It does the same for the LoRA file, then decides:
- Model has 40 blocks, LoRA has 28 → remap the LoRA's keys through the bundled
expand_manifest.json(the official mapping fromGazingstars123/Anima-2.9B) and apply. - Model has 28 blocks → apply the LoRA untouched, no remap at all.
- LoRA references more blocks than the model has → it errors out and stops, rather than silently applying a half-LoRA. There's no sane way to remap a 40-block LoRA down onto 28 blocks, and the author chose a loud failure over a quiet broken one.
Two key-name styles are recognized: dot-separated net.blocks.N. and kohya-style ..._blocks_N_.... Anything else won't be detected, and the LoRA is applied unmodified.
The inputs that matter
You mostly set two things: text (your prompt with <lora:name:weight> tags) and default_weight (what a tag uses when it omits the number). weight_multiplier scales every LoRA's weight uniformly, handy for A/B-testing a stack. clip is optional - tags can carry a separate clip weight.
The ones to be careful with:
save_remapped- leave it OFF while you're still tuning. When on, the first remap writes a<name>_29Bremap.safetensorsnext to your original LoRA, and that cached file takes priority forever after, no matter what settings you change. Experiment with it off, flip it on once you've settled, and delete the_29Bremapfile if you want to change settings later. This is the single biggest footgun in the pack.extend_to_new_layers/extend_strength- experimental, off by default. When on, it also approximates the LoRA's effect onto the 12 freshly-inserted layers. It's a best-effort projection, not a "correct" answer.manifest- only one option ships (expand_manifest_preview_v1.json). If a future Anima-2.9B revision changes the block layout, you drop its manifest into the pack'smapping/folder and pick it here.
Wiring it up
The three outputs: model and clip go straight to your sampler, and text comes out with the LoRA tags stripped - feed that to your CLIP Text Encode. The pattern is exactly the same as any tag-style LoRA loader:
<lora:my_old_anima_style:0.8> → applied at 0.8, tag removed from output text
<lora:name:0.9:0.7> → model weight 0.9, clip weight 0.7
Load the 2.9B checkpoint however you normally load Anima (UNETLoader for a diffusion_models file), and keep the Qwen-Image VAE from the base stack.
Install and gotchas
Install via ComfyUI Manager (search "Anima-2.9B Remap") or:
cd ComfyUI/custom_nodes
git clone https://github.com/shin131002/ComfyUI-Anima29B-Remap.git
Then restart ComfyUI. No extra Python dependencies - it uses ComfyUI's own comfy.sd - and no model downloads; the manifest is bundled. Two things the README wants you to know: this repo is no longer updated (development moved to ComfyUI-Anima-Remap, which adds 3.8B/52-block support), so don't install both - they register the same node IDs and conflict. And one honest limitation: 28-vs-40 detection is based on the highest block index a LoRA's keys touch, so a 2.9B LoRA that only trains early blocks can get misread as a 28-block LoRA and remapped when it shouldn't be. There's no override for that yet.
Finally, the license: remapping a LoRA makes it a "Derivative" of Anima, so your remapped file carries the CircleStone Labs non-commercial restriction - but images generated with it are yours to use commercially. The node code itself is MIT.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| text | STRING | — | |
| default_weight | FLOAT | 1.00-10–10 | — |
| weight_multiplier | FLOAT | 1.00-10–10 | — |
| auto_remap | BOOLEAN | true | — |
| save_remapped | BOOLEAN | false | — |
| extend_to_new_layers | BOOLEAN | false | — |
| extend_strength | FLOAT | 0.500–2 | — |
| manifest | COMBO | 4 options: Auto (Recommended), expand_manifest_28_40.json, expand_manifest_28_52_composed.json, expand_manifest_40_52.json | |
| clipopt | CLIP | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |
| clip | CLIP | — |
| text | STRING | — |
| remap_info | STRING | — |