4.1 KiB
4.1 KiB
GPU Docker Deployment Guide
本文档介绍如何使用 GPU 加速 faster-whisper 字幕生成,大幅提升处理速度。
为什么要 GPU 加速
MoneyPrinterTurbo 中唯一的深度学习环节是 faster-whisper 语音识别(将音频转为带时间戳的字幕)。
- CPU 模式(默认):
large-v3模型生成字幕较慢 - GPU 模式:利用 NVIDIA GPU + CUDA 加速,速度提升 5-10 倍
注意:项目的其他环节(脚本生成、音频合成、视频剪辑)不涉及深度学习,GPU 只加速字幕生成。
部署方式
本项目提供两种 Docker 部署方式,默认 CPU 部署不受任何影响:
CPU 部署(默认,零变化)
docker compose up -d
使用原有的 Dockerfile(python:3.11-slim-bullseye),无需 GPU。
GPU 部署(有 NVIDIA GPU 的用户)
docker compose -f docker-compose.yml -f docker-compose.gpu.yml up -d
使用 Dockerfile.gpu(nvidia/cuda:12.1.1-cudnn8-runtime-ubuntu22.04)并为 api 服务挂载 GPU。
GPU 部署前提条件
1. 硬件要求
- NVIDIA GPU(建议 6GB 以上显存)
large-v3模型在 GPU 上float16精度约占用 1.5GB 显存
2. 软件要求
- NVIDIA 驱动:最新版即可,运行
nvidia-smi确认 - Docker Desktop
- NVIDIA Container Toolkit:运行
docker info查看 Runtimes 列表中是否有nvidia
3. 环境验证
# 确认 NVIDIA 驱动正常
nvidia-smi
# 确认 Docker 支持 GPU(Runtimes 中应包含 nvidia)
docker info | findstr nvidia
如果没有 nvidia runtime,需要先安装 NVIDIA Container Toolkit。
配置 Whisper 使用 GPU
在 config.toml 中设置:
subtitle_provider = "whisper"
[whisper]
model_size = "large-v3"
device = "cuda" # 使用 GPU(CPU 用户设为 "cpu")
compute_type = "float16" # GPU 推荐 float16(CPU 用户设为 "int8")
文件说明
| 文件 | 用途 |
|---|---|
Dockerfile |
默认 CPU 镜像(原有,未修改) |
Dockerfile.gpu |
GPU 镜像(新增,基于 NVIDIA CUDA) |
docker-compose.yml |
默认 CPU 部署配置(原有,未修改) |
docker-compose.gpu.yml |
GPU 部署覆盖配置(新增) |
GPU 部署步骤
第 1 步:拉取 CUDA 基础镜像
docker pull nvidia/cuda:12.1.1-cudnn8-runtime-ubuntu22.04
如果使用了阿里云等镜像加速源,可能对
nvidia/cuda返回 403。请确保能从 Docker Hub 直接拉取。
第 2 步:修改 config.toml
按上文说明设置 subtitle_provider = "whisper" 和 device = "cuda"。
第 3 步:构建并启动
docker compose -f docker-compose.yml -f docker-compose.gpu.yml up -d --build
第 4 步:验证 GPU 是否生效
docker exec -it moneyprinterturbo-api nvidia-smi
如果能看到 GPU 信息,说明 GPU 挂载成功。
显存与并发建议
| GPU 显存 | 建议最大并发任务数 |
|---|---|
| 4GB | 1-2 |
| 6GB | 2-3 |
| 8GB | 3-4 |
| 12GB+ | 5 |
可通过 config.toml 中的 max_concurrent_tasks 控制并发数。
故障排查
问题 1:镜像拉取失败(403 Forbidden)
阿里云镜像加速对 nvidia/cuda 返回 403。解决方法:
- 配置其他可用的镜像加速源
- 或直接
docker pull nvidia/cuda:12.1.1-cudnn8-runtime-ubuntu22.04
问题 2:pip 安装报 Cannot uninstall blinker
Ubuntu 22.04 系统自带的 blinker 通过 distutils 安装,pip 无法卸载。Dockerfile.gpu 已通过 apt-get remove -y python3-blinker 处理。
问题 3:容器内 nvidia-smi 找不到 GPU
- 确认宿主机已安装 NVIDIA Container Toolkit
- 确认
docker info中 Runtimes 包含nvidia - 确认使用了 GPU 部署命令:
docker compose -f docker-compose.yml -f docker-compose.gpu.yml up -d
问题 4:Whisper 报 CUDA 错误
- 确认
config.toml中device = "cuda"(大小写敏感,不是"CPU") - 确认
compute_type = "float16" - 确认
subtitle_provider = "whisper"