Remote Upscaling
Offload video upscaling to powerful cloud GPUs for dramatically faster processing. All pipeline settings work remotely, and results are downloaded automatically.
Overview
Remote upscaling lets you process videos on cloud GPU instances instead of your local machine. This is especially useful for long videos, high scale factors (4x or 8x), or when your local GPU is not powerful enough. Cloud instances with modern GPUs like the RTX 3090 or RTX 4090 can process frames at 5 to 10 FPS, making even large upscaling jobs practical.
Full pipeline support
Instance Setup
Before you can upscale remotely, you need a running cloud instance of the correct type. Recaster uses Vast.ai for cloud GPU provisioning, and upscaling uses a dedicated UPSCALE instance type.
Open the Remote panel
Launch an Upscale instance
Wait for provisioning
/workspace/upscale/ with input, output, models, and previews subdirectories.Instance ready
Three-Phase Workflow
Remote upscaling follows a three-phase workflow: upload, process, and download. Each phase shows progress in the interface and can be canceled at any point.
Phase 1: Upload
Your video file is uploaded to the cloud instance via rsync. The progress bar shows upload percentage in real time. Upload speed depends on your internet connection and the file size.
Upload Details
- Destination:
/workspace/upscale/input/ - Transfer method: rsync over SSH
- Progress tracking: real-time percentage via rsync progress parsing
Phase 2: Process
The cloud instance runs the upscaling pipeline on each frame. Three standalone scripts are automatically deployed to the instance on first use:
upscale_server.py— Main processing server with CLI (approximately 500 lines)swinir_upscaler.py— Standalone SwinIR implementation (approximately 320 lines)real_esrgan_upscaler.py— Standalone Real-ESRGAN implementation (approximately 320 lines)
These scripts have no dependencies on Recaster itself — they are standalone ONNX Runtime + OpenCV implementations that run directly on the cloud instance. Models are downloaded automatically on demand.
During processing, the remote server outputs progress messages that Recaster parses in real time:
PROGRESS:100/1000:10% # Frame progress
PROGRESS:200/1000:20%
PROGRESS:audio:0% # Audio muxing started
PROGRESS:audio:100% # Audio muxing complete
RESULT:/workspace/output.mp4 # Final result pathPhase 3: Download
Once processing completes, the upscaled video is downloaded back to your local machine via rsync. The progress bar shows download percentage. The final file is saved to your chosen output path.
Enabling Remote Mode
To switch the upscaling widget to remote mode:
- Open the Video Upscaling interface by clicking Upscale in the sidebar.
- Toggle the Remote switch at the top of the widget. This switch is only visible with a Studio license.
- If you have one UPSCALE instance running, it auto-selects. If you have multiple instances, a selection dialog appears.
- If no UPSCALE instances are running, you will be prompted to launch one from the Remote panel.
Performance Estimates
The table below shows typical total processing times for common scenarios on a modern cloud GPU (RTX 3090 or RTX 4090). Times include upload, processing, and download phases.
| Video Length | Upload | Processing | Download | Total |
|---|---|---|---|---|
| 30 sec @ 30fps | ~15s (50 MB) | ~90s (900 frames) | ~45s (200 MB 4x) | ~2.5 min |
| 2 min @ 30fps | ~60s (200 MB) | ~6 min (3600 frames) | ~3 min (800 MB 4x) | ~10 min |
Processing rate is approximately 5 to 10 FPS depending on the model, scale factor, and GPU. SwinIR is slightly slower than Real-ESRGAN. Multi-pass upscaling takes proportionally longer (roughly 2x for 4x scale, 3x for 8x scale).
Reduce download size
Remote Server CLI
Recaster automatically constructs the remote command from your pipeline settings. For reference, the full set of CLI arguments supported by the remote server is listed below:
| Argument | Description |
|---|---|
| --model | Model ID (swinir_x2, swinir_x4, real_esrgan_x2, real_esrgan_x4, real_esrgan_x8) |
| --scale | Target scale factor (2, 4, 8) |
| --multi-pass | Enable multi-pass upscaling (flag, no value) |
| --denoise | Enable denoising (flag) |
| --denoise-strength | Denoise strength (0 – 10, default 2.0) |
| --sharpen | Enable sharpening (flag) |
| --sharpen-strength | Sharpen strength (0 – 2.0, default 0.5) |
| --color-correction | Enable color correction (flag) |
| --tile-size | Tile size in pixels (128 / 256 / 512, default 256) |
| --tile-overlap | Tile overlap in pixels (16 – 64, default 32) |
| --preview-interval | Preview snapshot interval in frames (default 30) |
Cancellation
You can cancel remote upscaling at any point by clicking the Stop button. Recaster terminates the active worker (upload, processing, or download) with a graceful 3-second shutdown timeout. The rsync and SSH processes on the remote instance are properly terminated.
Costs continue while instance runs
Troubleshooting
Upload stuck or slow
Large video files take time to upload. Check your internet connection speed. For very large files (over 1 GB), consider trimming the video to the segment you need before uploading.
Processing stuck at 0%
The remote scripts are deployed on first use, which may take a moment. If progress remains at 0% for more than a minute, check that the instance is still running in the Remote panel and that the SSH connection is stable.
No UPSCALE instance available
Make sure you have launched an instance with the Upscale type from the Remote panel. Training or Quick Recast instances cannot be used for upscaling.
GPU not detected on remote
The provisioning script verifies CUDA provider availability. If the GPU is not detected, the system falls back to CPU processing. Ensure the Vast.ai instance has GPU drivers installed (this is standard for GPU instances).
Was this page helpful?