Tutorial · Migration guide
Real-ESRGAN API Alternative: Migrate Your Upscaling Pipeline
If you run Real-ESRGAN today, you know the three-stage pipeline: VRAM limits, tile overlap, and FFmpeg stitching. Here is the API equivalent — and the honest cost math.
The self-hosted reality
Real-ESRGAN is excellent and open source. Running it at scale is a three-stage pipeline: load the model on a GPU, tile the video because VRAM caps resolution, then stitch tiles with FFmpeg — with seam artifacts where tiles meet.
Migration map
| Self-hosted step | mlslabs API |
|---|---|
| Download RealESRGAN_x4plus.pth | Nothing — model hosted |
| VRAM planning (tile size) | No VRAM on your side |
| Tile + overlap + FFmpeg stitch | scale: 4, one call |
| Batch shell loops | Batch queue + webhooks |
| CUDA version pinning | Never |
Cost math
Self-hosting: a GPU instance 24/7 plus your engineering time on the tile pipeline. API: billed per second of output video. For bursty or library-scale work the API typically wins; for a permanently saturated GPU fleet, self-hosting may still win — we publish the break-even honestly.
Try it side by side
import mlslabs
client = mlslabs.Client("YOUR_API_KEY")
job = client.super_resolution.submit(
input_url="s3://bucket/archive-480p.mov",
output_url="s3://bucket/upscaled/",
scale=4,
denoise=0.4, detail=0.6,
)
job.wait()
print(job.status)