共绩科技
共绩科技

预制服务

FlashVSR API 镜像使用说明

基座:FlashVSR v1.1(单步扩散流式视频超分,Wan2.1-1.3B DiT + TCDecoder)

适配:RTX 5090 双卡(DiT+KV 于卡 A,TCDecoder 于卡 B)

用途: 生成 768p 视频的高质量 2K 超分(质量优于 RTX VSR,速度较慢)

一、镜像信息

镜像地址harbor.suanleme.cn/public-hub/flashvsr:1.1-5090-fat
暴露端口8000(FastAPI + uvicorn 单 worker,GPU 任务队列串行)
GPU 需求2× RTX 5090(32GB×2):GPU0 峰值 27.8 GiB / GPU1 峰值 10.5 GiB
推荐规格5090×2
并发模型单实例串行(GPU 互斥),扩容靠加节点

二、部署

2.1 创建任务

  • 资源:5090×2
  • 镜像:harbor.suanleme.cn/public-hub/flashvsr:1.1-5090-fat
  • 必须环境变量:
PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True
NVIDIA_DRIVER_CAPABILITIES=compute,utility

expandable_segments 是硬性要求——不开时 PyTorch 分配器碎片额外吃 ~5.9 GiB,GPU0 必 OOM(fix 系列实证)。

2.2 启动特性

  • 容器入口先跑 imports 自检(快速失败,不带病服务),再起 API
  • 模型懒加载:首次任务触发权重加载(~26s),此后常驻
  • 首任务含模型加载 ~60-90s,属正常

2.3 健康检查(建议配)

探针配置
startup_probehttpGet /healthz:8000,initial_delay 90s,period 20s,failure_threshold 10
liveness_probehttpGet /healthz:8000,period 30s,failure_threshold 3

三、API

3.1 端点总览

方法路径说明
GET/healthz健康检查(model_ready / busy / queue_len)
POST/api/v1/upscaleJSON 提交(video_b64 或 video_url,scale 可选)
POST/api/v1/upscale/filemultipart 文件上传(推荐)
GET/api/v1/tasks/{task_id}轮询进度(progress 0~1)
GET/api/v1/tasks/{task_id}/result下载成品 MP4

3.2 提交任务

curl -F "file=@input.mp4" -F "scale=2.0" \
     http://<服务地址>/api/v1/upscale/file
# → {"task_id":"6c88f3fa796a","status":"queued","poll":"/api/v1/tasks/6c88f3fa796a"}

3.3 参数

参数类型默认说明
scalefloat2.0放大倍率(官方按 4× 训练,2× 属 OOD,实测质量未崩)
video_url / video_b64str-JSON 提交二选一

3.4 尺寸处理链

输入 → scale 缩放 → 128 对齐 → 中心裁剪。输出分辨率可能与理论值差 ±128 内(例:768×1408 → 1536×2816)。

3.5 轮询与下载

curl http://<服务地址>/api/v1/tasks/6c88f3fa796a
# → {"status":"done","meta":{"in":"768x1408","out":"1536x2816",
#    "frames_in":33,"frames_out":29,"fps":12,"infer_s":12.9,
#    "s_per_frame":0.443,"gpu0_peak_gib":27.77,"gpu1_peak_gib":10.53,
#    "total_s":38.5,"size_mb":1.3}}

curl -o out.mp4 http://<服务地址>/api/v1/tasks/6c88f3fa796a/result

四、性能实测(2×RTX 5090)

输入输出推理端到端
768×1408 竖屏, 33 帧1536×281612.9s(0.44 s/帧)38.5s
1376×768 横屏, 362 帧(15s@24fps)2688×1536115~140s(0.32-0.39 s/帧)241~271s
  • 音轨自动 mux(有音轨时)
  • 显存恒定不随视频长度增长(流式管线,KV 有界)
  • 质量参考(vs bicubic):锐度提升 8-14×,PSNR 23-32dB

五、运维注意

  1. 单实例串行:GPU 任务队列互斥,排队状态见 healthz 的 queue_len;扩容靠加节点(共绩 change_points)。
  2. 任务状态存内存:实例重启丢任务记录;产线客户端需超时重提。
  3. 结果文件不自动清理:/work/api/out/ 累积需清理或挂 NAS。
  4. 瘦镜像变体(裸机挂载场景):docker run -v /path/to/weights:/weights:ro ... flashvsr:1.1-5090 api,共绩上用 fat 版。
  5. 质量 vs 速度选型:追求质量/长视频 → FlashVSR(0.35 s/帧);追求吞吐/批量 → RTX VSR(~0.09s/帧 + 3 并发)。