HF Diffusers load LoRA
Fuse, don't fight
- pipeline
- HFD_PIPELINE
HFDLoadLora is how you put a LoRA onto a HuggingFace diffusers pipeline. It's the one extra node the author says most workflows need, and it's where the pack's philosophy collides with a ComfyUI habit you'll have to unlearn.
The inputs are what you'd expect: a HFD_PIPELINE to load onto, pretrained_model_name_or_path_or_dict (a HuggingFace repo id - the default is TheLastBen/Papercut_SDXL), a weight float from 0 to 2 (default 1.0), and the ever-present kwargs JSON box. Output is the same pipeline, now with the LoRA baked in.
But here's the thing that trips up everyone who's used to native ComfyUI LoRA loaders: the repo id, not a local file. This pack loads LoRAs from the HuggingFace Hub in the diffusers format - a repo with an adapter_config.json, not a .safetensors in your models/loras folder. That's the whole ecosystem this pack lives in, and it's worth accepting before you start.
The fuse, and the trap
Look at what the node actually does, because the README calls out the consequence explicitly:
pipeline.load_lora_weights(**kwargs)
pipeline.fuse_lora(lora_scale=weight)
pipeline.unload_lora_weights()
It loads the weights, fuses them into the base model's weights in place, then unloads. That's not how a ComfyUI LoRA loader behaves - native loaders keep the LoRA separate and stackable. Here, fusing means the non-LoRA version of the pipeline is gone once this node runs. The README is blunt about it: you can't recover the original by reconnecting your original HFDLoadPipeline output. The un-LoRA'd pipeline simply doesn't exist anymore.
Consequences in practice:
- One LoRA at a time, effectively. Stacking a second
HFDLoadLorameans fusing the second onto an already-fused first. The first is baked in permanently. - To drop the LoRA, re-run the load node. Rebuilding the pipeline is the reset. There's no "bypass" that restores the base.
- Weight is a fuse-time scale, set when the LoRA is fused, not a runtime strength you can animate. Set it once, correctly.
This isn't a bug - it's how diffusers does LoRAs, and the pack is a thin honest binding to it. But it is the thing that makes people reach for the native ComfyUI LoRA path instead. If you want fine-grained stacking and toggles, use ComfyUI's own LoRA loader and don't route through diffusers at all.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/Yahweasel/ComfyUI-HF-Diffusers
or search ComfyUI-HF-Diffusers in ComfyUI Manager, then restart. requirements.txt pins diffusers~=0.36.0.
Gotchas
- Architecture lock-in, same as everywhere. A Flux LoRA won't fuse into an SDXL pipeline - the adapter config declares what it targets, and the target has to match. The node will usually error loudly, which is the kind and honest behavior.
- The repo id must exist. Typo the id and it's a download failure, not a helpful message. Check the repo's files first if a LoRA won't load.
- First use downloads. The LoRA repo lands in the HF cache, not
models/loras. Small for a LoRA, but it's not instant on a slow connection.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| pipeline | HFD_PIPELINE | — | |
| pretrained_model_name_or_path_or_dict | STRING | TheLastBen/Papercut_SDXL | — |
| weight | FLOAT | 1.000–2 | — |
| kwargs | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| HFD_PIPELINE | HFD_PIPELINE | — |