How to upscale video with SeedVR2 on a cloud GPU

Rent a GPU on Deploy, then open a terminal in JupyterLab or over SSH. Install from the official ByteDance-Seed/SeedVR README, download the weights that README’s example names, run the documented SeedVR2 command, and copy the output directory off the instance before you destroy it. Destroying the instance deletes its disk.

Image and video upscaling from a different repository, whose README publishes no GB figure, is How to upscale images and video with Real-ESRGAN on a cloud GPU. Video matting whose README prints no GPU GB figure, and whose CLI writes a foreground video and an alpha video, is How to run MatAnyone video matting on a cloud GPU. Another upscaler, whose low-VRAM comment prints 12G and 16G, is How to upscale images with SUPIR on a cloud GPU. Face restoration whose README prints no GB figure is How to restore faces with CodeFormer on a cloud GPU. Text-to-video and image-to-video from a different repository is How to run Wan 2.2 video generation on a cloud GPU. If the process runs out of memory: How to fix CUDA out of memory on a cloud GPU.

The README’s license line says SeedVR and SeedVR2 are licensed under the Apache 2.0. LICENSE is the Apache License, Version 2.0, January 2004. The GitHub license field on 2026-11-13 was Apache-2.0. The model cards for ByteDance-Seed/SeedVR2-3B and ByteDance-Seed/SeedVR2-7B that day had cardData.license apache-2.0 and gated false. lastModified was 2025-06-22T08:35:30.000Z and 2025-07-14T17:27:06.000Z. Both cards repeat the Apache 2.0 line. They do not print a GPU GB figure. Read LICENSE before you redistribute the program or the weights.

The commands below are copied from the upstream files named in each step. They were not run on a CloudGPU instance for this page. Anything this page adds around them is marked.

What the README says about memory

The GitHub README inference section has a GPU requirement paragraph. That paragraph names a card this page does not print. This page does not copy the paragraph. The documented multi-GPU option is the inference line below, which passes --nproc-per-node=NUM_GPUS and --sp_size NUM_SP. In projects/inference_seedvr2_3b.py, --sp_size defaults to 1, and configure_sequence_parallel calls init_sequence_parallel when sp_size > 1. The 7B file has the same function. The model cards do not print a GPU GB figure.

The README links numz/ComfyUI-SeedVR2_VideoUpscaler. That node’s hardware section prints three lines: “Minimal VRAM (8GB or less): Use GGUF Q4_K_M models with BlockSwap and VAE tiling enabled”; “Moderate VRAM (12-16GB): Use FP8 models with BlockSwap or VAE tiling as needed”; “High VRAM (24GB+): Use FP16 models for best quality and speed without memory optimizations”. A later limitations paragraph says the integration supports low VRAM systems (8GB or less with proper optimization) and that VRAM usage varies. Those sentences are the node’s. They are not in the ByteDance-Seed README. This page did not remeasure them.

GET /v1/public/compute-capabilities does not list GPUs. It returns feature flags. The memory column is vram_gb from gpu-prices.json, updated_at 2026-11-13T20:10:32.168Z. GET /v1/public/gpu-catalog the same day (generated_at 2026-11-13T20:10:33.209Z) listed the same names and the same vram_gb values, plus Ascend 910B at 64, which is not in gpu-prices.json and is not listed here. The catalog response also includes an availability field. This page does not copy it. Every prices row has gpu_count 1. Every catalog row has min_gpu_count 1. This page does not mark a row as enough. Catalog rows at 8, 12, 16, and 24 are the vram_gb values that match numbers the ComfyUI node README prints. Which listing you can start is on Deploy.

The catalog template list had no SeedVR2 template.

Catalog name vram_gb
RTX 2080 8
RTX 3080 10
RTX 2080 Ti 11
RTX 3080 Ti 12
V100 16G 16
A30 24
RTX 3090 24
RTX 4090 24
RTX 4090D 24
RTX 4080 SUPER 32G 32
RTX 5090 32
RTX 5090D 32
V100 32G 32
A100 40G 40
A800 40G 40
A40 48
RTX 4090 48G 48
RTX 4090D 48G 48
RTX A6000 48
NVIDIA RTX PRO 5000 72G 72
RTX PRO 5000 72G 72
A100 80G 80
A800 80G 80
H800 80
RTX 6000D 83
H20 96G 96
RTX PRO 6000 96G 96
RTX PRO 6000 Max-Q 96
H20-3e 141G 141

Install

On Deploy, choose Raw GPU. The quick start, copied. The clone URL is the one the README prints.

git clone https://github.com/bytedance-seed/SeedVR.git
cd SeedVR
conda create -n seedvr python=3.10 -y
conda activate seedvr
pip install -r requirements.txt
pip install flash_attn==2.5.9.post1 --no-build-isolation

requirements.txt pins torch==2.3.0, torchvision==0.18.0, diffusers==0.29.1, and transformers==4.38.2. The README then says to install apex. It prints two pre-built wheels: apex-0.1-cp39-cp39-linux_x86_64.whl for python=3.9, torch=2.4.0, cuda=12.4, and apex-0.1-cp310-cp310-linux_x86_64.whl for python=3.10, torch=2.4.0, cuda=12.1. Both URLs are on ByteDance-Seed/SeedVR2-3B. The conda line above is python 3.10. The README’s next command is pip install apex-0.1-cp310-cp310-linux_x86_64.whl. It does not print a download command for the wheel. The torch pin in requirements.txt is 2.3.0. The wheel comment says torch=2.4.0. This page did not install either one and does not choose between them.

The same README says that to use color fix, put color_fix.py at ./projects/video_diffusion_sr/color_fix.py. This page did not copy that file.

Download the weights

The download block is the README’s. The comment says to take SeedVR2-3B as an example and points at https://huggingface.co/models?other=seedvr for all models. projects/inference_seedvr2_7b.py loads ./ckpts/seedvr2_ema_7b.pth and ./configs_7b/main.yaml. The README does not print a second download block for that file. The 7B model card lists seedvr2_ema_7b.pth and seedvr2_ema_7b_sharp.pth. The 7B script’s checkpoint string is seedvr2_ema_7b.pth, not the sharp file. This page did not download the repository.

# Take SeedVR2-3B as an example.
# See all models: https://huggingface.co/models?other=seedvr

from huggingface_hub import snapshot_download

save_dir = "ckpts/"
repo_id = "ByteDance-Seed/SeedVR2-3B"
cache_dir = save_dir + "/cache"

snapshot_download(cache_dir=cache_dir,
  local_dir=save_dir,
  repo_id=repo_id,
  local_dir_use_symlinks=False,
  resume_download=True,
  allow_patterns=["*.json", "*.safetensors", "*.pth", "*.bin", "*.py", "*.md", "*.txt"],
)

The 3B script loads ./ckpts/seedvr2_ema_3b.pth. It also calls torch.load('pos_emb.pt') and torch.load('neg_emb.pt') from the current directory. Those two files are in the repository root. The 3B model card also lists them.

Inference

The README says you need to set the related settings in the inference files. The printed command, copied, names the 3B script. NUM_GPUS, INPUT_FOLDER, OUTPUT_FOLDER, SEED_NUM, OUTPUT_HEIGHT, OUTPUT_WIDTH, and NUM_SP are the README’s placeholders.

# Take 3B SeedVR2 model inference script as an example
torchrun --nproc-per-node=NUM_GPUS projects/inference_seedvr2_3b.py --video_path INPUT_FOLDER --output_dir OUTPUT_FOLDER --seed SEED_NUM --res_h OUTPUT_HEIGHT --res_w OUTPUT_WIDTH --sp_size NUM_SP

The argparse defaults in that file are --video_path ./test_videos, --output_dir ./results, --seed 666, --res_h 720, --res_w 1280, --sp_size 1, and --out_fps unset. The function signature’s res_h and res_w defaults are 1280 and 720. The parser defaults are the ones generation_loop receives, because main passes **vars(args). The 7B file is projects/inference_seedvr2_7b.py. The README does not print a torchrun line that names it. This page does not add that line.

When the sequence-parallel rank is 0, the script sets filename to os.path.join(output_dir, os.path.basename(path)). A single-frame sample is written with mediapy.write_image. A longer sample is written with mediapy.write_video. The basename keeps the input file’s name. With the default --output_dir, a file clip.mp4 in the input folder would be written as ./results/clip.mp4. This page did not run the script.

The 3B model card’s limitations paragraph says the methods are sometimes not robust to heavy degradations and very large motions, and that they tend to overly generate details on inputs with very light degradations, for example 720p AIGC videos, occasionally on small resolutions, for example 480p. That paragraph does not print a GPU GB figure.

The SeedVR README links https://github.com/numz/ComfyUI-SeedVR2_VideoUpscaler. The node README’s manual install, copied, is for a ComfyUI checkout. How to install ComfyUI and ComfyUI-Manager on a cloud GPU is that checkout. The node README also describes ComfyUI Manager search text ComfyUI-SeedVR2_VideoUpscaler. The Linux requirements line is the one below. The Windows line is in the same README and is not copied here.

cd ComfyUI
git clone https://github.com/numz/ComfyUI-SeedVR2_VideoUpscaler.git custom_nodes/seedvr2_videoupscaler
.venv/bin/python -m pip install -r custom_nodes/seedvr2_videoupscaler/requirements.txt

That README says models are automatically downloaded on first use and saved to ComfyUI/models/SEEDVR2. It also links manual downloads at numz/SeedVR2_comfyUI, AInVFX/SeedVR2_comfyUI, and cmeka/SeedVR2-GGUF. The software section says Python 3.12+ and PyTorch 2.0+. That Python line is not the official README’s python=3.10, and that PyTorch line is not torch==2.3.0. The node’s license section says the code is released under the Apache 2.0 license. Repository HEAD on 2026-11-13 was 4490bd1f482e026674543386bb2a4d176da245b9, committed 2025-12-24T08:52:32Z.

example_workflows/SeedVR2_HD_video_upscale.json has a SaveVideo node whose widgets are video/ComfyUI, auto, and auto. The install guide says folder_paths.py sets the output directory to output. The node’s CLI help says --output is the output path and the default is auto-generated in the output/ directory, and --output_format is mp4 or png with auto-detect as the default. One printed CLI block is the low-VRAM example. It is the node’s, not the ByteDance-Seed README’s.

# Memory-optimized for low VRAM (8GB)
python inference_cli.py image.png \
    --dit_model seedvr2_ema_3b-Q8_0.gguf \
    --resolution 1080 \
    --blocks_to_swap 32 \
    --swap_io_components \
    --dit_offload_device cpu \
    --vae_offload_device cpu

The official repository does not print a Gradio launch. ComfyUI’s listen port is the install guide’s 127.0.0.1 port 8188. How to use SSH port forwarding on a cloud GPU is the tunnel. This page did not install the node and did not run the CLI.

When it fails

CUDA out of memory. The ByteDance-Seed README’s GPU requirement paragraph is not copied on this page, and the model cards print no GB cutoff. The node’s limitations list says that for OOM during encoding, enable VAE encode tiling and reduce tile size; for OOM during upscaling, enable BlockSwap and increase blocks_to_swap; for OOM during decoding, enable VAE decode tiling and reduce tile size; and if it is still OOM, reduce batch size or resolution. If the process raises that error, use how to fix CUDA out of memory on a cloud GPU.

“CUDA error: no kernel image is available for execution on the device” on an RTX 5090. requirements.txt pins torch==2.3.0. The apex wheel comment says torch=2.4.0 and cuda=12.1 for the cp310 wheel. The node README says PyTorch 2.0+ and names Blackwell for optional SageAttention 3. Those lines do not name compute capability 12.0 and do not pin a CUDA 12.8 wheel. The RTX 5090 guide says that card is compute capability 12.0 (sm_120) and that PyTorch 2.7 and later, on a build for CUDA 12.8 or newer, is the line that announced support. This page did not install a torch wheel and did not re-test this package on an RTX 5090. Catalog RTX 5090 and RTX 5090D are 32. That is the catalog number only.

Save the videos, then destroy

Copy the --output_dir you passed, or ./results if you left the script default, including each output that keeps the input basename, before you destroy the instance. If you used the node’s SaveVideo example, the widget prefix is video/ComfyUI under the ComfyUI output directory. If you used the node’s CLI without --output, the help text says the file is auto-generated in output/. Save your work before you destroy a cloud GPU is the checklist. The terms say data on local instance storage is permanently deleted when the instance is destroyed.

The pricing page FAQ states the billing rule in these words:

Per-minute options have a 1-minute minimum; unused prepaid minutes are refunded when you destroy the instance. Some configurations use whole-hour billing with a 1-hour minimum; unused time within a charged hour is not refunded on voluntary stop. The billing period, minimum charge and initial prepayment are shown before confirmation. No subscription.

Prices are not copied here.

Frequently asked questions

How much VRAM do the SeedVR2 files print?

The ByteDance-Seed README GPU requirement paragraph names a card this page does not print, and this page does not copy that paragraph. The SeedVR2-3B and SeedVR2-7B model cards print no GPU GB figure. The ComfyUI node the README links says 8GB or less for GGUF Q4_K_M with BlockSwap and VAE tiling, 12-16GB for FP8 with BlockSwap or VAE tiling, and 24GB+ for FP16. This page does not mark a catalog row as enough. Which listing you can start is on https://cloudgpu.app/deploy.

Which inference command does the README print?

The printed command is torchrun --nproc-per-node=NUM_GPUS projects/inference_seedvr2_3b.py with --video_path, --output_dir, --seed, --res_h, --res_w, and --sp_size. The script defaults are --output_dir ./results, --res_h 720, --res_w 1280, and --sp_size 1. projects/inference_seedvr2_7b.py loads ./ckpts/seedvr2_ema_7b.pth. The README does not print a torchrun line that names the 7B file. This page did not run the command.

Where are the outputs saved?

The 3B script writes os.path.join(output_dir, os.path.basename(path)) with mediapy.write_image or mediapy.write_video. The default output_dir is ./results. The SaveVideo widgets in the node example workflow are video/ComfyUI, auto, and auto. The node CLI says --output defaults to an auto-generated path in output/. This page did not run the script or the node.

What license does the repository print?

The README says SeedVR and SeedVR2 are licensed under the Apache 2.0. LICENSE is the Apache License, Version 2.0, January 2004. The GitHub license field on 2026-11-13 was Apache-2.0. The 3B and 7B model cards reported cardData.license apache-2.0 and gated false. The ComfyUI node README says its code is Apache 2.0. That license text is not a CloudGPU price and not a storage allowance.

Sources (read 2026-11-13, Asia/Shanghai)

  • ByteDance-Seed/SeedVR readme.md (clone, requirements, apex wheels, SeedVR2-3B download, 3B torchrun line, Apache 2.0 line, link to the ComfyUI node): blob fbdbaa4086168f74f0783b1a5dd92164ac511ac3. Repository HEAD e4de8c24441a67e1b7df56abea10645059bb1185, committed 2026-01-27T06:02:23Z. The GPU requirement paragraph is not copied. https://github.com/ByteDance-Seed/SeedVR/blob/main/readme.md
  • projects/inference_seedvr2_3b.py and projects/inference_seedvr2_7b.py (checkpoint paths, argparse defaults, pos_emb.pt and neg_emb.pt, output basename): read from repository HEAD
  • requirements.txt (torch==2.3.0) and LICENSE: read from repository HEAD. GitHub license field Apache-2.0
  • Hugging Face model cards ByteDance-Seed/SeedVR2-3B and ByteDance-Seed/SeedVR2-7B (Apache 2.0, no GPU GB figure, seedvr2_ema_7b_sharp.pth on the 7B card): read 2026-11-13. Model API the same day: gated false, cardData.license apache-2.0, lastModified 2025-06-22T08:35:30.000Z and 2025-07-14T17:27:06.000Z
  • numz/ComfyUI-SeedVR2_VideoUpscaler README (8GB, 12-16GB, 24GB+, install, ComfyUI/models/SEEDVR2, CLI --output, low-VRAM CLI block, Apache 2.0): blob 197ad2d8880c44478beb72f7b21578ecfbc7028c. Repository HEAD 4490bd1f482e026674543386bb2a4d176da245b9, committed 2025-12-24T08:52:32Z
  • example_workflows/SeedVR2_HD_video_upscale.json (SaveVideo widgets video/ComfyUI, auto, auto): read from that repository HEAD
  • Public GPU memory: https://cloudgpu.app/gpu-prices.json (updated_at 2026-11-13T20:10:32.168Z) and https://cloudgpu.app/v1/public/gpu-catalog (generated_at 2026-11-13T20:10:33.209Z). GET /v1/public/compute-capabilities returned feature flags and no GPU list. The catalog had no SeedVR2 template

Cards you can start are on the Deploy page. Prices are on https://cloudgpu.app/pricing and are not repeated here.

Last updated: 2026-11-13 (Asia/Shanghai).