Nodes/ComfyUI_SparkVSR_SM/SparkVSR_SM_SRModel
ComfyUI Node

SparkVSR_SM_SRModel

The PiSA-SR loader that makes SparkVSR's reference mode actually good

By smthemex·Created 5 months ago·Updated 5 months ago· 39
SparkVSR_SM_SRModel
    • model
    unet
    vae
    pkl
    dtype

    SparkVSR_SM_SRModel loads PiSA-SR, and PiSA-SR is the reason SparkVSR can deliver on its demo. SparkVSR's whole pitch is interactive super-resolution: you properly restore a handful of keyframes with a strong image upscaler, and the model propagates that detail through the rest of the video. The paper's original recipe used Nano Banana Pro for that restoration step, which immediately raised the question the community asked out loud - "is it any good if you can't afford the API?" This node is the local, no-API answer: it loads PiSA-SR, a CVPR 2025 dual-LoRA super-resolution method from Hong Kong PolyU and OPPO, on a Stable Diffusion 2.1 base. No keys, no cloud, no subscription.

    If you read the SparkVSR launch thread, you saw the suspicion that the reference frames were doing all the heavy lifting. That's not a bug, it's the architecture - and PiSA-SR is the part that lifts. The authors themselves recommend the reference-guided settings as the showcase and treat the no-reference mode as a baseline fallback.

    How it works

    This node wraps the PiSASR evaluation code bundled inside the pack. It loads an SD 2.1-base UNet and VAE, fuses in the pisa_sr.pkl checkpoint (a 32MB dual-LoRA), and runs a one-step diffusion super-resolution at 4x - no long denoising loop - with a wavelet color fix to keep colors honest against the source. That speed matters, because this model only ever touches the reference frames you designate, not the whole video.

    The output is a MODEL that plugs into SparkVSR_SM_PreRefer's model input. Wiring it is what switches PreRefer into "pisasr" reference mode.

    The inputs that matter

    • unet - sd21base-f32.safetensors (3.22GB) from ComfyUI/models/diffusion_models/.
    • vae - sd21vae.safetensors (319MB) from ComfyUI/models/vae/.
    • pkl - pisa_sr.pkl (32MB) from ComfyUI/models/loras/. Yes, it lives in the loras folder even though it's a checkpoint - that's where the node looks for it.
    • dtype - same story as the main loader: bfloat16 unless you have reasons.

    These three files are the README's "optional" set, with a caveat: they're only optional if you skip reference mode. Given that reference mode is the whole point, plan on downloading them.

    Installing it

    Same pack install as everything else - ComfyUI Manager (search "ComfyUI_SparkVSR_SM") or git clone into custom_nodes plus pip install -r requirements.txt, then restart. The extra model files come from the stable-diffusion-2-1-base ModelScope repo and the pisa_sr Google Drive link in the README.

    Common issues

    • Memory pressure - this loads a second model family (SD2.1) into VRAM on top of the 20.7GB SparkVSR diffusion model. Expect pressure; that's normal, not a malfunction.
    • Won't load at all / want fewer moving parts - you can skip this node entirely and feed SparkVSR_SM_PreRefer your own sr_image instead: upscale a frame with whatever you trust (SeedVR2, an ESRGAN, a Flux upscale), and it plays the same role. That's the beauty of the design - the reference generator is swappable.
    • pisa_sr.pkl not found - check it's in loras/ and you refreshed the dropdown.
    CategorySparkVSR_SM

    Inputs (4)

    NameTypeDefaultDescription
    unetCOMBO1 options: none
    vaeCOMBO1 options: none
    pklCOMBO1 options: none
    dtypeCOMBO3 options: bfloat16, float16, float32

    Outputs (1)

    NameTypeDescription
    modelMODEL