LCMLoader_controlnet
An LCM pipeline with ControlNet bolted in
- class
LCMLoader_controlnet is the ControlNet variant of LCMLoader - same job, one extra piece. It builds the LCM_Dreamshaper_v7 diffusers pipeline, then loads a ControlNet model into it, so you can steer the fast 4-step generation with edges, depth, pose, or whatever condition you have. The result is the pipe input for LCMGenerate_img2img_controlnet (and the inpaintv2/v3 nodes).
Why a separate loader
ControlNet works by feeding a conditioning image through a trainable copy of the UNet encoder whose outputs get injected into the frozen model. In this pack, that means the ControlNet has to be loaded with the pipeline - you can't attach it later like a LoRA. So the loader takes one extra input: mode, a dropdown built from the folders in ComfyUI/models/controlnet. Pick the ControlNet you want, and ControlNetModel.from_pretrained loads it as part of the pipe.
Everything else is LCMLoader with a ControlNet in it:
- device -
GPU/CPU. GPU enables xformers and sequential CPU offload. Note this loader also flips on TF32 matmul (torch.backends.cuda.matmul.allow_tf32 = True), which is the author's idea of a free speed boost on Ampere+ cards. - model_path - blank by default, resolves to
ComfyUI/models/diffusers/LCM_Dreamshaper_v7. - tomesd_value - token merging, default 0.6.
- mode - the ControlNet folder dropdown. This is the one that bites people: it lists folders, so your ControlNet files need to live in their own subfolder under
models/controlnet, not loose in the directory.
Setup
Same pack install as every node here - ComfyUI Manager (search LCM_Inpaint-Outpaint_Comfy) or:
cd ComfyUI/custom_nodes
git clone https://github.com/taabata/LCM_Inpaint-Outpaint_Comfy
cd LCM_Inpaint-Outpaint_Comfy
pip install -r requirements.txt
Then the two model drops: LCM_Dreamshaper_v7 diffusers in ComfyUI/models/diffusers/, and your ControlNet in a subfolder under ComfyUI/models/controlnet/ (the README points you there too).
The gotcha
Two things to know before you wire it up. First, this is a diffusers-style ControlNet, not necessarily the .safetensors you've already got for native ComfyUI nodes - if the loader errors out on the mode folder, check that what you downloaded is a diffusers-format ControlNet directory with its own config.json. Second, ControlNet on a 4-step LCM model is a balancing act: the condition needs enough weight to actually steer, but the low-step pipeline has little room to reconcile conflicts with the prompt. Start control_weight around 0.6–0.8 rather than 1.0, and keep CFG low (the distillation playbook says 1–2). Crank everything to maximum and you get the classic oversaturated, detail-clobbered mess.
This is 2023 code from the pack's author (taabata, posting as Sensitive-Paper6812 on Reddit). It works, it's fast, and it's honestly a neat historical artifact of the early LCM wave - but if ControlNet + real-time iteration is your actual goal, the native ComfyUI path with an LCM-sampler checkpoint is the more maintained route today.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| device | COMBO | 2 options: GPU, CPU | |
| model_path | STRING | — | |
| tomesd_value | FLOAT | 0.60–1 | — |
| mode | COMBO | 0 options: |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| class | class | — |