Conditioning Freeze
Conditioning Freeze is a save button for conditioning, and that is genuinely useful
- conditioning
Conditioning Freeze does one thing: it takes a CONDITIONING and writes it to disk. No outputs, no preview, no cleverness. If you have ever waited through a text encoder chugging on four reference images every single queue, you already know why that's worth a node.
Why you'd want to write conditioning to disk
Encoding is the invisible cost in the modern stack. On an LLM-encoded edit model like Krea 2, your prompt and reference images go through a vision-language encoder, often with multilayer feature aggregation - Krea 2's encoder is Qwen3-VL tapped at twelve separate layers, which is why the pack's own code carries a 30720-wide feature dimension around. That work is identical every run if your references haven't changed. Freeze lets you pay for it once.
The workflow shape is: encode → Freeze → the sampler runs. Then mute (Ctrl+M) the encoder branch, wire Conditioning Unfreeze where the encoder used to sit, and every subsequent run skips encoding entirely. When you're sweeping sampler settings or a steering value against one fixed set of references, that's the difference between a fast iteration loop and a slow one.
It's also a reproducibility tool. A frozen file is the exact conditioning bytes that produced an image, which makes "was it the encoder or the sampler?" answerable.
How it actually behaves
- The file.
torch.saveof the conditioning structure, intoComfyUI/input/conditioning/, created if it doesn't exist. The directory is resolved throughfolder_paths.get_input_directory(), so it follows your install if you run with a custom--input-directory. - The name.
filenamedefaults toconditioning.pt..ptgets appended if you forget it, and a blank field falls back to the default. Same name overwrites silently - no timestamping, no versioning. - No outputs. This is a terminal output node. That's not a limitation you need to work around; it means the node runs as soon as the queue reaches it, so it can sit on a side branch rather than in the path to your sampler.
- Confirmation lives in the log. The only feedback is a UI text message - "Saved conditioning to <full path>" - which the pack's frontend extension draws on the node. If you're not sure where the file landed, that message tells you.
One honest caution: .pt is a pickle. Load only files this node wrote.
Inputs worth knowing
Two, and neither is subtle. conditioning is the thing you're saving. filename is the thing you'll type into Conditioning Unfreeze later - just the name, not a path, because both nodes resolve against the same input directory.
Install
ComfyUI Manager: search Rebalance Pack. Or by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/nova452/Rebalance-Pack.git
# restart ComfyUI
The pack has no requirements.txt and downloads no models - it's pure Python over the torch, PIL and numpy your ComfyUI already ships. The repo also carries a web/js folder, so do one hard refresh (Ctrl+Shift+R) after the restart or the node's display extension won't load.
Two naming traps worth knowing before you go hunting for support threads. The pack folder is Rebalance-Pack, its Manager display name is "Rebalance Pack", but the underlying project is called ComfyUI-Conditioning-Rebalance - and some node index entries still list the pre-merge module name ComfyUI-ConditioningKrea2Rebalance, which is what this pack was called back when it was the release-day Krea 2 filter-removal node. If you have an older folder with that name sitting in custom_nodes, remove it rather than stacking two copies of the same nodes.
Common issues
"Conditioning file not found" from the Freeze's partner node means the name doesn't match a file in input/conditioning. Check the exact string in the save message - capitalisation and extension included.
Freezing doesn't help your speed. If your graph still re-encodes, you left the encoder live. Freeze writes a copy; it doesn't reroute anything. The shortcut is to bypass the encoder branch, not to trust the cache.
A .pt that used to load now produces garbage or an error. Conditioning is encoder-specific - a file frozen from a Krea 2 (Qwen3-VL) encode only means something to that encoder. Change encoder, image sizes, or the model family, and you freeze again. This is a cache, not an archive.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| conditioning | CONDITIONING | — | |
| filename | STRING | conditioning.pt | — |
Outputs (0)
No outputs