Model Reporting
Plot a single layer of a model before you trust a merge
- model
- STRING
- IMAGE
Merging is a numbers game you normally play blind. You blend two checkpoints, generate, and judge the result by eye - and when a merge produces garbage, you have no idea whether it was the ratio, the block selection, or a layer that got mangled. DM_ModelReporting is the x-ray: point it at a model, name a layer, and it renders that layer's weights as a plot so you can actually see what's in there before and after a merge.
What it does
The node takes a MODEL and two settings:
layer- the exact state-dict key of the tensor you want to visualize, likediffusion_model.out.2.weightordiffusion_model.input_blocks.1.1.transformer_blocks.0.attn1.to_q.weight.scaling- how to normalize the values for display:mean(default),log,max,min,std, ornone. For most layersmeanis fine;logis handy when you have a few huge outliers drowning everything else;noneshows raw values, which are usually less readable.
It renders the tensor as a heatmap via matplotlib and hands it back as an IMAGE output, ready to drop into a preview node or save. The STRING output exists in the schema but the current code's real payload is the image - the plot is the product.
Why you'd actually use this
Two honest use cases. First, sanity-checking a merge: plot a critical layer (say, a cross-attention to_q in block 3) in model A, in model B, and in the merged result, and confirm the output looks like a plausible blend rather than an incoherent soup. That's the difference between debugging a merge in ten minutes and chasing ghosts for an hour.
Second, understanding which layers a merge actually touched. Pair it with the mask reporting node and you can verify that the parameters you meant to protect came through intact.
The gotcha: exact names or nothing
This node is unforgiving about layer names, and it throws Layer not found in model if the key doesn't match exactly - including the diffusion_model. prefix. That's by design, but it means you need the real key. Easiest source: the Mask Reporting node's details report, or just the model's own state-dict keys if you're comfortable poking around. Leave layer empty and it will error out too - there's no "pick a random one for me."
Installing it
Part of the 54rt1n/ComfyUI-DareMerge pack - install once, get ~25 nodes. Via ComfyUI Manager (search "ComfyUI-DareMerge") or:
cd ComfyUI/custom_nodes
git clone https://github.com/54rt1n/ComfyUI-DareMerge
then restart. This node is the reason the pack needs matplotlib, so if your plots fail to render, that's the dependency to check - pip install matplotlib in your ComfyUI environment sorts it. No model downloads involved.
The honest framing: the README itself calls the reporting nodes "not really super useful to most" - this is a debugging instrument for people who merge seriously and want to look under the hood. If you're casually blending two models and judging by eye, you probably won't use it. The moment a merge goes weird, you'll be glad it's there.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| layer | STRING | — | |
| scaling | COMBO | mean | 6 options: mean, log, max, min, std, none |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| STRING | STRING | — |
| IMAGE | IMAGE | — |