Nodes/Anima LoRA Comparison/Anima XY Sampler
ComfyUI Node

Anima XY Sampler

The 'XY' is a lie — it's a one-axis LoRA bake-off, and that's the good part

By yunqiankuangyu·Created 3 months ago·Updated 26 days ago· 1
Anima XY Sampler
  • MODEL
  • Positive
  • Negative
  • Latent
  • VAE
  • LoRA List
  • IMAGE
Seed0
Steps30
CFG5.0
Samplereuler
Schedulersimple
Denoise1.00

Let's get the name out of the way: there is no Y axis. "XY Sampler" sounds like a full grid of prompt-versus-LoRA combinations, and what it actually does is iterate a LoRA list and generate one image per LoRA. That's one axis. It's still exactly what you want, because Anima LoRA comparison is the pack's whole job - the classic workflow is "same prompt, same seed, five LoRAs, pick a winner" - and this node is that workflow in a box.

How it works

The mechanism is the reassuring kind: it doesn't reimplement sampling, it drives ComfyUI's own sampler. For each entry in the connected LORA_LIST, the node loads that LoRA's weights at the list's strength with comfy.sd.load_lora_for_models, then runs comfy.sample.sample - the same code path the built-in KSampler uses - decodes with the VAE, and stacks every result into one IMAGE batch. It prints a running tally in the console ([AnimaXY] 2/5 your_lora.safetensors strength=1.0) so you know which slot is cooking. Wire nothing into LoRA List and it falls back to a single ordinary sample, so the node doubles as a plain KSampler with extra steps.

The inputs

The inputs mirror a KSampler almost exactly:

  • MODEL, Positive, Negative, Latent, VAE - standard wiring; the MODEL/VAE here come from the pack's AnimaModelLoader (or any loader).
  • LoRA List (optional) - the LORA_LIST out of AnimaLoraList. The whole comparison loop hangs off this one wire.
  • Seed - one seed for the entire batch, which is the point: every LoRA faces the same prompt and same noise, so differences are the LoRA, not luck. There's a control_after_generate control on it, and the same "seed shows what runs next" trap applies as everywhere in ComfyUI.
  • Steps, CFG, Sampler, Scheduler, Denoise - Sampler pulls ComfyUI's full list (44 names), Scheduler its 9. For Anima itself, the model card's neighborhood is 30–50 steps, CFG 4–5, and euler, euler_ancestral, or the dpmpp_2m_sde family - euler_ancestral/simple is the sensible starting point, and anything past CFG 5 tends to overcook it.

What comes out

The output is a single IMAGE whose batch dimension holds one image per LoRA, in list order. That batch is not a grid yet - feed it to the pack's AnimaImageGrid, or extract frames with a batch-split if you want them loose.

Three gotchas

Three things bite people. First, the whole batch is decoded and held in memory at once (torch.cat at the end), so a 20-LoRA run on Anima - already a slow 2B model that takes over a minute a frame on a 4060 - is a genuine queue, not a peek. Plan the list size accordingly. Second, the seed is shared and fixed for all iterations, so you can't randomize per-LoRA; if you wanted that, this isn't the node. Third, an empty or all-(none) list fails at the list node with a ValueError ("at least one valid LoRA must be selected") before the sampler ever runs - friendlier than the silent blank batch you might expect.

Install

Install via ComfyUI Manager (search "Anima LoRA XY") or:

cd ComfyUI/custom_nodes
git clone https://github.com/yunqiankuangyu/comfyui-anima-lora-comparison.git

Restart ComfyUI. Under Anima/LoRA Comparison you'll find this sampler sitting between the list and the grid - the whole point of the pack in one line.

CategoryAnima/LoRA Comparison

Inputs (12)

NameTypeDefaultDescription
MODELMODEL
PositiveCONDITIONING
NegativeCONDITIONING
LatentLATENT
VAEVAE
SeedINT00–18446744073709550000
StepsINT301–10000
CFGFLOAT5.00–100
SamplerCOMBOeuler44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38
SchedulerCOMBOsimple9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3
DenoiseFLOAT1.000–1
LoRA ListoptLORA_LIST

Outputs (1)

NameTypeDescription
IMAGEIMAGE