ComfyUI-SeedVR2_VideoUpscaler
Official release of SeedVR2 for ComfyUI that enables high-quality video and image upscaling.
Can run as Multi-GPU standalone CLI too, see ️ Run as Standalone section.
Quick Access
Future Work
We're actively working on improvements and new features. To stay informed:
- ** Track Active Development**: Visit Issues to see active development, report bugs, and request new features
- ** Join the Community**: Learn from others, share your workflows, and get help in the Discussions
- ** Next Model Survey**: We're looking for community input on the next open-source super-powerful generic restoration model. Share your suggestions in Issue #164
Release Notes
2025.12.24 - Version 2.5.24
- ** Fix: MPS memory leak regression** - Restored MPS cache clearing after VAE encode/decode operations that was accidentally removed during code cleanup in v2.5.23
2025.12.24 - Version 2.5.23
- ** Security: Prevent code execution in model loading** - Added protection against malicious .pth files by restricting deserialization to tensors only
- ** Fix: FFmpeg video writer reliability** - Resolved ffmpeg process hanging issues by redirecting stderr and adding buffer flush, with improved error messages for debugging (thanks @thehhmdb)
- ⚡ Fix: GGUF VAE model support - Enabled automatic weight dequantization for convolution operations, making GGUF-quantized VAE models fully functional (thanks @naxci1)
- ️ Fix: VAE slicing edge cases - Protected against division by zero crashes when using small split sizes with high temporal downsampling (thanks @naxci1)
- ** Fix: LAB color transfer precision** - Resolved dtype mismatch errors during video upscaling by ensuring consistent float types before matrix operations
- ** Fix: PyTorch 2.9+ compatibility** - Extended Conv3d memory workaround to all PyTorch 2.9+ versions, fixing 3x VRAM usage on newer PyTorch releases
- ** Fix: Bitsandbytes compatibility** - Added ValueError exception handling for Intel Gaudi version detection failures on non-Gaudi systems
- ** MPS: Memory optimization** - Reduced memory usage during encode/decode operations on Apple Silicon (thanks @s-cerevisiae)
2025.12.13 - Version 2.5.22
- ** CLI: FFmpeg video backend with 10-bit support** - New
--video_backend ffmpeg and --10bit flags enable x265 encoding with 10-bit color depth, reducing banding artifacts in gradients compared to 8-bit OpenCV output (based on PR by @thehhmdb - thank you!)
- ** Fix: MPS bicubic upscaling compatibility** - Added CPU fallback for bicubic+antialias interpolation on PyTorch versions before 2.8.0, resolving RGBA alpha upscaling errors on Apple Silicon
- ⚡ Fix: Cross-platform histogram matching - Replaced scatter_ operation with argsort+index_select for improved reliability across CUDA, ROCm, and MPS backends
- ** MPS: Remove sync overhead** - Reverted unnecessary
torch.mps.synchronize() calls introduced in v2.5.21 for consistent behavior with CUDA pipeline
2025.12.12 - Version 2.5.21
- ️ Fix: GGUF dequantization error on MPS - Resolved shape mismatch error introduced in 2.5.20 by skipping GGUF quantized buffers in precision conversion - these must remain in packed format for on-the-fly dequantization during inference
- ** MPS: Eliminate CPU sync overhead** - Skip unnecessary CPU tensor offload on Apple Silicon unified memory architecture, preventing sync stalls that caused slowdowns. Input images and output video now stay on MPS device throughout the pipeline
- ⚡ MPS: Preload text embeddings - Load text embeddings before Phase 1 encoding to avoid sync stall at Phase 2 start, improving timing accuracy and throughput
- ** MPS: Optimized model cleanup** - Skip redundant CPU movement before model deletion on unified memory
2025.12.12 - Version 2.5.20
- ⚡ Expanded attention backends - Full support for Flash Attention 2 (Ampere+), Flash Attention 3 (Hopper+), SageAttention 2, and SageAttention 3 (Blackwell/RTX 50xx), with automatic fallback chains to PyTorch SDPA when unavailable (based on PR by @naxci1 - thank you!)
- ** macOS/Apple Silicon compatibility** - Replaced MPS autocast with explicit dtype conversion throughout VAE and DiT pipelines, resolving hangs and crashes on M-series Macs. BlockSwap now auto-disables with warning (unified memory makes it meaningless)
- ️ Flash Attention graceful fallback - Added compatibility shims for corrupted or partially installed flash_attn/xformers DLLs, preventing startup crashes
- ️ AMD ROCm: bitsandbytes conflict fix - Prevent kernel registration errors when diffusers attempts to re-import broken bitsandbytes installations
- ** ComfyUI Manager: macOS classifier fix** - Removed NVIDIA CUDA classifier causing false "GPU not supported" warnings on macOS
- ** Documentation updates** - Updated README with attention backend details, BlockSwap macOS notes, and clarified model caching descriptions
2025.12.10 - Version 2.5.19
- ** New header logo design** - Refreshed ASCII art banner (thanks @naxci1)
- ** Remove dead flash attention wrapper** - Removed legacy code from FP8CompatibleDiT; FlashAttentionVarlen already handles backend switching via its
attention_mode attribute
- ️ Fix graceful fallback from flash-attn - Add compatibility shims for corrupted flash_attn/xformers DLLs, preventing startup crashes when CUDA extensions are broken
- ** Improved VRAM tracking** - Separate allocated vs reserved memory tracking, Windows-only overflow detection (WDDM paging behavior)
- ♻️ Centralize backend detection - Unified
is_mps_available(), is_cuda_available(), get_gpu_backend() helpers across codebase
- ** Revert 2.5.14 VRAM limit enforcement** - Removed
set_per_process_memory_fraction call; Overflow detection and warnings remain.
2025.12.09 - Version 2.5.18
- ** CLI: Streaming mode for long videos** - New
--chunk_size flag processes videos in memory-bounded chunks, enabling arbitrarily long videos without RAM limits. Works with model caching (--cache_dit/--cache_vae) for chunk-to-chunk reuse (inspired by disk02 PR contribution)
- ⚡ CLI: Multi-GPU streaming - Each GPU now streams its segment internally with independent model caching, improving memory efficiency and enabling
--temporal_overlap blending at GPU boundaries
- ** CLI: Fix large video MemoryError** - Shared memory transfer replaces numpy pickling, preventing crashes on high-resolution/long video outputs (inspired by FurkanGozukara PR contribution)
2025.12.05 - Version 2.5.17
- ** Fix: Older GPU compatibility (GTX 970, etc.)** - Runtime bf16 CUBLAS probe replaces compute capability heuristics, correctly detecting unsupported GPUs without affecting RTX 20XX
2025.12.05 - Version 2.5.16
- ** Fix: Older GPU compatibility (GTX 970, etc.)** - Automatic fallback for GPUs without bfloat16 support
- ** Fix: Quality regression** - Reverted bfloat16 detection that was causing artifact issues
- ** Debug: Environment info display** - Shows system info in debug mode to help with issue reporting
- ** Docs: Simplified contribution workflow** - Streamlined to main branch only
2025.12.03 - Version 2.5.15
- ** Fix: MPS compatibility** - Disable antialias for MPS tensors and fix bfloat16 arange issues
- ⚡ Fix: Autocast device type - Use proper device type attribute to prevent autocast errors
- ** Memory: Accurate VRAM tracking** - Use max_memory_reserved for more precise peak reporting
- ** Fix: Triton compatibility** - Add shim for bitsandbytes 0.45+ / triton 3.0+ (fixes PyTorch 2.7 installation errors)
2025.12.01 - Version 2.5.14
- ** Fix: MPS device comparison** - Normalize device strings to prevent unnecessary tensor movements
- ** Memory: VRAM swap detection** - Peak stats now show GPU+swap breakdown when overflow occurs, with warning when swap detected
- ️ Memory: Enforce physical VRAM limit - PyTorch now OOMs instead of silently swapping to shared memory (prevents extreme slowdowns on Windows)
2025.11.30 - Version 2.5.13
- ** Fix: PyTorch 2.7+ triton import error** - Resolved installation crash caused by triton.ops import chain on newer triton versions
- ** Fix: OOM on float32 conversion for long videos** - Graceful fallback to native dtype when insufficient memory for float32 conversion
- ** Fix: CLI watermark error on macOS** - Resolved MPS-related watermark processing crash on Apple Silicon
2025.11.28 - Version 2.5.12
- ** Fix: Color artifacts regression** - Reverted in-place tensor operations in video transform pipeline that caused color artifacts on some images
2025.11.28 - Version 2.5.11
- ⚡ Feature: CUDNN attention backend - Added support for PyTorch 2.3+ CUDNN_ATTENTION backend with automatic fallback for older versions (thanks @eadwu)
- ** Fix: Memory spike for long videos** - VAE decode now streams directly to pre-allocated tensor, eliminating OOM errors during long video processing
- ** Fix: LAB color correction artifacts** - Resolved tile boundary artifacts using wavelet reconstruction preprocessing
- ** Fix: Color reference misalignment** - Fixed color correction frame alignment with temporal overlap
- ** Fix: MPS detection reliability** - Switched to canonical
torch.backends.mps.is_available() API for consistent Apple Silicon detection
- ️ Fix: Mac subprocess error - CLI now uses direct processing on Mac to avoid MPS allocator failures in child processes
- ️ Fix: Multi-GPU device assignment - CUDA_VISIBLE_DEVICES now set before spawn for proper worker inheritance
- ** Fix: BlockSwap logging** - Now shows effective/total blocks (e.g., 32/32) instead of raw requested value
- ** Feature: Auto bfloat16 detection** - Automatically detects bfloat16 support to prevent CUBLAS errors on older GPUs
- ** Feature: Peak RAM tracking** - Added RAM usage alongside VRAM in debug summary
- ⚡ Performance: In-place tensor ops - Reduced memory allocation overhead with in-place operations throughout pipeline
- ** Docs: Multi-GPU clarification** - Clarified frame-level parallelism behavior expectations for multi-GPU setups
2025.11.13 - Version 2.5.10
- ** Fix: Deterministic generation** - Identical images with the same seed now produce identical results across different sessions and batch positions
- ** Fix: Model caching with BlockSwap** - Resolved issue where cached DiT models wouldn't properly reload when VAE caching state changed
- ** Fix: Runner caching optimization** - Runner templates now correctly cache whenever both DiT and VAE are cached, regardless of caching order
- ** Fix: Case-insensitive model paths** - Extra model paths in YAML config now work regardless of case (seedvr2, SEEDVR2, SeedVR2, etc.)
- ** Fix: High resolution tile debug crash** - Fixed "NoneType has no attribute log" error when using maximum resolution with VAE tiling
- ** Fix: Temporal overlap logging** - Corrected frame count reporting when tempor