STAR Sample
STAR Sample is the whole show — budget for the wait
- star_model
- video
- conditioning
- STAR latent
If you've loaded frames, picked a model, and typed a prompt, this is the node that actually does the upscaling - the one where your GPU gets busy and your coffee gets cold. STAR Sample VAE-encodes the prepared video, runs the diffusion pass, and hands a STAR latent to the decode node.
STAR isn't a filter; it's a diffusion model that regenerates your frames at the target resolution. The mechanism, grounded in the code: your low-res video gets encoded to latent space, then noised most of the way to pure noise - STAR's schedule runs 900 of its 1000 noise levels, SDEdit-style: add a lot of noise, then carefully walk it back. Two things steer the walk: your text conditioning from STAR Text Encode, and the low-res video itself, which the architecture feeds back in as a ControlNet-style hint so the model restores your frames rather than inventing a different video. Long clips run in overlapping temporal windows so the model never loses track of what came before - the temporal awareness per-frame upscalers lack, and the reason video through a frame-by-frame enhancer shimmers instead.
Inputs and the knobs that matter
Three upstream wires and six widgets, but a beginner only really drives three of them:
- star_model / video / conditioning - from STAR Model Loader, STAR Prepare Video, and STAR Text Encode respectively. All three types are custom, so the graph won't let you wire the wrong thing in.
- max_chunk_len - maximum frames per temporal window, default 32. Your OOM lever: lower it when the GPU dies on long clips. Windows overlap, so shorter chunks trade a little redundancy for processability.
- cfg - classifier-free guidance strength, default 7.5. This is not Stable Diffusion territory; STAR is a restoration model and cranking CFG to 14+ is how you get oversaturated, over-processed output. Keep it near the default.
- steps - denoising steps, default 15. The README's 15–50 range is right; 15 is fast and slightly rough, 25–30 is the quality ceiling for most sources.
- sampler and solver_mode -
dpmpp_2m_sde/fastby default;heunandnormalare the slower, smoother option. The default is genuinely the one to start with; switch if you see fine temporal flicker you can't tune away. - seed - defaults to 42. Boring, reproducible, change it when you want a different roll.
That's the whole node. The output is a STAR latent parked on the CPU, so changing the VAE decode chunk size later - or anything in the color-fix step - never re-runs this expensive pass.
Why it's this heavy
Let's be real about expectations. STAR is a large video-diffusion model, and the community's early hands-on runs with the underlying research code happened on rented 80GB H200s - one experimenter had to downscale a 430p clip before a 299-frame upscale fit even on 80GB. This wrapper does real engineering to make it survivable - CPU-cached intermediates, temporal chunking, frame-at-a-time decode - but you are still running a diffusion model over a stack of frames. On a 3090/4090-class card, a modest 720p target on a short clip is a patience exercise, not a minutes-long one; on 8GB cards you'll be fighting the low end of the dials the whole time. That's the honest price of the best-looking generative video upscale you can run locally.
Installing the pack
Search ComfyUI-STARWrapper in ComfyUI Manager, or cd ComfyUI/custom_nodes && git clone https://github.com/vjumpkung/ComfyUI-STARWrapper && cd ComfyUI-STARWrapper && pip install -r requirements.txt, then restart ComfyUI and let the first run download the ~2–3GB checkpoint plus VAE and OpenCLIP weights. Same pack-wide requirements as the rest of the family: a current ComfyUI build (comfy_api.latest V3 API), CUDA PyTorch, a matching xformers (CUDA 13 reported broken), and the full dependency list.
Troubleshooting
- CUDA out of memory - lower
max_chunk_lenfirst, then the targetresolutionupstream in STAR Prepare Video, then process shorter clips. In that order. - Looks over-processed / colors blown out - CFG too high, or you picked Heavy Degradation for a clean source. Check both.
- Flicker between chunks - rare with the overlapping windows, but if you see it, step count up a little or switch to
heun/normal. - Seed does nothing visible - seeds matter less than you'd hope: VAE sampling shares the seeded RNG stream with diffusion, and the whole run is anchored by your actual video anyway. Don't burn hours chasing a "better" seed.
Decode your latent with STAR VAE Decode next, then fix the colors with STAR Color Fix.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| star_model | STARVSR_MODEL | — | |
| video | STARVSR_VIDEO | — | |
| conditioning | STARVSR_CONDITIONING | — | |
| max_chunk_len | INT | 321–128 | Maximum temporal window processed by the diffusion model. |
| cfg | FLOAT | 7.50–20 | Classifier-free guidance strength. |
| sampler | COMBO | dpmpp_2m_sde | 2 options: heun, dpmpp_2m_sde |
| solver_mode | COMBO | fast | 2 options: fast, normal |
| steps | INT | 151–100 | — |
| seed | INT | 420–18446744073709550000 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| STAR latent | STARVSR_LATENT | — |