Load InvSR Models
One loader, two auto-downloads, zero model hunting
- invsr_pipe
LoadInvSRModels is the front door to the ComfyUI_InvSR pack: it pulls together the two pieces InvSR needs to do its one-step 4x upscale - a stabilityai/sd-turbo diffusers pipeline plus InvSR's custom noise-predictor weights - and hands them to the InvSRSampler node on a single wire. That's the whole job, and it's the part that makes this pack nicer to live with than most upscalers: you don't download or hunt for anything.
What it loads and where it puts it
Two model files, both fetched automatically on first run:
- SD-Turbo (the distilled 1-step Stable Diffusion backbone) downloads into
ComfyUI/models/diffusers. - The InvSR noise predictor -
noise_predictor_sd_turbo_v5.pth- is fetched from theOAOA/InvSRHuggingFace repo intoComfyUI/models/invsr.
If a file's already there, it uses it. This is why the pack works the first time you run the example workflow, which is rare enough in this ecosystem to be worth appreciating.
Under the hood, the loader builds a diffusers StableDiffusionPipeline from the SD-Turbo checkpoint, swaps the VAE into tiled mode with gradient checkpointing (that's the tiled_vae switch), then loads the noise-predictor state dict into the custom network that models the diffusion inversion. The INVSR_PIPE output is just a bundle carrying all of that - you wire it to the sampler and forget about it.
The inputs
This node has no required inputs, just settings - four of them, and only two matter:
- invsr_model -
noise_predictor_sd_turbo_v5.pth(the default) or the newernoise_predictor_sd_turbo_v5_diftune.pth, a retuned revision added in the pack's April 2025 update. If v5's output looks off to you, try the diftune one. - dtype -
fp16(default),bf16, orfp32. fp16 is the right call on any modern card; drop to fp32 only when debugging weird output. - sd_model - one choice,
stabilityai/sd-turbo. There's no other backbone; this is a locked-in dependency, not a menu. - tiled_vae - on by default, and you almost certainly want it on; it's what keeps large-image decoding from blowing VRAM.
The single output is invsr_pipe, which feeds the invsr_pipe input of InvSRSampler. There's nothing else to wire.
Installing
Same story as the sampler - it's one pack: search "ComfyUI InvSR" in ComfyUI Manager, or
cd ComfyUI/custom_nodes
git clone https://github.com/yuvraj108c/ComfyUI_InvSR
cd ComfyUI_InvSR
pip install -r requirements.txt
then restart and run once to trigger the downloads.
The one real trap
If the loader dies with set_module_tensor_to_device() got an unexpected keyword argument 'non_blocking', your diffusers is too old - the pack's requirements were updated in April 2025 precisely for this, and people were still hitting it months later. Upgrade diffusers (or install via Manager, which keeps it fresher) and the node loads clean. The pack also pins numpy<2, so if you have other nodes that want numpy 2, expect a little dependency tug-of-war.
It's a quiet little loader, but it's why the pack is beginner-friendly: everything downloads itself, and if the node loads, the hard part's done.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| sd_model | COMBO | 1 options: stabilityai/sd-turbo | |
| invsr_model | COMBO | 2 options: noise_predictor_sd_turbo_v5.pth, noise_predictor_sd_turbo_v5_diftune.pth | |
| dtype | COMBO | fp16 | 3 options: fp16, fp32, bf16 |
| tiled_vae | BOOLEAN | true | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| invsr_pipe | INVSR_PIPE | — |