Skip to content

Commit a06afb5

Browse files
authored
Merge pull request #384 from AInVFX/main
v2.5.18: CLI streaming mode, multi-GPU streaming with caching, shared memory fix
2 parents 58bc9e8 + b101deb commit a06afb5

File tree

5 files changed

+503
-279
lines changed

5 files changed

+503
-279
lines changed

README.md

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,12 @@ We're actively working on improvements and new features. To stay informed:
3636

3737
## 🚀 Updates
3838

39+
**2025.12.09 - Version 2.5.18**
40+
41+
- **🚀 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](https://github.com/disk02) PR contribution)*
42+
- **⚡ 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
43+
- **🔧 CLI: Fix large video MemoryError** - Shared memory transfer replaces numpy pickling, preventing crashes on high-resolution/long video outputs *(inspired by [FurkanGozukara](https://github.com/FurkanGozukara) PR contribution)*
44+
3945
**2025.12.05 - Version 2.5.17**
4046

4147
- **🔧 Fix: Older GPU compatibility (GTX 970, etc.)** - Runtime bf16 CUBLAS probe replaces compute capability heuristics, correctly detecting unsupported GPUs without affecting RTX 20XX
@@ -771,9 +777,18 @@ The CLI provides comprehensive options for single-GPU, multi-GPU, and batch proc
771777
# Basic image upscaling
772778
python inference_cli.py image.jpg
773779

774-
# Basic video video upscaling with temporal consistency
780+
# Basic video upscaling with temporal consistency
775781
python inference_cli.py video.mp4 --resolution 720 --batch_size 33
776782

783+
# Streaming mode for long videos (memory-efficient)
784+
# Processes video in chunks of 330 frames to avoid loading entire video into RAM
785+
# Use --temporal_overlap to ensure smooth transitions between chunks
786+
python inference_cli.py long_video.mp4 \
787+
--resolution 1080 \
788+
--batch_size 33 \
789+
--chunk_size 330 \
790+
--temporal_overlap 3
791+
777792
# Multi-GPU processing with temporal overlap
778793
python inference_cli.py video.mp4 \
779794
--cuda_device 0,1 \
@@ -830,7 +845,8 @@ python inference_cli.py media_folder/ \
830845
- `--batch_size`: Frames per batch (must follow 4n+1: 1, 5, 9, 13, 17, 21...). Ideally matches shot length for best temporal consistency (default: 5)
831846
- `--seed`: Random seed for reproducibility (default: 42)
832847
- `--skip_first_frames`: Skip N initial frames (default: 0)
833-
- `--load_cap`: Load maximum N frames from video. 0 = load all (default: 0)
848+
- `--load_cap`: Maximum total frames to load from video. 0 = load all (default: 0)
849+
- `--chunk_size`: Frames per chunk for streaming mode. When > 0, processes video in memory-bounded chunks of N frames, writing each chunk before loading the next. Essential for long videos that would otherwise exceed RAM. Use with `--temporal_overlap` for seamless chunk transitions. 0 = load all frames at once (default: 0)
834850
- `--prepend_frames`: Prepend N reversed frames to reduce start artifacts (auto-removed) (default: 0)
835851
- `--temporal_overlap`: Frames to overlap between batches/GPUs for smooth blending (default: 0)
836852

0 commit comments

Comments
 (0)