Files
audio2text/scripts/prefetch_models.sh
audio2text dev 73110848f4 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: 安装时预下载模型权重
2026-07-06 21:59:59 +08:00

59 lines
1.9 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env bash
# 预拉模型权重到 ./models volume避免容器启动时才下载。
#
# 用法:
# ./scripts/prefetch_models.sh # 读 config.yaml当前激活配置
# ./scripts/prefetch_models.sh config.gpu.yaml # 读指定配置文件
#
# 原理:用已构建的 audio2text 镜像跑一次性容器,挂载 ./models volume
# 执行 scripts/prefetch_models.py 把模型下到 HF cache。
# 容器运行时 HF_HOME=/models/huggingface 命中缓存,秒级加载。
#
# 幂等:已下过的模型跳过。换 config 的 model 后重跑即可补下新模型。
set -euo pipefail
cd "$(dirname "$0")/.."
ROOT="$(pwd)"
CONFIG="${1:-config.yaml}"
VARIANT="${AUDIO2TEXT_VARIANT:-cpu}"
# 选镜像:优先用 gpu 镜像GPU 模型大,可能要 cuda 才能 correctly 下载部分文件),
# 否则 cpu。两者都能下 HF 模型(下载是纯网络 IO不依赖 GPU
IMAGE="audio2text:cpu"
if docker image inspect audio2text:gpu >/dev/null 2>&1 && [ "$VARIANT" = "gpu" ]; then
IMAGE="audio2text:gpu"
fi
if ! docker image inspect "$IMAGE" >/dev/null 2>&1; then
echo "✗ 镜像 $IMAGE 不存在,请先 ./setup.sh 构建。" >&2
exit 1
fi
if [ ! -f "$ROOT/$CONFIG" ]; then
echo "✗ 配置文件不存在: $ROOT/$CONFIG" >&2
exit 1
fi
mkdir -p "$ROOT/models"
echo "==> 预拉模型"
echo " 镜像: $IMAGE"
echo " 配置: $CONFIG"
echo " 缓存: $ROOT/models (volume)"
echo
# 注意CONFIG_PATH 指向容器内路径,挂载配置文件为只读
MSYS_NO_PATHCONV=1 docker run --rm \
-v "$ROOT/models:/models" \
-v "$ROOT/$CONFIG:/app/config.yaml:ro" \
-e HF_HOME=/models/huggingface \
-e CT2_CACHE=/models/ctranslate2 \
-e CONFIG_PATH=/app/config.yaml \
"$IMAGE" \
python /app/scripts/prefetch_models.py /app/config.yaml
echo
echo "==> 完成。模型已缓存到 $ROOT/models/huggingface"
echo " 容器启动时会命中缓存,无需联网下载。"