Per Sample LoRA Loader (Single Pass)
Sweep LoRA weight per image in a single pass
- model
- model
- weights_used
Per Sample LoRA Loader (Single Pass) is the node this pack exists for, and the name carries the whole pitch: it loads one LoRA, then applies a different strength to each latent in your batch. One KSampler pass, N images, N different LoRA strengths. Normally a LoRA strength is a single number applied to the whole batch - this node splits it per sample, which is exactly what "single pass" means here. Instead of generating the same prompt N times and changing the strength between runs, you set a batch size and get the whole sweep at once.
That's a real workflow win. Finding the right LoRA strength is eternal fiddling: too weak and the style barely registers, too strong and the LoRA starts eating the image (the LoRA-training knowledge base calls out exactly this "style bleeding at low strength" failure mode). A sweep answers "what does this look like at 0.2 vs 0.5 vs 0.8 on the same seed" in a single generation, which makes this the natural fit for grid-testing a LoRA you just downloaded or tuned.
How it works
You pick a mode, and the node builds the list of strengths:
- range -
starttostopinstepincrements (directionflips it to decrement). - manual_values - type them yourself:
0.1, 0.2, 0.3, 0.4. - range_step_by_batch - the clever one. It reads the actual runtime batch straight off the latents during sampling (via a UNet function wrapper that even accounts for cond/uncond chunking) and computes
auto_step = (stop - start) / (batch - 1). You set the batch size onEmptySD3LatentImage, and the strengths auto-fit however many images you asked for. No counting, no math.
The mechanism underneath is where it earns its keep. It applies the full LoRA at the lowest requested strength as a normal patch, then attaches per-sample bypass hooks that add the deltas on top per image in the batch. If every strength is identical, it detects that and skips the bypass entirely - you get a plain LoRA load. And if the LoRA/model pair can't match any adapter keys for the bypass, it raises a clear error instead of silently doing the wrong thing.
Outputs:
model- the patched model; wire this intoKSampler.model.weights_used- a string diagnostic telling you exactly what ran: the weights, the deltas, the base strength, and how many bypass hooks matched. Preview it in a text node once to confirm the sweep is what you think it is. That readout is the author's built-in debug friend; use it.
Multiple Per Sample LoRA Loaders can be stacked in sequence, each keeping its own bypass hooks - so a second LoRA with its own range layers on top of the first.
Wiring
The README's three steps are all you need:
CheckpointLoaderSimple.model→ this node'smodel- This node's
modeloutput →KSampler.model - Set
EmptySD3LatentImage.batch_sizeto your count (inrange_step_by_batchmode it reads that during sampling)
For range and manual_values, your batch size should match the number of values if you want every value used - otherwise it repeats the list to cover a bigger batch, or truncates for a smaller one.
Install
Same pack as the float node: in ComfyUI Manager search "Float Increment Per Latent", or:
cd ComfyUI/custom_nodes
git clone https://github.com/bbc-s/float-increment-per-latent
Restart, done. Zero dependencies in pyproject.toml, MIT licensed, no model downloads. One caveat: it leans on newer ComfyUI internals (comfy.weight_adapter bypass injections, comfy.patcher_extension), so if you're many versions behind, update ComfyUI before blaming the node.
Where people get burned
0 matched adapter keys- the bypass couldn't attach to any LoRA weights for your model. Some LoRA/model combinations just aren't compatible with this per-sample method; the error says so plainly rather than degrading silently.- Batch of 1 - in
range_step_by_batchmode you just getstart. That's per the design, not a bug. - VRAM - a batch of N is N× the activation memory, so a huge sweep on a heavy model can OOM. That's the price of any batch sampling, not a fault of the node; trim the count or the resolution.
This is a niche, brand-new pack (no search impressions, no community presence as of mid-2026), so the docs are the tutorial. The weights_used output plus a small test batch will teach you more in one run than any thread could.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| lora_name | COMBO | 0 options: | |
| mode | COMBO | range | 3 options: range, range_step_by_batch, manual_values |
| start | FLOAT | 0.00-100–100 | — |
| stop | FLOAT | 1.00-100–100 | — |
| step | FLOAT | 0.100.000001–100 | — |
| direction | COMBO | increment | 2 options: increment, decrement |
| manual_values | STRING | 0.1,0.2,0.3,0.4 | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |
| weights_used | STRING | — |