Nodes/ComfyUI-Krea2T-Enhancer/Krea2 Selective LoRA Loader Model Only (Projection Split)
ComfyUI Node

Krea2 Selective LoRA Loader Model Only (Projection Split)

Your Krea 2 LoRA Is Quietly Editing Your Prompt

By capitan01R·Created 4 months ago·Updated 16 days ago· 270
Krea2 Selective LoRA Loader Model Only (Projection Split)
  • model
  • model
  • report
◄lora_name▾►
◄strength_model1.00►
◄load_projectiontrue►
◄load_textfusiontrue►
◄load_txtmlptrue►
◄debugfalse►

Here's the thing nobody mentions when you download your first Krea 2 character LoRA: it isn't only painting the face. Krea 2 runs your prompt and your image through the same 28 shared blocks, and a real slice of the model exists purely to turn the Qwen3-VL text stack into conditioning in the first place. A LoRA that writes weights into that slice changes how the model reads you, not just what it draws. And most LoRA loaders give you one switch for the whole file.

This node gives you three more: a normal model-only LoRA loader plus independent keep/drop switches for Krea 2's three text-conditioning branches - txtfusion.projector, the rest of txtfusion, and txtmlp.

Why you'd reach for it

Krea 2 is a 12B single-stream DiT, and the prompt doesn't arrive as a finished CLIP row. The Qwen3-VL encoder hands over twelve selected hidden-state taps - a 12 x 2560 stack per token position - fused before it ever meets the image tokens. A LoRA that wrote into that fusion path is effectively a prompt-editing layer, and it doesn't fail loudly. It fails as "my prompts stopped landing as well and I don't know why."

The pack author - the same u/Capitan01R- behind the Klein encoder-path teardown everyone kept linking - is candid that the runtime enhancer was the proof of concept and the cleaner route was training a TextFusion-targeted LoRA instead. You can't retrain every LoRA on Civitai, but you can control which branches one writes into.

How it actually works

It reads the raw file with ComfyUI's own torch-file loader, classifies every key by name into four buckets - projection, textfusion, txtmlp, other - drops the ones you switched off, and hands what survives to ComfyUI's standard model-only LoRA path with your strength_model.

That's the nice part - alpha/rank scaling, key mapping, LoRA and LoKr handling all stay stock. Same load the built-in loader would have done, minus the tensors you cancelled. Two source details worth knowing:

  • other is never filtered. The shared DiT blocks always load. This is a text-path switch, not a general tensor picker.
  • The projector is matched before generic txtfusion, so a projector key can never land in the wrong bucket.

The report output is the only practical way to find out whether a file even has text-path tensors - kept and source counts per branch. Most character LoRAs don't. It also fingerprints the file (path, inode, size, mtime, ctime), so replacing a LoRA on disk re-runs the node while unchanged inputs stay cache-friendly.

The inputs that matter

  • model - the chain so far; this sits wherever a plain LoRA loader would.
  • lora_name - your file. Load each LoRA once.
  • strength_model - default 1.0, range ±100. At 0 the node bypasses and passes the model through - handy as a same-seed baseline.
  • load_projection, load_textfusion, load_txtmlp - the whole point, all default on. Tooltips are the author's: projector only; layerwise/refiner tensors excluding the projector; txtmlp linear layers.
  • debug - prints the same report to the console.

Outputs are model and report: model to the sampler (or the next loader), report to a text preview node when you want to know what happened.

Rule of thumb: if a LoRA is eating your prompt, turn load_txtmlp off first, then load_textfusion, then load_projection. If adherence recovers but likeness doesn't, that LoRA was leaning on the text path and there's no free lunch. The author's shipped character workflow chains this after the image-only loader with all three switches off - the far end of the same dial.

Install

ComfyUI Manager, search ComfyUI-Krea2T-Enhancer. Or:

cd ComfyUI/custom_nodes
git clone https://github.com/capitan01R/ComfyUI-Krea2T-Enhancer.git

Restart ComfyUI. No requirements.txt, no extra pip packages - it leans entirely on ComfyUI's own LoRA machinery. You do need a ComfyUI with native Krea2 support (0.25.0 and up), plus the model, the Qwen3-VL text encoder and the Qwen-Image VAE.

Load Diffusion Model -> LoRA loader(s) -> Krea2 Selective LoRA Loader Model Only (Projection Split) -> sampler

Where it bites

Zero counts in the report. Check the source=[...] half before blaming a switch. projection:0 just means the file has no projector tensors, so toggling that switch does nothing.

Tensors landing in other. Classification is name-based and tolerant of txtfusion / textfusion / text.fusion and txtmlp / txt.mlp / txt.in.linear.1, but it isn't magic. A file that names those layers another way loads them anyway, silently, because unmatched keys are always kept. If loaded counts don't match source counts for a branch, that's what happened.

Counts are key counts, not successes. They include per-module alpha entries, so a 28-module branch can report more than 28. "Is there anything in this bucket", not a per-layer audit.

A LoRA that suddenly does nothing. You removed the only tensors it had. Turn them back on and A/B against strength_model=0 - one extra generation, no guessing.

CategoryKrea2/loaders

Inputs (7)

NameTypeDefaultDescription
modelMODEL—
lora_nameCOMBOLoRA applied only to the diffusion model.
strength_modelFLOAT1.00-100–100—
load_projectionBOOLEANtrueLoad only txtfusion.projector LoRA tensors.
load_textfusionBOOLEANtrueLoad txtfusion layerwise/refiner tensors, excluding the projector.
load_txtmlpBOOLEANtrueLoad txtmlp linear-layer LoRA tensors.
debugBOOLEANfalse—

Outputs (2)

NameTypeDescription
modelMODEL—
reportSTRING—