Nodes/EasyLoRAMerger/🛡️ Easy Checkpoint Studio
ComfyUI Node

🛡️ Easy Checkpoint Studio

Shrink to FP8, Strip the VAE, or Ship a GGUF

By Terpentinas·Created 7 months ago·Updated 4 months ago· 12
🛡️ Easy Checkpoint Studio
  • checkpoint_data
  • checkpoint
  • model
  • clip
  • vae
  • output_path
  • forensic_report
checkpoint
strip_vaefalse
strip_tefalse
strip_clipfalse
precisionauto
output_formatsafetensors
deviceauto
save_triggerfalse
filenameconverted_checkpoint
keep_metadatatrue
svd_modenone
svd_energy_threshold0.95
save_folder/tmp/ComfyUI/models/checkpoints

A 12GB checkpoint won't fit your card, or you want a version without the VAE, or you want a GGUF quant of a model you only have as safetensors. Easy Checkpoint Studio is the pack's "precision surgery" node for full checkpoints: it re-casts precision, strips components, runs SVD compression, remaps structure, and even exports GGUF - all in one node.

Think of it as the heavy-duty sibling of the Component Extractor. Where the extractor pulls pieces out for reuse, the Studio is about transforming a whole checkpoint into a new one that better fits your hardware or your use case.

How it works

Pick a checkpoint (or feed checkpoint_data), and the node loads it, applies your transforms, and returns a complete MODEL + CLIP + VAE. The transforms:

  • Precision. precision runs the full ladder: auto, float32, bfloat16, float16, fp8_e4m3fn, fp8_e5m2, plus int8 and int8_convrot. The int8 options save roughly half again over fp8 but need the ComfyUI-Flux2-INT8 custom node to load; int8_convrot uses a Hadamard rotation to get better quality at the same size. svd_only compresses via SVD without touching dtype.
  • Component stripping. strip_vae, strip_te (text encoder / T5 / CLIP), strip_clip (CLIP vision) - flip one and that component is gone from the output. That's how you make a lean checkpoint that assumes a shared VAE or TE at load time.
  • SVD compression. svd_mode (none / selective / full) compresses weight matrices, with svd_energy_threshold (default 0.95) controlling how much energy you keep.
  • GGUF export. output_format switches from safetensors to gguf_q8_0 / gguf_q5_0 / gguf_q4_0 block-wise quantization. Those load with city96's ComfyUI-GGUF nodes, and they're the standard path for getting a big Flux-class model to fit a 12GB card.

The GGUF options require the gguf Python package. The README calls it optional, but it's actually in the pack's requirements.txt, so installing via Manager pulls it in automatically. If it's somehow missing, the node loads fine and simply hides the GGUF options - no crash.

Inputs that matter

  • precision - for everyday shrinking, fp8_e4m3fn is the sane default: half the VRAM of fp16, quality cost close to invisible. Go lower only when you must.
  • strip_vae / strip_te / strip_clip - the surgical removal toggles.
  • output_format - leave on safetensors unless you specifically want a GGUF quant.
  • keep_metadata - on by default; turn off to drop the source's metadata from the output.
  • save_trigger - preview vs. write. Saved files get _converted appended.

Outputs: checkpoint, model, clip, vae, output_path, and a forensic_report string (feed it into Easy Text Display).

Installing it

Manager (search "Easy LoRA Merger") or:

cd ComfyUI/custom_nodes
git clone https://github.com/Terpentinas/EasyLoRAMerger

Restart ComfyUI. The gguf dependency installs with the pack; you additionally need ComfyUI-GGUF to load any GGUF you export, and ComfyUI-Flux2-INT8 if you use the int8 precisions.

Gotchas

Read the precision tooltips before you go exotic. The int8 options are the one place this pack's output won't just load in stock ComfyUI - they need their companion node, and people have been burned assuming otherwise. GGUF, by contrast, is the well-trodden path: Q8 is basically fp16 at half the size, Q5 is the last stop before visible loss, and Q4 is for 12GB cards. And a tip from how the ecosystem works: keep your original safetensors around when you export GGUF - quantizing is lossy, and re-quantizing from an already-quantized file is how quality quietly dies.

CategoryCheckpoint/Universal

Inputs (14)

NameTypeDefaultDescription
checkpointCOMBO1 options: None
strip_vaeBOOLEANfalseRemove VAE weights from the checkpoint
strip_teBOOLEANfalseRemove Text Encoder weights (CLIP/T5)
strip_clipBOOLEANfalseRemove CLIP visual encoder (if present)
precisionCOMBOautoPrecision: int8 / int8_convrot save ~50% smaller files but require ComfyUI-Flux2-INT8 custom node to load. ConvRot uses Hadamard rotation for better quality at the same file size.
output_formatCOMBOsafetensorsOutput file format: safetensors (standard) or GGUF with block-wise quantization (load with ComfyUI-GGUF nodes).
deviceCOMBOauto3 options: auto, cuda, cpu
save_triggerBOOLEANfalse
filenameSTRINGconverted_checkpoint
checkpoint_dataoptCHECKPOINT
keep_metadataoptBOOLEANtruePreserve original metadata
svd_modeoptCOMBOnoneSVD compression mode: none, selective (large weight matrices only), full (all weight matrices)
svd_energy_thresholdoptFLOAT0.950.5–1Energy threshold for automatic rank selection (0.95 = keep 95% of energy)
save_folderoptSTRING/tmp/ComfyUI/models/checkpoints

Outputs (6)

NameTypeDescription
checkpointCHECKPOINT
modelMODEL
clipCLIP
vaeVAE
output_pathSTRING
forensic_reportSTRING