feat: 调度器+并发管线+GPU优化+日志分级+前端修复
- scheduler: ffmpeg 异步线程 + GPU 串行调度 + 模型复用(2N→2 次加载) - pipeline: 阶段拆分(extract/asr/translate),中间数据存 Task 字段 - translate_service: 长度排序批处理,padding 浪费减少 91% - model_manager: ASR/翻译不共驻,BatchedInferencePipeline 批量解码 - 日志分级: INFO=任务流转里程碑,DEBUG=进度详情;默认 INFO - 前端: 日志最新在上+滚动感知+退避轮询;24h 时间;上传中状态显示 - /health: 返回完整 Whisper/NLLB 配置 - upload_service: 单事务 complete + 扩展名白名单 - task_router: 合并 UploadSession 虚拟任务到列表 - Dockerfile: CPU/GPU 独立构建链,deps 缓存稳定 - prefetch_models: 安装时预下载模型权重
This commit is contained in:
19
README.md
19
README.md
@@ -54,8 +54,10 @@ Spring 风格分层,HTTP 边界(controllers)与业务逻辑(services)
|
||||
```
|
||||
audio2text/
|
||||
├── Dockerfile # 一份 Dockerfile,ARG VARIANT=cpu|gpu 出两个镜像
|
||||
├── docker-compose.yml # cpu / gpu 两个 profile
|
||||
├── docker-compose.yml # cpu / gpu / dev 三个 profile
|
||||
├── setup.sh / start.sh / stop.sh # 安装 / 启动 / 停止(包装 docker 命令)
|
||||
├── scripts/
|
||||
│ └── prefetch_models.{sh,py} # 预拉模型权重到 ./models volume(避免首次启动下载)
|
||||
├── requirements.txt
|
||||
├── config.example.yaml # 配置模板(复制为 config.yaml 后填值)
|
||||
├── README.md
|
||||
@@ -149,6 +151,21 @@ cd /root/zikai/audio2text
|
||||
首次启动会下载模型(Whisper `tiny.en` ~39M + opus-mt ~300MB)到 `./models` volume,
|
||||
之后秒起。启动后浏览器打开 `http://127.0.0.1:8000/`,拖入视频或音频文件即可。
|
||||
|
||||
### 预拉模型(避免首次启动卡在下载)
|
||||
|
||||
容器首次处理任务时会从 HuggingFace 下载模型,大模型(GPU 的 large-v3-turbo ~3GB +
|
||||
NLLB-1.3B ~2.5GB)下载耗时较长。可用预拉脚本提前下好到 `./models` volume,之后容器启动
|
||||
即用、无需联网:
|
||||
|
||||
```bash
|
||||
./scripts/prefetch_models.sh # 读 config.yaml(当前激活配置)
|
||||
./scripts/prefetch_models.sh config.gpu.yaml # 读指定配置(如切换到 GPU 前预拉大模型)
|
||||
```
|
||||
|
||||
脚本用已构建的镜像跑一次性容器,读配置里的 `asr.model` / `translation.model`,下载到
|
||||
`./models/huggingface`(HF 标准缓存)。**幂等**:已下过的模型自动跳过。换 config 的模型
|
||||
名后重跑即可补下新模型,无需重建镜像。
|
||||
|
||||
### CPU 模型选型
|
||||
|
||||
| 组件 | 模型 | 大小 | 说明 |
|
||||
|
||||
Reference in New Issue
Block a user