Model Loader Pipe
The same loader, one wire instead of five
- pipe
This is the same model-loading engine as Model Loader [Eclipse], with exactly one difference you care about: instead of model/clip/vae/audio_vae/model_name on separate sockets, everything comes out of a single PIPE output. Nothing about the loading itself changes - same model_type, same name dropdowns, same LoRA slots, same blocks_to_swap. You're just choosing how the result travels.
Think of it as the middle ground in this pack. The Smart Model Loader is the all-in-one that also creates your latent, sets your sampler, and manages templates. The plain Model Loader gives you direct wires for a conventional graph. Model Loader Pipe keeps your hands on the individual model files but commits to the pipe-first philosophy: one wire from here to wherever the model's actually used, with far less canvas sprawl between them.
The PIPE it emits carries model (always), clip and vae when the checkpoint has them baked, plus model_name, is_nunchaku, and - if you enabled the LoRA or CLIP-trim features - lora_names and clip_skip. So a UNet flow works too: load your diffusion model here, add CLIP Loader and VAE Loader separately, and merge everything with the pack's IO Checkpoint Loader, which takes the pipe in and unpacks every field onto individual sockets. Or skip the unpack entirely and feed the pipe straight into Eclipse KSampler (Pipe), which reads the model and VAE out of it itself.
One honest caveat before you adopt pipe-first everywhere: a single context wire is a wonderful tangle-killer, but it also hides which version of each value is inside. If you unpack model from a pipe that was assembled before a LoRA got applied, you'll silently run base weights - the connection is present, the contents are wrong. It's the same trade every context-bus design makes, and it's worth knowing about it before it bites you mid-experiment. Keep the pipe line short and don't be shy about unpacking at the point where you're actively iterating.
Installing
Same as every node in this pack:
cd ComfyUI/custom_nodes
git clone https://github.com/r-vage/ComfyUI_SmartModelLoader.git
cd ComfyUI_SmartModelLoader
python -m pip install -r requirements.txt
or search ComfyUI Smart Model Loader in ComfyUI Manager. Restart ComfyUI. Nunchaku and GGUF model types need the respective ComfyUI-Nunchaku and ComfyUI-GGUF extensions; standard checkpoints and UNets don't.
When to reach for it
- You want a single authoritative model source feeding several consumers (KSampler + VAE Decode + metadata) without three copies of the file selected.
- You're building a modular UNet/quantized graph and want one bundle to carry through IO Checkpoint Loader.
- You like the Smart Model Loader's pipe style but find the chip bar and templates overkill for a fixed setup.
It's a variant node, so there's no deep troubleshooting lore: if the pipe comes out empty, the usual suspects are a model_type that doesn't match your file, a missing extension for quantized formats, or a checkpoint with no baked CLIP/VAE when you expected one - which shows up as clip/vae being None inside the pipe rather than on a socket you can see.
Inputs (44)
| Name | Type | Default | Description |
|---|---|---|---|
| features | STRING | memory_cleanup | Comma-separated feature list. JS combo-chip replaces this widget. |
| model_type | COMBO | Standard Checkpoint | Select model format |
| ckpt_name | COMBO | None | Select checkpoint file |
| unet_name | COMBO | None | Select UNet diffusion model |
| nunchaku_name | COMBO | None | Select Nunchaku Flux model |
| qwen_name | COMBO | None | Select Nunchaku Qwen model |
| zimage_name | COMBO | None | Select Nunchaku ZImage model |
| gguf_name | COMBO | None | Select GGUF model |
| weight_dtype | COMBO | default | Weight dtype for UNet model |
| data_type | COMBO | bfloat16 | Model data type for Nunchaku |
| cache_threshold | FLOAT | 0.0000–1 | Cache threshold for Nunchaku |
| attention | COMBO | flash-attention2 | Attention implementation |
| i2f_mode | COMBO | enabled | GEMM implementation |
| cpu_offload | COMBO | auto | CPU offload |
| num_blocks_on_gpu | INT | 301–60 | Blocks on GPU (Nunchaku Qwen/ZImage) |
| use_pin_memory | COMBO | enable | Use pinned memory |
| gguf_dequant_dtype | COMBO | default | Dequantization dtype |
| gguf_patch_dtype | COMBO | default | LoRA patch dtype |
| gguf_patch_on_device | BOOLEAN | false | Apply patches on GPU |
| enable_clip_layer | BOOLEAN | true | Trim baked CLIP to specific layer (Standard Checkpoint only) |
| stop_at_clip_layer | INT | -2-24–-1 | CLIP layer to stop at |
| lora_count | COMBO | 1 | Number of LoRA slots |
| lora_switch_1 | BOOLEAN | false | Enable LoRA 1 |
| lora_name_1 | COMBO | None | LoRA 1 file |
| lora_weight_1 | FLOAT | 1.00-10–10 | LoRA 1 model weight |
| lora_switch_2 | BOOLEAN | false | Enable LoRA 2 |
| lora_name_2 | COMBO | None | LoRA 2 file |
| lora_weight_2 | FLOAT | 1.00-10–10 | LoRA 2 model weight |
| lora_switch_3 | BOOLEAN | false | Enable LoRA 3 |
| lora_name_3 | COMBO | None | LoRA 3 file |
| lora_weight_3 | FLOAT | 1.00-10–10 | LoRA 3 model weight |
| sampling_method | COMBO | None | Sampling method: SD3 (shift=3.0), AuraFlow (shift=1.73), Flux (max_shift=1.15), Stable Cascade (shift=2.0), LCM (distilled), ContinuousEDM/V (continuous sampling), LTXV (video) |
| sampling_subtype | COMBO | eps | Subtype for ContinuousEDM sampling |
| shift | FLOAT | 3.000–100 | Universal shift parameter (SD3: 3.0, AuraFlow: 1.73, Flux max_shift: 1.15, Stable Cascade: 2.0) |
| base_shift | FLOAT | 0.500–100 | Base shift for Flux/LTXV sampling (default: 0.5) |
| sampling_width | INT | 102416–32768 | Width for Flux sampling shift calculation |
| sampling_height | INT | 102416–32768 | Height for Flux sampling shift calculation |
| original_timesteps | INT | 501–1000 | Original timesteps for LCM sampling (default: 50) |
| zsnr | BOOLEAN | false | Enable zero-terminal SNR for LCM sampling |
| sigma_max | FLOAT | 120.0000–1000 | Maximum sigma for ContinuousEDM/V sampling (EDM: 120.0, V: 500.0) |
| sigma_min | FLOAT | 0.0020–1000 | Minimum sigma for ContinuousEDM/V sampling (EDM: 0.002, V: 0.03) |
| blocks_to_swap | INT | 50–100 | Number of transformer blocks to offload from GPU to CPU. Higher = more VRAM saved but slower inference. Suggested ~value (max total blocks): flux/chroma ~10 (max 57), sd3 ~8 (max 24-38), wan ~10 (max 30-40), hunyuan-video ~10 (max 60), ltxv ~6 (max 28), cosmos ~8 (max 28-36), zimage ~10 (max 30), qwenimage ~20 (max 60), mochi ~10 (max 48), hidream ~10 (max 48). Set to 0 to disable. |
| offload_embeddings | BOOLEAN | false | Also offload embedding and projection layers for extra VRAM savings. |
| ltx_text_encoder | COMBO | None | Optional LTX2/LTXV gemma text encoder (from the text_encoders/clip folder, GGUF or safetensors). When set, it is combined with the loaded Standard Checkpoint / UNet file's baked text-projection to build a correct LTXAV CLIP, overriding the (empty) baked CLIP. Leave as None for normal baked-CLIP behavior. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| pipe | PIPE | — |