IPAdapter Batch (Adv.)
One reference per frame for animation
- model
- ipadapter
- image
- image_negative
- attn_mask
- clip_vision
- MODEL
Here's the one-line difference from the regular Advanced node: IPAdapter Batch treats a stack of reference images as a sequence, one reference per output frame, instead of blending them all into a single embedding. That distinction is the whole reason it exists, and it's what makes it the go-to for image-prompt travel in AnimateDiff and other batch/video workflows.
Think about what you're doing in an animation. You've got, say, 48 latents in a batch, and you want the IP-Adapter influence to change over time - reference A at the start, morphing toward reference B by the end. Feed those two (or more) references through this node against a matching batch, and it lines them up frame-to-frame rather than mashing them into one averaged look. The plain Advanced node would just fuse them; Batch keeps them separate and sequential.
Inputs and outputs
The connections mirror the Advanced node: model, ipadapter, and image (here, your batch of references), out to a patched MODEL. The settings you'll actually touch:
- weight - influence strength, default 1.0. Same guidance as always: often better a touch below 1.
- weight_type - the full fifteen-curve menu (
linear, theeasefamily,style transfer,composition, and the rest). For travel work, the interpolating curves are where this gets expressive. - start_at / end_at - the sampling window the effect covers.
- encode_batch_size - the one setting specific to the batch nodes. It controls how many images get CLIP-encoded at once. Default 0 means "all in one go," which is fastest but hungriest on VRAM. If you're OOM-ing on a long sequence, set this to something like 4 or 8 to encode in chunks and trade a little speed for headroom.
embeds_scaling is the usual attention-math control. Optional inputs are image_negative, attn_mask, and clip_vision - the last only needed if your ipadapter didn't arrive with a CLIP vision model attached (i.e. you used the plain Model Loader rather than the Unified Loader).
Where it fits
This is an animation and prompt-travel tool first. In a typical AnimateDiff graph you'll see it paired with a batch of latents and a scheduler that ramps the references. For a single still image you don't need it - use IPAdapter Advanced. The value here is entirely in the temporal, one-image-per-frame handling.
A practical warning that comes with any batch node: memory. Encoding a big reference batch plus running an animation sampler is a real VRAM load, and this is exactly the situation encode_batch_size is there to rescue. If a run dies partway through with a CUDA out-of-memory error, drop that number before you touch anything else.
Installing the pack
ComfyUI Manager: Custom Nodes Manager, search "IPAdapter plus", install, restart. Or manually: cd ComfyUI/custom_nodes && git clone https://github.com/cubiq/ComfyUI_IPAdapter_plus, then restart ComfyUI. You'll need a CLIP vision encoder in ComfyUI/models/clip_vision (ViT-H for SD1.5, ViT-bigG for SDXL) and an IP-Adapter model in ComfyUI/models/ipadapter. Update ComfyUI if any node in the pack fails to load. Note this is an SD1.5/SDXL pack - it won't run on Flux, so batch IP-Adapter travel lives in the SD1.5 and SDXL AnimateDiff world.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| ipadapter | IPADAPTER | — | |
| image | IMAGE | — | |
| weight | FLOAT | 1.00-1–5 | — |
| weight_type | COMBO | 15 options: linear, ease in, ease out, ease in-out, reverse in-out, weak input, +9 | |
| start_at | FLOAT | 0.0000–1 | — |
| end_at | FLOAT | 1.0000–1 | — |
| embeds_scaling | COMBO | 4 options: V only, K+V, K+V w/ C penalty, K+mean(V) w/ C penalty | |
| encode_batch_size | INT | 00–4096 | — |
| image_negativeopt | IMAGE | — | |
| attn_maskopt | MASK | — | |
| clip_visionopt | CLIP_VISION | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | — |