D2 Load Diffusion Model Set
One loader for the unet + VAE + CLIP triple
- d2_pipe
- model
- clip
- vae
- ckpt_name
- ckpt_hash
- ckpt_fullpath
- d2_pipe
Modern architectures like SD3 and Flux don't come as one tidy checkpoint file - they're split into a diffusion model (UNet/DiT), a separate VAE, and a separate text encoder (CLIP/T5). Stock ComfyUI makes you drag in three loaders and wire them together every single time. D2 Load Diffusion Model Set merges Load Diffusion Model + Load VAE + Load CLIP into a single node that spits out model, clip, and vae together - plus a d2_pipe so a single wire carries the whole set into a D2 KSampler.
That last bit is the point. With the d2_pipe, "connect the loader to the sampler" becomes one wire instead of three, which is exactly the "slightly convenient" design goal the author states for the pack. It's the split-architecture counterpart to D2 Checkpoint Loader (which covers the monolith case).
The inputs
unet_name- pick from yourdiffusion_modelsfolder.weight_dtype-default,fp8_e4m3fn,fp8_e4m3fn_fast, orfp8_e5m2. The fp8 options trade a little quality for big VRAM savings on large models; if it fits in fp16/default, just use that, but the fp8 path is a legitimate "make Flux fit on a smaller card" lever.vae_name- from your VAE list.clip_name- fromtext_encoders.clip_type- matches the standard Load CLIP (e.g.sd3orflux), populated from ComfyUI's own options so it tracks version changes.d2_pipe- optional input to merge into an existing pipe (for XY Plot loops).
Outputs
model, clip, vae, then the receipts: ckpt_name (actually the unet filename - named ckpt_name to match D2 Checkpoint Loader), ckpt_hash, ckpt_fullpath, and d2_pipe.
Installing it
ComfyUI Manager → search "D2-nodes-ComfyUI" → install, or:
cd ComfyUI/custom_nodes
git clone https://github.com/da2el-ai/D2-nodes-ComfyUI
Restart. The pack itself downloads no models - you supply the unet/VAE/text-encoder files, which are typically multi-GB, so budget disk space. Deps are just piexif and charset-normalizer. Since v32.0.0 the pack needs a recent ComfyUI (V3 schema); older builds should pin before 32.0.0.
Where people get burned
The classic: you load a model, clip, and VAE from different sources and they silently don't match (e.g. a Flux unet with an SDXL text encoder). This node can't police that - it just loads what you point it at. Second: ckpt_name outputs the unet's filename, not an actual checkpoint name, so if you're feeding it into filename templates expecting the checkpoint, be aware of what it actually holds. Otherwise it's the loader to reach for the moment you're working with a split-architecture model and a D2 KSampler.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| unet_name | COMBO | 0 options: | |
| weight_dtype | COMBO | 4 options: default, fp8_e4m3fn, fp8_e4m3fn_fast, fp8_e5m2 | |
| vae_name | COMBO | 1 options: pixel_space | |
| clip_name | COMBO | 0 options: | |
| clip_type | COMBO | 28 options: stable_diffusion, stable_cascade, sd3, stable_audio, mochi, ltxv, +22 | |
| d2_pipeopt | D2_TD2Pipe | — |
Outputs (7)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |
| clip | CLIP | — |
| vae | VAE | — |
| ckpt_name | STRING | — |
| ckpt_hash | STRING | — |
| ckpt_fullpath | STRING | — |
| d2_pipe | D2_TD2Pipe | — |