Nodes/EasyLoRAMerger/🔥 Easy LoRA Baker
ComfyUI Node

🔥 Easy LoRA Baker

Bake It Straight Into the Checkpoint

By Terpentinas·Created 7 months ago·Updated 4 months ago· 12
🔥 Easy LoRA Baker
  • lora_data
  • model
  • clip
  • vae
  • output_path
  • forensic_report
checkpoint
lora_name
baking_methodlinear
strength1.00
weight_unet1.00
weight_te1.00
weight_clip1.00
weight_vae1.00
deviceauto
precisionauto
batch_size64
save_triggerfalse
filenamebaked_checkpoint
save_folder
metadata_modepreserve_a

Every time you load that character LoRA you also have to remember to load the base model, set the weight, and keep track of which LoRAs stack well. There's a simpler life available: bake the LoRA into the checkpoint itself and end up with one file that just works. That's the Easy LoRA Baker. It adds the LoRA's weights into a base checkpoint at the tensor level and hands you a complete MODEL + CLIP + VAE that has the concept permanently.

It's the natural end of a merge pipeline - merge two or three LoRAs in the Easy LoRA Merger, then bake the result into a checkpoint with this node. Handy for distributing a model that includes a style you can't otherwise share, or for locking in a look you never want to forget to load.

How it works

You pick a checkpoint and a LoRA, and the node adds the LoRA deltas into the checkpoint's weights - this is different from stacking LoRAs at load time, which patches the model on the fly. Once baked, there's no LoRA to load; the weights are just in the file. Because LoRAs are tiny deltas, you get to choose how hard you bake: strength (0–2) multiplies the whole adapter, and weight_unet / weight_te / weight_clip / weight_vae scale it per component so you can bake the style but leave the text encoder alone.

The baking_method choices - linear, impact_weighted, orthogonal - are different ways of folding the delta in, and for a first run linear is right. The work streams through in batch_size-sized chunks with a memory guard between batches so it doesn't blow up VRAM or RAM on big checkpoints.

There's also a RAM Guard worth understanding. With save_trigger off (preview mode), the baked result stays in memory with an automatic fallback to disk if you're near the 85% RAM threshold. With save_trigger on, it saves the .safetensors first and then lazy-loads from the file - the low-RAM path, and the one you want for a 12GB checkpoint.

Inputs that matter

  • checkpoint - the base model. Its siblings (model, clip, vae) come out the other side.
  • lora_data - wire the lora output of the Easy LoRA Merger here; it overrides the lora_name dropdown.
  • strength - start at 1.0. Baking is permanent, so test at preview before you commit.
  • precision - auto, or force fp8 to shrink the baked file.
  • save_trigger - the commitment switch. Off = in-RAM preview, on = permanent .safetensors.

Outputs: model, clip, vae (test them downstream immediately), output_path, and forensic_report.

Installing it

Manager (search "Easy LoRA Merger") or:

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

Restart ComfyUI. No model downloads.

Gotchas

The big one is obvious but worth stating: baking is one-way in practice. You can't unbake, so keep the original LoRA and checkpoint around. Also don't bake at strength 2.0 and be surprised when the output is overcooked - preview with save_trigger off, exactly like the rest of this pack. One practical note from the ecosystem: baking at high strength tends to look stronger than the same LoRA at high weight at load time, because there's no negative-weight trickery possible afterward. And if RAM is tight on a big model, use save_trigger on rather than fighting the in-memory path.

CategoryLoRA/Baking

Inputs (16)

NameTypeDefaultDescription
checkpointoptCOMBO0 options:
lora_dataoptLORALORA output from Triple Merger or LoRA-Only Merger. When connected, overrides lora_name dropdown.
lora_nameoptCOMBOPick a single LoRA from dropdown. Used only when lora_data is not connected.
baking_methodoptCOMBOlinear3 options: linear, impact_weighted, orthogonal
strengthoptFLOAT1.000–2LoRA strength multiplier
weight_unetoptFLOAT1.000–2Per-component weight for U-Net (diffusion model) keys
weight_teoptFLOAT1.000–2Per-component weight for Text Encoder keys
weight_clipoptFLOAT1.000–2Per-component weight for CLIP Vision keys
weight_vaeoptFLOAT1.000–2Per-component weight for VAE keys
deviceoptCOMBOauto3 options: auto, cuda, cpu
precisionoptCOMBOauto6 options: auto, float32, bfloat16, float16, fp8_e4m3fn, fp8_e5m2
batch_sizeoptINT641–256Number of keys to process per batch. Larger = faster but more VRAM. memory_guard() runs between batches to prevent OOM. DeviceManager.suggest_batch_size() can auto-tune based on VRAM.
save_triggeroptBOOLEANfalseWhen True: bake LoRA into checkpoint AND save as permanent .safetensors file (low RAM: saves first, then lazy-loads from file). When False: bake in-memory only (preview mode) with automatic RAM Guard fallback — connect MODEL+CLIP+VAE outputs downstream to test results before committing.
filenameoptSTRINGbaked_checkpointOutput filename (.safetensors added automatically in disk mode)
save_folderoptSTRINGCustom output folder (leave empty for default checkpoints dir)
metadata_modeoptCOMBOpreserve_a'none'=baking only, 'preserve_a'=original priority, 'preserve_b'=second-source (fallback to A), 'merge_basic'=baking priority

Outputs (5)

NameTypeDescription
modelMODEL
clipCLIP
vaeVAE
output_pathSTRING
forensic_reportSTRING