SP_ModelLoader
SP_ModelLoader — the bare-bones loader when you want to wire everything else yourself
- sp_pipe
- model
- clip
- vae
The other SP loaders in this pack do everything - model, prompt, latent, the works. SP_ModelLoader is the deliberate exception: it loads the unet, the text encoder(s), and the VAE, and then stops. No prompt field, no latent, no LoRA. You get a sp_pipe, model, clip, and vae out, and you take it from there yourself.
That sounds like less, but it's the most flexible of the five. Because it doesn't commit to a prompt or resolution, it's the node you reach for when you want to hand the model to something the specialized loaders can't do - a ControlNet rig, an img2img flow where the latent comes from an encode, a LoRA applied after loading, or a workflow where you condition with a different prompt per branch. It's also the one to use when you're building a reusable template and don't want the loader silently making assumptions about your output size.
Mechanically it's the same group-node story as the rest of the pack: at execution time ComfyUI's GraphBuilder expands it into UNETLoader (or the GGUF/bitsandbytes variant for quantized dtypes), CLIPLoader/DualCLIPLoaderGGUF/TripleCLIPLoaderGGUF depending on how many clips you name, and VAELoader. The one dial that shapes everything is model_type (sd, sd3, flux, hunyuan_video). It does two things: it picks the clip-pairing type (so sd gets the SDXL-style DualCLIPLoader pairing), and it stamps the pipe's hidden _model_type flag. That flag matters downstream - the pack's SP_KSampler reads it to decide whether to treat the model as guidance-distilled (Flux and Hunyuan Video) and apply guidance embedding with cfg pinned at 1.0, versus a normal CFG model like SD/SDXL. Get the model_type wrong and the sampler will hand your distilled Flux a CFG 7 it can't use.
Inputs you'll actually set:
- unet_name -
diffusion_modelsplusunet_gguf. - weight_dtype - same ladder as the sibling loaders: fp8 variants,
nf4-float8_*, orgguf. For a 12B+ Flux or a video model on a mid-range card, this is where the fit-or-don't decision gets made - Q8 is effectively fp16 at half the size (see the KB's GGUF panel). - clip_name1 / clip_name2 / clip_name3 - one clip, two, or three. Three is the SD3 family (t5xxl + clip_l + clip_g); two is Flux/SDXL;
clip_name2/clip_name3default toNoneso you can build up gradually. - vae_name -
pixel_spaceand whatever else you have inmodels/vae.
Install is the pack-wide recipe:
cd ComfyUI/custom_nodes
git clone https://github.com/bananasss00/ComfyUI-SP-Nodes
or ComfyUI Manager → SP-Nodes, then restart. The gotcha to know before you build around it: the clip loaders are always the GGUF ones, so you need ComfyUI-GGUF installed and GGUF text-encoder files on disk even if your unet is fp8 - and the nf4 dtypes additionally want the author's ComfyUI_bitsandbytes_NF4-Lora pack. The stock fp8 path with a plain fp8 clip, though, runs with zero extra packs. If you only need a clean unet+clip+vae with no opinions, this is the SP loader to grab.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| unet_name | COMBO | 0 options: | |
| weight_dtype | COMBO | 6 options: fp8_e4m3fn, fp8_e4m3fn_fast, fp8_e5m2, nf4-float8_e4m3fn, nf4-float8_e5m2, gguf | |
| vae_name | COMBO | 1 options: pixel_space | |
| clip_name1 | COMBO | 0 options: | |
| clip_name2 | COMBO | 1 options: None | |
| clip_name3 | COMBO | 1 options: None | |
| model_type | COMBO | 4 options: sd, sd3, flux, hunyuan_video |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| sp_pipe | SP_PIPE | — |
| model | MODEL | — |
| clip | CLIP | — |
| vae | VAE | — |