Nodes/ComfyUI/Create Hook Model as LoRA
ComfyUI Node Runs on cloud

Create Hook Model as LoRA

Run a whole checkpoint as a maskable, schedulable weight patch

By Comfy-Org·Created 4 years ago·Updated about an hour ago· 129,865
Create Hook Model as LoRA
  • prev_hooks
  • HOOKS
ckpt_name
strength_model1.00
strength_clip1.00

Here's the trick that makes people stop and stare: take an entire checkpoint - a whole finetuned model - and apply it like a LoRA. CreateHookModelAsLora ("Create Hook Model as LoRA") loads any checkpoint in your models/checkpoints folder and converts its weights into a hook, which means that full model can now be masked to a region, scheduled across the sampling timeline, faded in and out, or stacked on top of your current model at fractional strength. The name isn't hype; that's genuinely what it does.

How the trick works

Mechanically it's elegant. The node loads the checkpoint, grabs its weights, and registers them as a model_as_lora patch. At sample time, ComfyUI takes the target model's original weight at each key and subtracts it from the checkpoint's weight - the difference is the "LoRA diff," and it gets scaled by your strength. So instead of training a LoRA to capture a style or an identity, you can point at a checkpoint that already has it baked in and apply its difference on top of whatever base you're running. Same math, no training run.

It's the same engine as CreateHookLora, just fed a checkpoint instead of a .safetensors LoRA. Output is a single HOOKS group.

Inputs you'll touch

  • ckpt_name - dropdown of everything in models/checkpoints. This is the whole model you're borrowing.
  • strength_model - how hard the model diff hits the UNet/DiT. Default 1.0, range −20 to 20. Negative inverts the patch.
  • strength_clip - same, but for the CLIP text encoder weights. If you don't want the checkpoint's text encoder influencing your prompt, drop this to 0 (or use the "MO" variant, which pins it there for you).
  • prev_hooks - an existing HOOKS group to chain onto, so you can stack this patch on top of other hooks in one wire.

The node caches the last-loaded checkpoint's weights, so re-running with the same model doesn't reload it from disk. First run on a big checkpoint is slow and RAM-hungry, though - it holds a second full model's weights in memory for the whole of that cache lifetime.

Why you'd reach for it

The flagship use is regional style: mask one side of the image and apply a stylized checkpoint to that region while the rest stays on your base model. Community experiments doing exactly this - two character LoRAs plus a ControlNet for composition - produced results people called "glorious," alongside the honest caveat that without a global prompt the regions can look like two images stitched together. Scheduling works too: hook it to keyframes and the full model's influence fades in at 20% through sampling and out at 60%, which is how you get a model that "takes over the scene" only for the middle of the generation.

Getting it

Ships with ComfyUI core, nothing to install, though it's marked experimental. The checkpoint you point it at lives in models/checkpoints - same folder your regular loaders read. Fair warning: this is the expensive sibling of the family. Every hooked region runs its own model pass, and a multi-region hook workflow is noticeably slower than a plain generation - the people who benchmarked it reported several-fold slowdowns even on 4090-class cards. For a one-off it's fine; as a daily habit, budget the time.

It's a node you'll reach for when a LoRA doesn't exist yet, but the checkpoint does. That's a surprisingly common situation, and this is the only built-in that covers it.

Categoryadvanced/hooks/create

Inputs (4)

NameTypeDefaultDescription
ckpt_nameCOMBO0 options:
strength_modelFLOAT1.00-20–20
strength_clipFLOAT1.00-20–20
prev_hooksoptHOOKS

Outputs (1)

NameTypeDescription
HOOKSHOOKS