D2 Checkpoint Loader
A plain checkpoint loader that actually tells you which file it loaded
- d2_pipe
- model
- clip
- vae
- ckpt_name
- ckpt_hash
- ckpt_fullpath
- sampling
- d2_pipe
The stock CheckpointLoaderSimple gives you model, clip, and VAE and leaves it at that. D2 Checkpoint Loader does the same loading but hands you the receipts: the checkpoint's filename, its hash, its full path on disk, and the sampling mode that ended up being applied - plus a d2_pipe output so one wire carries the whole loaded set into a D2 KSampler. If you've ever spent a morning wondering which of three folders a workflow actually pulled its model from, you'll understand why this exists.
It's part of the D2 pack's "pipe" philosophy: instead of drawing three wires out of a loader, you get one d2_pipe that bundles model / clip / vae / ckpt_name, and the D2 KSampler just takes it in. Fewer wires, and the sampler still knows which checkpoint you're on for filename templating and XY plot runs.
What the extra knobs do
ckpt_name- the dropdown of checkpoints, same list as the core loader.auto_vpred(default on) - if the filename contains "vpred", it automatically switches tov_predictionsampling and patches the model with aRescaleCFGat yourmultiplier. This is the one beginners should leave alone until they're dealing with v-prediction checkpoints.sampling-normal/eps/v_prediction/lcm/x0, applied viaModelSamplingDiscretewhen it's notnormal.zsnr- toggles zero-SNR sigma discretization. This is the setting the Illustrious/NoobAI vpred community pairs with v_prediction (KB context:ModelSamplingDiscreteset tov_predictionwithdiscrete_zsnrenabled, and aRescaleCFGhelping at low CFG). If you're not on a vpred model, leave it false.multiplier(default 0.6) - the RescaleCFG strength when a sampling patch is applied.
The v-prediction machinery is the same stuff you'd hand-wire with ModelSamplingDiscrete and RescaleCFG nodes in stock ComfyUI; this node just does it for you when the filename smells like vpred. For a normal eps checkpoint, it behaves exactly like the core loader plus extra string outputs.
Outputs
model, clip, vae as usual, then ckpt_name, ckpt_hash (an actual file hash - handy for logging or exact reproduction), ckpt_fullpath, sampling (the resolved mode, so you can see if auto_vpred kicked in), and d2_pipe. Wire that last one to a D2 KSampler and you're done with connections.
Installing it
Via ComfyUI Manager, search "D2-nodes-ComfyUI", or:
cd ComfyUI/custom_nodes
git clone https://github.com/da2el-ai/D2-nodes-ComfyUI
Then restart. No extra Python deps beyond piexif and charset-normalizer, no model downloads. Since v32.0.0 the pack needs ComfyUI's newer V3 schema; on an old build, use a version before 32.0.0.
Watch out for
The d2_pipe input on this node is for merging into an existing pipe (used with XY Plot Easy loops), not something you need day one. And remember: auto_vpred keys off the filename, so a vpred model renamed to something innocuous won't get the patch - and conversely a normal model with "vpred" in its name will. Check the sampling output if behavior surprises you.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| ckpt_name | COMBO | 0 options: | |
| auto_vpred | BOOLEAN | true | — |
| sampling | COMBO | 5 options: normal, eps, v_prediction, lcm, x0 | |
| zsnr | BOOLEAN | false | — |
| multiplier | FLOAT | 0.600–1 | — |
| d2_pipeopt | D2_TD2Pipe | — |
Outputs (8)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |
| clip | CLIP | — |
| vae | VAE | — |
| ckpt_name | STRING | — |
| ckpt_hash | STRING | — |
| ckpt_fullpath | STRING | — |
| sampling | STRING | — |
| d2_pipe | D2_TD2Pipe | — |