Ultimate SD Upscale (FLS + LLLite Tile Repair)
One of the only ControlNets that actually does something on Anima
- image
- model
- positive
- negative
- vae
- upscale_model
- IMAGE
Everything in the plain UltimateSDUpscaleFLS node is here too - same tiling engine, same FLSampler detail injection - plus one thing bolted on: an Anima-specific ControlNet-LLLite pass aimed at tile repair. That's a bigger deal than it sounds, because Anima, the 2B anime DiT that's been eating into Illustrious's share since mid-2026, basically doesn't have ControlNet. The one real option across the whole model is kohya-ss's experimental ControlNet-LLLite port, and most of what's been trained for it is reported near-inert - people who've tried the pose model say it had no effect at all at inference. Tile/repair conditioning (the weights this node is built for) is one of the few LLLite models the community actually cites as doing something, alongside a separate regional-conditioning model from a different author. If you're upscaling Anima output and want the tiles to stay faithful to the source instead of drifting, this is close to the only lever you've got right now.
How it works
Tiling and FLS detail injection work exactly as in the plain node - mode_type, the fovea_strength/sharpness/mask_inertia trio, and the seam-fix pass all carry over unchanged. What's added is a second conditioning path running alongside the sampler: a ControlNet-LLLite apply step, which is a lightweight, LoRA-like module injected into the model's attention and MLP layers rather than a full duplicated ControlNet encoder. That's the general LLLite trick, and it's how kohya gets control conditioning onto DiT architectures that don't have a UNet to hang a classic ControlNet off. The tile/repair weights condition each tile against the original image so the upscale pass doesn't invent detail that contradicts the source - the same job ControlNet Tile does for SD/SDXL tiled upscales, just via a different mechanism, because Anima has no equivalent of its own.
The inputs and outputs that matter
Everything from the plain node carries over - image, model, positive/negative, vae, upscale_model, upscale_by, denoise, the tiling and seam-fix group, the FLS knobs - plus four LLLite-specific fields. lllite_model_name is read from ComfyUI's controlnet models folder and defaults to anima_tiled_lllite_v1.safetensors, the tile/repair weight this node is built around; set it to None to skip LLLite entirely and behave like the plain FLS node. lllite_strength (default 0.9, range 0–2) is how hard the conditioning pulls, and lllite_start_percent/lllite_end_percent (default 0 to 0.9) set the portion of the sampling schedule LLLite stays active for. Community reports on this specific tile/repair model land around 0.8 strength with denoise near 0.5 as a workable starting point - close to the node's own defaults, so treat those as your baseline rather than a ceiling to push past. Output is a single IMAGE, same as the plain node.
How to install it
Same base install as the plain FLS node - search "ComfyUI Ultimate SD Upscale FLS LLLite" in Manager, or:
cd ComfyUI/custom_nodes
git clone https://github.com/Lebensignal/ComfyUI-UltimateSDUpscale-FLS-LLLite.git
Restart, and let the first-run auto-download of the Coyote-A upscale script finish (see the plain node's install steps if you're offline). This node needs two more things the plain one doesn't:
- The Anima LLLite apply node, expected specifically at
ComfyUI/custom_nodes/ComfyUI-Anima-LLLite. Install kohya-ss'sComfyUI-Anima-LLLiteinto that exact folder before restarting, or the LLLite path has nothing to hand off to. - The weights themselves, dropped into
ComfyUI/models/controlnet. The README points atLAXMAYDAY/Anima_Tile_and_Repair_ControlNet-LLLiteon HuggingFace (or the CivitAI mirror it also links). Neither the apply node nor the weights ship with this pack - the README is explicit that no model weights are redistributed here.
Common issues & troubleshooting
lllite_model_name dropdown only shows "None." The weights aren't in ComfyUI/models/controlnet, or the filename doesn't match what the node expects. Fix the path, then restart - the dropdown populates at startup, not live.
LLLite conditioning does nothing, no matter the strength. This is a real, documented failure mode for other Anima LLLite models (openpose in particular), not something unique to your setup - kohya's port is explicitly experimental. Tile/repair is one of the better-behaved ones, but if you're seeing zero effect, confirm the ComfyUI-Anima-LLLite apply node pack is actually installed and loaded (check the console at startup) before assuming your settings are wrong.
This only makes sense with an Anima checkpoint. The LLLite weights are trained against Anima's specific architecture - wiring this node into an SDXL, SD1.5, or Illustrious workflow won't do anything useful even if it doesn't error outright. If you're not on Anima, you want the plain UltimateSDUpscaleFLS node instead.
Effect is too subtle or too aggressive. Start near lllite_strength 0.8–0.9 with denoise around 0.5 - the range people report actually working - then pull lllite_end_percent down if late-stage tiles are getting over-conditioned toward the source and losing the detail FLS is adding.
Inputs (32)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| model | MODEL | — | |
| positive | CONDITIONING | — | |
| negative | CONDITIONING | — | |
| vae | VAE | — | |
| upscale_by | FLOAT | 2.000.05–4 | — |
| seed | INT | 00–18446744073709550000 | — |
| steps | INT | 201–10000 | — |
| cfg | FLOAT | 8.000–100 | — |
| sampler_name | COMBO | 44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38 | |
| scheduler | COMBO | 9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3 | |
| denoise | FLOAT | 0.200–1 | — |
| fovea_strength | FLOAT | 5.00–10 | — |
| sharpness | FLOAT | 1.000–3 | — |
| mask_inertia | FLOAT | 0.850–0.99 | — |
| lllite_model_name | COMBO | anima_tiled_lllite_v1.safetensors | 2 options: None, anima_tiled_lllite_v1.safetensors |
| lllite_strength | FLOAT | 0.900–2 | — |
| lllite_start_percent | FLOAT | 0.0000–1 | — |
| lllite_end_percent | FLOAT | 0.9000–1 | — |
| upscale_model | UPSCALE_MODEL | — | |
| mode_type | COMBO | 3 options: Linear, Chess, None | |
| tile_width | INT | 51264–8192 | — |
| tile_height | INT | 51264–8192 | — |
| mask_blur | INT | 80–64 | — |
| tile_padding | INT | 320–8192 | — |
| seam_fix_mode | COMBO | 4 options: None, Band Pass, Half Tile, Half Tile + Intersections | |
| seam_fix_denoise | FLOAT | 1.000–1 | — |
| seam_fix_width | INT | 640–8192 | — |
| seam_fix_mask_blur | INT | 80–64 | — |
| seam_fix_padding | INT | 160–8192 | — |
| force_uniform_tiles | BOOLEAN | true | — |
| tiled_decode | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |