Qwen Model Layer Editor
Scale Qwen-Image's 60 blocks before any LoRA sees them
- model
- model
- analysis
- analysis_json
This node edits the Qwen-Image checkpoint itself, block by block, before anything else touches it - not a LoRA's weights, the base model's. If a particular block is consistently pushing your output toward a color cast or a composition habit you don't want, you scale that block down here and every LoRA and every prompt afterward inherits the fix.
What it is and why you'd reach for it
Qwen-Image's DiT has 60 blocks, and this node gives each one an independent strength multiplier from -2 to 2, with 1.0 as unchanged. The distinction that matters is base model editing versus the pack's LoRA-focused selective loaders: this happens upstream, so a LoRA you apply afterward is patching your already-adjusted model rather than the two fighting for the same territory. It's the coarse, per-block sibling of a finer control scheme - this pack doesn't ship a Qwen sub-component debiaser the way it does for Z-Image and Flux Klein, so block-level is currently the deepest control available for Qwen's base model specifically.
How it works
Unlike Z-Image's layer editor, which the pack documents with named zones (early/mid/late), the Qwen version's node description doesn't spell out block-by-block roles the same way - you're working from the analysis output and experimentation rather than a pre-written map. The preset options give you a starting shortcut (Late Only 45-59, Half Strength) that at least matches the general pattern seen elsewhere in this pack's architecture coverage, where later blocks tend to carry more fine-detail influence and earlier ones more structural.
Inputs and outputs that matter
- model - the Qwen-Image checkpoint to edit.
- preset - Default, All Off, Half Strength, Late Only (45-59), or Custom.
- block_0 through block_59, each with a toggle and a -2 to 2 strength slider, plus other for weights outside the 60 numbered blocks.
- save_preset_name / delete_preset_name (optional) - name and save a toggle configuration you like, or remove a saved one.
- save_model / save_path / save_filename (optional) - export the edited checkpoint as a new
.safetensorsfile. - source_model_path (optional) - points the save operation at the original model's location.
- Outputs: model (patched, feed to your sampler or a LoRA loader downstream), analysis (text summary of what's applied), analysis_json (structured data for chaining to another node).
Installing it
ComfyUI Manager: search "Realtime LoRA Trainer." Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/ShootTheSound/comfyUI-Realtime-Lora
Restart ComfyUI. Works immediately - no additional install for model layer editors, same as the pack's loaders and analyzers.
Troubleshooting
Zeroed a block hoping for "no effect" and got artifacts instead. A strength of exactly 0.0 is a much bigger disruption to the model than a subtle scale-down - the pack's sibling debiaser nodes state this explicitly for the finer sub-component controls, and the same logic applies at block level here. Stay in roughly the 0.5-1.5 range unless you're deliberately stress-testing.
Applied this after a LoRA loader and results got unpredictable. This node is meant to sit upstream of any LoRA - editing the base checkpoint, then letting a LoRA patch on top of your edited version. Put it after a LoRA loader instead and you're scaling the LoRA's own contribution unevenly, which isn't what the block guide (or your intuition about what each block does) is built around.
Saved a preset but it's gone next session. Presets save via save_preset_name, but double-check the save actually completed - if browser_presets_json isn't being persisted by your ComfyUI setup (some multi-user or containerized deployments reset browser-local state between sessions), the preset only exists for that session's node instance.
Inputs (131)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | Model from LoadCheckpoint or LoadDiffusionModel | |
| preset | COMBO | Default | Quick preset selection. Individual controls below override when changed. |
| block_0 | BOOLEAN | true | — |
| block_0_str | FLOAT | 1.00-2–2 | — |
| block_1 | BOOLEAN | true | — |
| block_1_str | FLOAT | 1.00-2–2 | — |
| block_2 | BOOLEAN | true | — |
| block_2_str | FLOAT | 1.00-2–2 | — |
| block_3 | BOOLEAN | true | — |
| block_3_str | FLOAT | 1.00-2–2 | — |
| block_4 | BOOLEAN | true | — |
| block_4_str | FLOAT | 1.00-2–2 | — |
| block_5 | BOOLEAN | true | — |
| block_5_str | FLOAT | 1.00-2–2 | — |
| block_6 | BOOLEAN | true | — |
| block_6_str | FLOAT | 1.00-2–2 | — |
| block_7 | BOOLEAN | true | — |
| block_7_str | FLOAT | 1.00-2–2 | — |
| block_8 | BOOLEAN | true | — |
| block_8_str | FLOAT | 1.00-2–2 | — |
| block_9 | BOOLEAN | true | — |
| block_9_str | FLOAT | 1.00-2–2 | — |
| block_10 | BOOLEAN | true | — |
| block_10_str | FLOAT | 1.00-2–2 | — |
| block_11 | BOOLEAN | true | — |
| block_11_str | FLOAT | 1.00-2–2 | — |
| block_12 | BOOLEAN | true | — |
| block_12_str | FLOAT | 1.00-2–2 | — |
| block_13 | BOOLEAN | true | — |
| block_13_str | FLOAT | 1.00-2–2 | — |
| block_14 | BOOLEAN | true | — |
| block_14_str | FLOAT | 1.00-2–2 | — |
| block_15 | BOOLEAN | true | — |
| block_15_str | FLOAT | 1.00-2–2 | — |
| block_16 | BOOLEAN | true | — |
| block_16_str | FLOAT | 1.00-2–2 | — |
| block_17 | BOOLEAN | true | — |
| block_17_str | FLOAT | 1.00-2–2 | — |
| block_18 | BOOLEAN | true | — |
| block_18_str | FLOAT | 1.00-2–2 | — |
| block_19 | BOOLEAN | true | — |
| block_19_str | FLOAT | 1.00-2–2 | — |
| block_20 | BOOLEAN | true | — |
| block_20_str | FLOAT | 1.00-2–2 | — |
| block_21 | BOOLEAN | true | — |
| block_21_str | FLOAT | 1.00-2–2 | — |
| block_22 | BOOLEAN | true | — |
| block_22_str | FLOAT | 1.00-2–2 | — |
| block_23 | BOOLEAN | true | — |
| block_23_str | FLOAT | 1.00-2–2 | — |
| block_24 | BOOLEAN | true | — |
| block_24_str | FLOAT | 1.00-2–2 | — |
| block_25 | BOOLEAN | true | — |
| block_25_str | FLOAT | 1.00-2–2 | — |
| block_26 | BOOLEAN | true | — |
| block_26_str | FLOAT | 1.00-2–2 | — |
| block_27 | BOOLEAN | true | — |
| block_27_str | FLOAT | 1.00-2–2 | — |
| block_28 | BOOLEAN | true | — |
| block_28_str | FLOAT | 1.00-2–2 | — |
| block_29 | BOOLEAN | true | — |
| block_29_str | FLOAT | 1.00-2–2 | — |
| block_30 | BOOLEAN | true | — |
| block_30_str | FLOAT | 1.00-2–2 | — |
| block_31 | BOOLEAN | true | — |
| block_31_str | FLOAT | 1.00-2–2 | — |
| block_32 | BOOLEAN | true | — |
| block_32_str | FLOAT | 1.00-2–2 | — |
| block_33 | BOOLEAN | true | — |
| block_33_str | FLOAT | 1.00-2–2 | — |
| block_34 | BOOLEAN | true | — |
| block_34_str | FLOAT | 1.00-2–2 | — |
| block_35 | BOOLEAN | true | — |
| block_35_str | FLOAT | 1.00-2–2 | — |
| block_36 | BOOLEAN | true | — |
| block_36_str | FLOAT | 1.00-2–2 | — |
| block_37 | BOOLEAN | true | — |
| block_37_str | FLOAT | 1.00-2–2 | — |
| block_38 | BOOLEAN | true | — |
| block_38_str | FLOAT | 1.00-2–2 | — |
| block_39 | BOOLEAN | true | — |
| block_39_str | FLOAT | 1.00-2–2 | — |
| block_40 | BOOLEAN | true | — |
| block_40_str | FLOAT | 1.00-2–2 | — |
| block_41 | BOOLEAN | true | — |
| block_41_str | FLOAT | 1.00-2–2 | — |
| block_42 | BOOLEAN | true | — |
| block_42_str | FLOAT | 1.00-2–2 | — |
| block_43 | BOOLEAN | true | — |
| block_43_str | FLOAT | 1.00-2–2 | — |
| block_44 | BOOLEAN | true | — |
| block_44_str | FLOAT | 1.00-2–2 | — |
| block_45 | BOOLEAN | true | — |
| block_45_str | FLOAT | 1.00-2–2 | — |
| block_46 | BOOLEAN | true | — |
| block_46_str | FLOAT | 1.00-2–2 | — |
| block_47 | BOOLEAN | true | — |
| block_47_str | FLOAT | 1.00-2–2 | — |
| block_48 | BOOLEAN | true | — |
| block_48_str | FLOAT | 1.00-2–2 | — |
| block_49 | BOOLEAN | true | — |
| block_49_str | FLOAT | 1.00-2–2 | — |
| block_50 | BOOLEAN | true | — |
| block_50_str | FLOAT | 1.00-2–2 | — |
| block_51 | BOOLEAN | true | — |
| block_51_str | FLOAT | 1.00-2–2 | — |
| block_52 | BOOLEAN | true | — |
| block_52_str | FLOAT | 1.00-2–2 | — |
| block_53 | BOOLEAN | true | — |
| block_53_str | FLOAT | 1.00-2–2 | — |
| block_54 | BOOLEAN | true | — |
| block_54_str | FLOAT | 1.00-2–2 | — |
| block_55 | BOOLEAN | true | — |
| block_55_str | FLOAT | 1.00-2–2 | — |
| block_56 | BOOLEAN | true | — |
| block_56_str | FLOAT | 1.00-2–2 | — |
| block_57 | BOOLEAN | true | — |
| block_57_str | FLOAT | 1.00-2–2 | — |
| block_58 | BOOLEAN | true | — |
| block_58_str | FLOAT | 1.00-2–2 | — |
| block_59 | BOOLEAN | true | — |
| block_59_str | FLOAT | 1.00-2–2 | — |
| other | BOOLEAN | true | — |
| other_str | FLOAT | 1.00-2–2 | — |
| save_preset_nameopt | STRING | Enter preset name, then click Save Preset button (or leave for file sync on execute) | |
| delete_preset_nameopt | STRING | Preset to delete (filled automatically by Delete button) | |
| browser_presets_jsonopt | STRING | {} | JSON of all browser presets (auto-filled by JS for sync) |
| save_modelopt | BOOLEAN | false | Save modified model to disk (large files!) |
| save_pathopt | STRING | Directory to save modified model | |
| save_filenameopt | STRING | Filename for saved model (timestamp added) | |
| source_model_pathopt | STRING | Path to original model file (for copying metadata). Required for saved model to load correctly. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| model | MODEL | Model with block modifications applied |
| analysis | STRING | Text analysis of model structure |
| analysis_json | STRING | JSON analysis data |