RUM FLUX.2 Combine Conditioning
Where the Qwen stream meets the SDXL teacher
- flux2_conditioning
- sdxl_conditioning
- conditioning
RUM's whole trick is that it doesn't just fine-tune FLUX.2-Klein and call it a day. It runs two text conditioning streams - the FLUX.2 model's own Qwen3 4B encoder and the SDXL teacher CLIP (the waiNSFWIllustrious pair) - and stitches them into one embedding the transformer can attend to. RUMFlux2CombineConditioning is the node that does the stitching.
If the diffusers-match text encoder is the "everything in one box" node, this is the "show me the plumbing" node: it takes an already-encoded FLUX.2 conditioning and an already-encoded SDXL conditioning and merges them on the token axis. It's how RUM gets SDXL-class anime quality out of a 4B model - the teacher's CLIP tokens ride along inside the conditioning like extra context the student was trained to use.
The inputs that matter
flux2_conditioning- the Qwen-side embedding (fromRUMFlux2NativeMatchTextEncodeor a normal Qwen CLIP encode).sdxl_conditioning- the teacher CLIP embedding. UseRUMSDXLDiffusersTextEncodefor this, not a random SDXL encode on a random CLIP - the teacher weights are specific.base_text_tokens- how many Qwen tokens stay as the base (512 native / 200 diffusers-match). The tooltip warns a mismatch yields a damaged image, not an error.extra_text_tokens- how many SDXL tokens get appended, default 77 (the classic SDXL CLIP chunk).sdxl_clip_width- the SDXL conditioning's feature width, default 2048 (CLIP-L + CLIP-G combined). Don't touch it unless you know why.use_sdxl_extra- append real SDXL tokens, or pad zeros instead. Leave on.guidance/use_guidance_embedding- optionally embed the guidance value into the conditioning meta rather than applying CFG purely at sampling time. With the toggle off,guidanceis ignored.
Output is a single conditioning that feeds your sampler or guider.
Install
Pack-level: clone into custom_nodes, pip install -r requirements.txt, restart, and have the RUM checkpoints plus teacher CLIPs downloaded:
cd ComfyUI/custom_nodes
git clone https://github.com/Rinne414/ComfyUI-RUM
cd ComfyUI-RUM
pip install -r requirements.txt
python scripts/download_models.py --comfy-root /path/to/ComfyUI --include-teacher-clip
How to actually use it
The plain-native route builds the two halves yourself - Qwen CLIP encode, teacher CLIP encode, then this node. The diffusers-match route folds all of it into RUMFlux2NativeMatchTextEncode, which calls this same combine logic internally. So your honest choice is: want control and visibility, build it manually; want the reference-behaved result, use the match node and skip this one.
The one real gotcha is consistency: base_text_tokens here has to equal the value on your model loader and any match-patch node, or you get the structural corruption the tooltip warns about. RUM is also a real-CFG model (unlike the guidance-distilled Klein weights where you leave CFG at 1 and negatives do nothing), so pairing this with working negative prompts is legitimate - the whole SDXL conditioning stream is what makes that possible.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| flux2_conditioning | CONDITIONING | — | |
| sdxl_conditioning | CONDITIONING | — | |
| guidance | FLOAT | 5.00–100 | — |
| use_guidance_embedding | BOOLEAN | false | — |
| base_text_tokens | INT | 5121–4096 | 必须与模型加载/patch 节点的 base_text_tokens 一致,否则会得到损坏的画面。 |
| extra_text_tokens | INT | 771–512 | — |
| sdxl_clip_width | INT | 20481–8192 | — |
| use_sdxl_extra | BOOLEAN | true | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| conditioning | CONDITIONING | — |