IPAdapter Save Embeds V2
Stop re-encoding the same reference image
- embeds
Every time your graph runs, IP-Adapter has to push your reference image through the CLIP vision encoder to turn it into embeddings. For one image that's a blip. For a batch of references - say, a face set you keep reusing across a hundred generations - it's a wall of redundant work, and it's the same result every single time, because encoding is deterministic. IPAdapterSaveEmbedsV2 lets you pay that cost once and bank it: it takes an EMBEDS tensor and writes it to disk as a .ipadpt file, which its sibling IPAdapterLoadEmbedsV2 reads back without re-encoding.
The mechanism is exactly what it looks like. An encoder node upstream (the IPAdapterEncoderV2 or the encoder path inside an apply node) produces the image embeddings; this output node takes them, runs them through ComfyUI's standard save-image path, and writes a file named after filename_prefix with an incrementing counter - IP_embeds_00001.ipadpt by default - into ComfyUI's output folder. That's the whole job.
The two inputs:
embeds- the EMBEDS tensor from an encoder node or an apply node's embed outputfilename_prefix- the base name; files get numbered automatically so you can save multiple variants without overwriting
There are no outputs. It's marked as an output node, so it can sit at the end of a branch purely to persist data while the same branch also feeds the sampler.
When it's worth it
Three situations. First, slow machines or tight VRAM where the CLIP encode on a big reference actually hurts. Second, animation: the same reference conditioning every frame of a sequence - encode once, load it per frame. Third, workflow cleanliness: freeze the encoding of a face you've dialed in, and stop worrying that a future re-run will shift the crop or resize and quietly change your character's look. The tradeoff is disk space for a small file and a little rigidity - the embed is bound to the CLIP vision model that produced it, so switch CLIP models and the saved embed is stale.
Install
Part of chflame163/ComfyUI_IPAdapter_plus_V2, the V2 fork of cubiq's pack, installed once for all of these nodes:
cd ComfyUI/custom_nodes
git clone https://github.com/chflame163/ComfyUI_IPAdapter_plus_V2
or ComfyUI Manager → search ComfyUI_IPAdapter_plus_V2, then restart. No pip dependencies.
Gotchas
The .ipadpt files land in the output folder, not your input folder - people hunt for them under input/ and get confused. If you move them, put them where IPAdapterLoadEmbedsV2 scans: ComfyUI's input directory. And the stale-embed trap above is the one that bites in practice: save embeds from a specific CLIP vision encoder and later change the preset in the loader, and the saved file encodes a different visual language than the one your pipeline now uses. When in doubt, re-encode. For the common case - the same reference, the same model, lots of runs - this node quietly removes one of the most pointless repeated computations in the graph.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| embeds | EMBEDS | — | |
| filename_prefix | STRING | IP_embeds | — |
Outputs (0)
No outputs