Model Loader
The anti-spaghetti way to load a UNet
- model
- clip
- vae
- audio_vae
- model_name
Not everyone wants the all-in-one. If the Smart Model Loader feels like a Swiss Army knife you don't need to carry, Model Loader [Eclipse] is the plain screwdriver: the same model-loading engine from the same pack, but it hands you raw sockets instead of one bundled PIPE. You get model, clip, vae, audio_vae, and model_name straight out, ready to wire into a normal KSampler, CLIP Text Encode, and VAE Decode like you've always done.
It shines for UNet-only and quantized setups. Flux, SD3, and AuraFlow are usually distributed as standalone diffusion models with no baked CLIP or VAE - so you need a loader that handles that file type directly, then pair it with the pack's CLIP Loader and VAE Loader. For a stock checkpoint with everything baked in, either loader works; the standalone version just keeps the rest of your graph conventional.
The inputs that matter
There are a lot of them, but you'll touch a handful. model_type switches the whole personality of the node - Standard Checkpoint, UNet, Nunchaku (Flux/Qwen/ZImage), or GGUF - and the relevant name field lights up: ckpt_name, unet_name, nunchaku_name, qwen_name, zimage_name, or gguf_name. Then:
- LoRA slots -
lora_count(1–3), each withlora_switch_N,lora_name_N,lora_weight_N. Model-only patching, no separate CLIP weight. sampling_method- pick the architecture and the loader applies the correct scheduler shift for you: SD3 shift 3.0, AuraFlow 1.73, Flux max_shift 1.15, Stable Cascade 2.0, LCM distilled, LTXV for video. Leave on None for a standard model and forget it.blocks_to_swap- GPU→CPU transformer offload. The tooltip even gives suggested counts per architecture (Flux ~10 of 57, SD3 ~8 of 24, Wan ~10 of 40). Set to 0 to disable.offload_embeddingsgrabs another ~100–300MB.ltx_text_encoder- the special one. For LTX2/LTXV, point it at a Gemma text encoder (GGUF or safetensors) and it combines it with the model file's baked text projection to build a correct LTXAV CLIP.
Outputs
model→ KSamplerclip→ CLIP Text Encode (None for UNet/Nunchaku/GGUF - add the CLIP Loader)vae→ VAE Decode (None for those same types - add the VAE Loader)audio_vae→ LTXV/LTX2 audio decodemodel_name→ handy for filenames or metadata
Installing
Same story as the whole pack - Manager, search ComfyUI Smart Model Loader, or:
cd ComfyUI/custom_nodes
git clone https://github.com/r-vage/ComfyUI_SmartModelLoader.git
cd ComfyUI_SmartModelLoader
python -m pip install -r requirements.txt
Restart ComfyUI. Nunchaku and GGUF types need ComfyUI-Nunchaku and ComfyUI-GGUF in custom_nodes; without them the quantized options are just disabled and standard checkpoints still load.
Common issues
- clip comes out None on a UNet - that's expected, not a bug. The model file genuinely has no text encoder. Pair with CLIP Loader and set
clip_typeto match (Flux wants 2 CLIP modules). - VRAM OOM - go GGUF or Nunchaku, or raise
blocks_to_swapbefore you buy a new card. - Weird sampler behavior on Flux - set
sampling_methodto Flux so the shift is computed for your resolution instead of using a generic default.
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 (5)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |
| clip | CLIP | — |
| vae | VAE | — |
| audio_vae | VAE | — |
| model_name | STRING | — |