RUM SDXL Diffusers Text Encode
Encode with the SDXL teacher CLIP, weighting syntax and all
- clip
- conditioning
This is the quiet helper node of the RUM pack, and it does one thing: run text through the SDXL teacher CLIP and hand you back a conditioning embedding. It's the SDXL half of RUM's dual-conditioning scheme - the half that carries the anime vocabulary the Illustrious family knows so well.
RUM is RimoChan's cross-architecture distillation: take the knowledge locked in an SDXL-class anime checkpoint (here, waiNSFWIllustrious_v140) and bake it into FLUX.2-Klein 4B. The diffusion weights are only half of that transfer. The other half is conditioning the model with the teacher's CLIP tokens, and that's what this node produces. In the shipped workflows you'll more often hit RUMFlux2NativeMatchTextEncode, which does Qwen + teacher in one go - but if you're hand-building the native path (or poking at the SDXL stream in isolation), this is the encode you want.
How it works
Under the hood it's a two-liner: clip.tokenize(text, disable_weights=True) then clip.encode_from_tokens_scheduled(...). Two details are worth knowing:
disable_weights=Trueis deliberate. RUM's reference semantics treat(tag:1.2)-style emphasis syntax as plain text - the tokenizer doesn't apply weighting. That matches the diffusers reference path the pack is trying to reproduce, so don't expect((eyes:1.3))to do anything here.- It uses the scheduled encode path, so whatever
clipyou feed it determines the embedding. Feed it the right teacher CLIP and you get the RUM-compatible SDXL conditioning; feed it a random SDXL CLIP and you get the RUM-incompatible one.
Inputs: clip and text (multiline). Output: conditioning.
The one thing that matters: the teacher CLIP
The README is explicit: the teacher is waiNSFWIllustrious teacher weights, not generic clip_l / clip_g. If your "same prompt, same seed" results keep drifting from the reference, this is usually why. Those come as two files from the Ine007/waiNSFWIllustrious_v140 repo:
text_encoder/model.safetensors→models/text_encoders/waiNSFWIllustrious_v140_clip_l.safetensorstext_encoder_2/model.safetensors→models/text_encoders/waiNSFWIllustrious_v140_clip_g.safetensors
Load them with a DualCLIPLoader and wire that into this node.
Install
Standard pack install, then make sure the teacher CLIPs are in models/text_encoders/:
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
Restart ComfyUI after the pip install. There's no diffusers dependency - the pack ships a native adapter - but it does need a ComfyUI recent enough for the newer CLIP internals (v0.26.2+).
Where people get burned: they wire a generic SDXL encode into RUMFlux2CombineConditioning, everything runs, and the result quietly isn't RUM - no error, just a picture that's missing the whole point of the teacher path. And remember the output is an embedding, not a model: it flows into a combine or a guider, not into a loader.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| clip | CLIP | — | |
| text | STRING | 1girl, kisaki (blue archive), eating baozi, sitting, indoors | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| conditioning | CONDITIONING | — |