ComfyUI Node

PM KREA 2 Blocks

Per-block weights, txtfusion included

By larsupb·Created 2 years ago·Updated about a month ago· 75
PM KREA 2 Blocks
    • block_definition
    blocks_group_size5
    blocks_weights1.0
    txtfusion_layerwise1.00
    txtfusion_refiner1.00
    txtmlp1.00

    Krea 2 is the 12B diffusion transformer that took the open ecosystem by storm in 2026 - the "train on Raw, run on Turbo" base that finally gave people something to fine-tune that wasn't a 50GB Flux. Its LoRAs have an unusual anatomy for a DiT: the main transformer stack (diffusion_model.blocks.N) plus two extra subsystems - the txtfusion text-fusion stream and a separate txtmlp - that a naive block-weight tool would either ignore or mangle. PM KREA 2 Blocks is the node in the LoRA Power-Merger pack that knows that anatomy.

    Like its sibling PM FLUX.2.Klein Blocks, it's a BlockDefinition producer, not a standalone tool. You set the weights, it outputs a block_definition, and that feeds into PM Block Selector, which binds the recipe to a specific LoRA in your stack before the merge. On its own it's just a config sitting on the canvas.

    The inputs that matter

    • blocks_weights - comma-separated per-group weights for the main blocks.N stack, left to right. The tooltip is explicit that missing groups default to 1.0, which is the thing that'll trip you up later.
    • blocks_group_size - default 5. How many consecutive transformer blocks share one weight. At 5 you're grouping Krea 2's roughly 40-odd blocks into manageable chunks; drop it to 1 for per-block control.
    • txtfusion_layerwise - single weight for the txtfusion.layerwise_blocks stream (default 1.0, range 0–10).
    • txtfusion_refiner - single weight for txtfusion.refiner_blocks.
    • txtmlp - single weight for the txtmlp pathway.

    Notice the asymmetry: the main stack is a grouped, indexed category, while txtfusion and txtmlp are single scalar "pathways." That matches the architecture - the text-fusion blocks are where Krea 2 merges in its Qwen3-VL conditioning features, and you almost always want them either at full strength or fully out, not per-block fiddled.

    The single output, block_definition, goes into PM Block Selector's block_definition input.

    How the weights actually apply

    The definition matches layer keys against a regex for blocks.N, buckets each index into a group (group = N // group_size), and looks up that group's weight - the txtfusion/txtmlp keys get their pathway scalar instead. The (?:^|\.)blocks\. pattern deliberately won't match double_blocks or single_blocks, so this definition is safely Krea 2-specific and won't cross-fire on a Flux LoRA. During decompose, each weight scales that LoRA's up factor linearly (never up and down both, which would square it), and a 0 weight drops that block's contribution to the merge entirely.

    Installing it

    Same pack, same drill. ComfyUI Manager → search "LoRA Power-Merger", or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/larsupb/LoRA-Merger-ComfyUI
    cd LoRA-Merger-ComfyUI
    pip install -r requirements.txt
    

    That pulls mergekit from Arcee AI's git repo plus lxml - no model downloads, nothing to configure beyond a restart. Then wire PM KREA 2 Blocks → PM Block Selector → PM LoRA Stack Decompose, with your Krea 2 LoRA at the selector's index in the stack.

    Where people get burned

    Two things, both easy to hit. First, the missing-groups trap again: blocks_weights: "1, 0.5" with a group size of 5 only tames blocks 0–9; everything from block 10 on stays at full strength. If your merge looks barely different, count your groups before you blame the node. Second, the architecture mismatch: run this definition against a non-Krea LoRA and every key resolves to 1.0 - a silent no-op with the definition's model: "KREA2" never checking the actual stack. The console log line selection now covers N LoRA(s) from Block Selector is your confirmation that something actually matched.

    Worth remembering the broader Krea 2 context too: Raw is the undistilled base you train on, Turbo the distilled one you run - the community's standard trick is Raw with the Turbo LoRA at ~0.6 weight. Block weighting slots in after that choice, letting you keep a character LoRA's signature blocks prominent while the style LoRA recedes. For a single LoRA and no merge, it's overkill; for stacking multiple Krea 2 LoRAs, it's the difference between blending and surgery.

    CategoryLoRA PowerMerge

    Inputs (5)

    NameTypeDefaultDescription
    blocks_group_sizeINT51–128
    blocks_weightsSTRING1.0Comma-separated per-group weights, left-to-right. Missing groups default to 1.0.
    txtfusion_layerwiseFLOAT1.000–10
    txtfusion_refinerFLOAT1.000–10
    txtmlpFLOAT1.000–10

    Outputs (1)

    NameTypeDescription
    block_definitionBlockDefinition