Back to Moneyprinterturbo

GPU Docker Deployment Guide

docs/GPU_DOCKER_DEPLOYMENT.md

1.2.74.1 KB
Original Source

GPU Docker Deployment Guide

本文档介绍如何使用 GPU 加速 faster-whisper 字幕生成,大幅提升处理速度。

为什么要 GPU 加速

MoneyPrinterTurbo 中唯一的深度学习环节是 faster-whisper 语音识别(将音频转为带时间戳的字幕)。

  • CPU 模式(默认):large-v3 模型生成字幕较慢
  • GPU 模式:利用 NVIDIA GPU + CUDA 加速,速度提升 5-10 倍

注意:项目的其他环节(脚本生成、音频合成、视频剪辑)不涉及深度学习,GPU 只加速字幕生成。

部署方式

本项目提供两种 Docker 部署方式,默认 CPU 部署不受任何影响

CPU 部署(默认,零变化)

bash
docker compose up -d

使用原有的 Dockerfilepython:3.11-slim-bullseye),无需 GPU。

GPU 部署(有 NVIDIA GPU 的用户)

bash
docker compose -f docker-compose.yml -f docker-compose.gpu.yml up -d

使用 Dockerfile.gpunvidia/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. 环境验证

bash
# 确认 NVIDIA 驱动正常
nvidia-smi

# 确认 Docker 支持 GPU(Runtimes 中应包含 nvidia)
docker info | findstr nvidia

如果没有 nvidia runtime,需要先安装 NVIDIA Container Toolkit

配置 Whisper 使用 GPU

config.toml 中设置:

toml
subtitle_provider = "whisper"

[whisper]
model_size = "large-v3"
device = "cuda"           # 使用 GPU(CPU 用户设为 "cpu")
compute_type = "float16"  # GPU 推荐 float16(CPU 用户设为 "int8")

文件说明

文件用途
Dockerfile默认 CPU 镜像(原有,未修改)
Dockerfile.gpuGPU 镜像(新增,基于 NVIDIA CUDA)
docker-compose.yml默认 CPU 部署配置(原有,未修改)
docker-compose.gpu.ymlGPU 部署覆盖配置(新增)

GPU 部署步骤

第 1 步:拉取 CUDA 基础镜像

bash
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 步:构建并启动

bash
docker compose -f docker-compose.yml -f docker-compose.gpu.yml up -d --build

第 4 步:验证 GPU 是否生效

bash
docker exec -it moneyprinterturbo-api nvidia-smi

如果能看到 GPU 信息,说明 GPU 挂载成功。

显存与并发建议

GPU 显存建议最大并发任务数
4GB1-2
6GB2-3
8GB3-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.tomldevice = "cuda"(大小写敏感,不是 "CPU"
  • 确认 compute_type = "float16"
  • 确认 subtitle_provider = "whisper"