Files
vrsub/docs/configuration.md
T
cat-shark 171b088e7c feat: 批量流水线按 GPU 资源调度(非 GPU 阶段并行、GPU 阶段互斥)
此前组内阶段是串行的(先全部提音、再全部转写、再全部翻译),LLM 走线上端点时
翻译阶段不占显存、GPU 全程空转——实测占整轮挂钟约 40%(19.6W / 272MiB)。

- `_run_job` 改为按组启动在途流水线:每个视频独立推进自己的阶段,最多
  `WOV_BATCH_PIPELINE_WORKERS`(默认 4)个阶段在途。
- 派发只看资源:`stage_gpu_need_mb` 为 0 的阶段(提音、线上翻译、ASS)立刻派发,
  可与其它视频的转写并行;需要 GPU 的阶段由 `GpuGate` 互斥准入,并按"阶段索引
  最小者优先"派发,组内仍是先跑完全部转写再进翻译——本机 Ollama 模型每组只
  加载一次,不需要按"是否云端"写分支。
- 同一阶段只在途一份(派发即标记 running),单视频异常不带走整组;暂停沿用
  run 级 paused.flag,暂停后不再派发新阶段。
- 测试:远端翻译与其它视频转写重叠、本机端点下全部转写先于翻译且翻译互斥、
  提音与转写重叠,以及既有分组/暂停/失败隔离用例。
2026-09-18 22:40:53 +08:00

4.3 KiB
Raw Blame History

配置与启动

启动

uv sync
uv run uvicorn wov_app.main:app --reload

访问:

http://127.0.0.1:8000/              应用中心(上传视频 → 字幕生成)
http://127.0.0.1:8000/tasks.html    任务管理
http://127.0.0.1:8000/batch.html    批量处理(按文件夹)
http://127.0.0.1:8000/admin.html    管理后台(工作流)
http://127.0.0.1:8000/workflow.html 工作流编排(DAG JSON
http://127.0.0.1:8000/docs          API 文档

环境变量

变量 默认值 说明
WOV_DATA_DIR <根>/data 数据目录
WOV_DB_PATH <根>/data/wov.db SQLite 路径
WOV_STORAGE_DIR <根>/data/storage 上传与产物根目录
WOV_AUTO_SEED 1 启动时创建内置工作流
WOV_SCHEDULER_ENABLED 1 启动后台调度器
WOV_SCHEDULER_INTERVAL_SECONDS 1.0 调度轮询间隔
WOV_CLEANUP_ENABLED 1 开启孤儿数据定时清理
WOV_CLEANUP_INTERVAL_SECONDS 3600 孤儿清理扫描周期(秒)
WOV_CLEANUP_GRACE_SECONDS 3600 孤儿清理宽限期(秒)
WOV_BATCH_ENABLED 1 开启文件夹批量处理引擎(处理 source=batch 任务)
WOV_BATCH_INTERVAL_SECONDS 1.0 批量引擎轮询间隔
WOV_BATCH_STAGE_GROUP_SIZE 8 批量流水线分组大小:组内每个视频独立推进阶段(详见 operations.md),GPU 阶段组内串行、非 GPU 阶段并行;本机模型每组只加载一次
WOV_BATCH_PIPELINE_WORKERS 4 批量组内在途阶段上限:提音/线上翻译/ASS 等不吃 GPU 的阶段可并行,GPU 阶段仍互斥
WOV_DB_BUSY_TIMEOUT_SECONDS 30 SQLite 写锁等待时长(并发写产物/进度时排队而不是立刻报错);库自动开启 WAL
WOV_LOCAL_MODEL_HOSTS 视为「本机模型」的额外主机名/IP(逗号分隔):Ollama 跑在本机局域网地址上时必须声明,否则会被当成不占显存的远端端点
WOV_LOCAL_LLM_RESERVE_MB 22528 本机 LLM 端点占用的显存预留(MB):常驻期间转写阶段会等待显存
WOV_LOCAL_VLM_RESERVE_MB 8192 本机 VLM/OCR 端点占用的显存预留(MB)
WOV_AUTO_VAD 1 开启每视频自适应 VAD 调参(详见 adaptive_vad.md
WHISPER_MODEL_PATH 模型权重解析 显式指定 whisper 模型路径
WHISPER_DEVICE auto 转写设备
LLM_API_BASE https://api.siliconflow.cn/v1/chat/completions LLM 兼容接口
LLM_API_KEY 空(读 .env SiliconFlow Bearer Key,存于 gitignored 的 .env
LLM_MODEL Qwen/Qwen3.5-35B-A3B LLM 模型名(默认值与例外说明见 decisions.md
LLM_TIMEOUT_SECONDS 600 LLM 单请求超时(llm-filter 内部默认 60
LLM_UNLOAD_AFTER 空(按端点自动) llm-translate 结束后是否卸载本地模型:空=端点在本机时卸载(把显存让给后续 whisper 等节点)、1 强制卸载、0 关闭;节点参数 unload_after 优先级更高
OLLAMA_HOST http://192.168.123.70:11434 Ollama 服务地址
VLM_MODEL glm-ocr:latest VLM OCR 模型
VLM_PROMPT 提取图像中的文字,不要描述图片中的内容 OCR 提示词(字幕流水线在 ocr-subtitle 工作流的 subtitle-ocr 节点参数中显式指定同一提示词)
VLM_TIMEOUT_SECONDS 5 VLM 单请求整体超时上限(每次调用 5 秒,超时即终止;流式读取同样受此截止约束)
FFMPEG_BIN 显式 ffmpeg 路径(否则 PATH → imageio-ffmpeg

Python 环境与 uv 管理

  • 统一使用 uv 管理虚拟环境和依赖,禁止直接使用 pip 修改依赖。
  • 基础命令:uv sync(安装含 dev 组依赖)、uv run <command>uv add <package>uv lock
  • 虚拟环境位于 .venv,测试依赖在 [dependency-groups] dev
  • 新增依赖时使用 uv add,不修改系统 Python 或全局环境。

相关文档