Nodes/Distilled ResShift SR/ResShift SR Loader (distilled ×4/×2)
ComfyUI Node

ResShift SR Loader (distilled ×4/×2)

Load a 1-step upscaler in three dropdowns (just don't mix up x2 and x4)

By sorryhyun·Created 2 months ago·Updated about a month ago· 2
ResShift SR Loader (distilled ×4/×2)
    • rsd_model
    scalex4
    student_name
    dtypebf16

    The ResShift SR loader is the unglamorous half of the Distilled ResShift pack, but it's where the real decisions live. It loads a 1-step super-resolution student plus the vq-f4 VQGAN autoencoder that student needs, and hands both to ResShiftUpscale as a single RESSHIFT_MODEL socket. You don't see any pixels here - you just set three dropdowns. But exactly one of those dropdowns can silently wreck your output, so let's start there.

    The scale dropdown is the whole game

    scale is x4 (default) or x2, and it does two jobs at once: it picks which student to auto-download, and it sets the diffusion schedule (the sf the student was distilled at). The two students share the same architecture and the same VQGAN - the real difference is that schedule.

    Here's the trap: the .safetensors header carries the architecture metadata (noise_mode/noise_channels), but not the super-resolution factor. So if you pick a local ×4 checkpoint while scale=x2, the loader won't error - it just upscales at the wrong ratio. Nothing yells at you. The fix is built in: the (auto-download) entry for student_name always fetches the matching student, so it physically can't mismatch. Use that unless you have a reason not to.

    The other two dropdowns are easy

    • student_name - defaults to (auto-download), which pulls the released ×4 or ×2 student from HF on first use. To use your own checkpoint, drop a .safetensors (or a training .pth with an ema key) into ComfyUI/models/resshift/ and pick it here. The loader rebuilds the network from the file's own metadata, so there's no sidecar config to keep in sync.
    • dtype - bf16 is the default and it's the right one: roughly 2x faster and half the VRAM, and it matches how the student was trained and evaluated. Only switch to fp32 to rule out a precision problem.

    Output is a single rsd_model (RESSHIFT_MODEL), which wires straight into ResShiftUpscale's rsd_model input.

    Installing it

    Same story as every custom node, two ways:

    # ComfyUI Manager: search "Distilled ResShift SR" and install
    # ...or, by hand:
    cd ComfyUI/custom_nodes
    git clone https://github.com/sorryhyun/ComfyUI-Distilled-ResShift
    

    Restart ComfyUI after either. The heavier dependencies - einops, timm, omegaconf, huggingface_hub - are declared in pyproject.toml and auto-installed; torch, numpy, and safetensors already ship with ComfyUI. Notably, no xformers is required: the vendored VQGAN's mid-attention uses a query-chunked exact-SDPA path that runs on any GPU, including Blackwell.

    First load triggers the auto-downloads, both into ComfyUI/models/resshift/:

    • the student (~478 MB, ema-only) from sorryhyun/Distilled-ResShift-4x or -2x on HF
    • the vq-f4 VQGAN (~211 MB) from the upstream ResShift GitHub release

    If the VQGAN download is blocked in your environment (some networks refuse raw GitHub release pulls), grab autoencoder_vq_f4.pth by hand and drop it in models/resshift/ - the loader picks it up.

    Common issues

    • Wrong upscale ratio - the scale/student mismatch above. Re-select (auto-download) for the scale you actually want.
    • VQGAN download fails on first run - manual file placement, as above.
    • License gotcha - the student weights and the vendored network inherit the upstream S-Lab License 1.0 (non-commercial). Fine for personal use; read it before shipping anything commercial.

    It's the boring node, but it's also the one that holds the setting everyone gets wrong. Set scale to match your student, leave dtype on bf16, and let it do its thing.

    CategoryResShift

    Inputs (3)

    NameTypeDefaultDescription
    scaleCOMBOx4Super-resolution factor. x4 (default) = the released ×4 student; x2 = the ×2 student (finer input, gentler jump). Picks both the auto-download repo AND the diffusion schedule (sf), so a locally selected student must match the scale it was distilled at.
    student_nameCOMBO1 options: (auto-download)
    dtypeCOMBObf16bf16 (default) matches training/eval: ~2x faster, ~half VRAM. fp32 is slower + 2x VRAM, use only to rule out a precision issue.

    Outputs (1)

    NameTypeDescription
    rsd_modelRESSHIFT_MODEL