Save LoRA Weights
ComfyUI's native 'export my trained LoRA' node, still wearing its experimental badge
- lora
Save LoRA Weights is ComfyUI's built-in "write my trained LoRA to a file" node. For years, the answer to "how do I save a LoRA in ComfyUI?" was "you don't - train with Kohya or ai-toolkit outside ComfyUI and copy the file in." This node is part of the recent effort to close that gap: native training nodes in ComfyUI itself, with SaveLoRA as the export step that turns the training result into a .safetensors you can actually load with a LoRA loader.
It's a small node with one big warning attached, and the warning is in the node's own tooltip - which is the author's voice and should be trusted: "The LoRA model to save. Do not use the model with LoRA layers." That's the whole game. The lora input expects a raw LORA_MODEL - the bare low-rank weight tensors that a training node produces - not a MODEL that already has LoRA layers applied to it. Feed it the wrong thing and you'll either error out or save garbage. The distinction is the same one that trips people in the KB's LoRA docs: a LoRA is a patch, a small adapter, not a model; the file you save must be the adapter weights, not the patched network.
How it works
It takes the LORA_MODEL tensors and writes them with safetensors into your output folder. The filename convention is where the personality lives: if you leave the optional steps input empty you get {prefix}_{counter}_.safetensors; supply a step count and the file becomes {prefix}_{steps}_steps_{counter}_.safetensors - a genuinely useful habit if you train multiple epochs, since the last epoch is famously not always the best (the KB's training docs make the save-intermediate-epochs point explicitly).
ComfyUI/
└── output/
└── loras/
└── ComfyUI_trained_lora_00001_.safetensors
# find what it saved:
find ~/ComfyUI/output/loras -name "*.safetensors" | tail
Note it saves to output/loras/, not models/loras/ - the same output-vs-models split that every save node in this family has. Your LoRA loader looks in models/loras/; move the file there (or change the prefix) before trying to use it in a normal generation.
The inputs that matter
lora(LORA_MODEL) - the trained adapter weights. Comes from ComfyUI's training nodes; not a MODEL, and not a model with LoRA layers.prefix(STRING, defaultloras/ComfyUI_trained_lora) - output folder and base name.steps(INT, optional) - training step count, used in the filename as{steps}_steps. Nice-to-have, purely for keeping runs identifiable.
Where people get burned
The LORA_MODEL-vs-MODEL confusion is the #1 failure, and it's why the tooltip exists. Second is the location: output/loras, not models/loras. Third is expectations - this node only saves; it doesn't train, and it doesn't make a bad training run good. ComfyUI's native training tooling is still experimental, so treat the whole pipeline (train → SaveLoRA) as bleeding-edge: if the KB's training lore holds, most people still train with ai-toolkit or OneTrainer outside ComfyUI and only use this when they want the whole loop in-graph.
How you get it
Ships with ComfyUI core under model/merging, and it's explicitly marked experimental - it's part of the new native training node set, so update ComfyUI if you don't see it. No pack, no install.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| lora | LORA_MODEL | The LoRA model to save. Do not use the model with LoRA layers. | |
| prefix | STRING | loras/ComfyUI_trained_lora | The prefix to use for the saved LoRA file. |
| stepsopt | INT | Optional: The number of steps the LoRA has been trained for, used to name the saved file. |
Outputs (0)
No outputs