Files
MoneyPrinterTurbo/docs/GPU_DOCKER_DEPLOYMENT.md
2026-06-12 14:59:20 +08:00

143 lines
4.1 KiB
Markdown
Raw 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.

# 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
```
使用原有的 `Dockerfile``python:3.11-slim-bullseye`),无需 GPU。
### GPU 部署(有 NVIDIA GPU 的用户)
```bash
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. 环境验证
```bash
# 确认 NVIDIA 驱动正常
nvidia-smi
# 确认 Docker 支持 GPURuntimes 中应包含 nvidia
docker info | findstr nvidia
```
如果没有 `nvidia` runtime需要先安装 [NVIDIA Container Toolkit](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html)。
## 配置 Whisper 使用 GPU
`config.toml` 中设置:
```toml
subtitle_provider = "whisper"
[whisper]
model_size = "large-v3"
device = "cuda" # 使用 GPUCPU 用户设为 "cpu"
compute_type = "float16" # GPU 推荐 float16CPU 用户设为 "int8"
```
## 文件说明
| 文件 | 用途 |
|---|---|
| `Dockerfile` | 默认 CPU 镜像(原有,未修改) |
| `Dockerfile.gpu` | GPU 镜像(新增,基于 NVIDIA CUDA |
| `docker-compose.yml` | 默认 CPU 部署配置(原有,未修改) |
| `docker-compose.gpu.yml` | GPU 部署覆盖配置(新增) |
## 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 显存 | 建议最大并发任务数 |
|---|---|
| 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`
### 问题 2pip 安装报 `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`
### 问题 4Whisper 报 CUDA 错误
- 确认 `config.toml``device = "cuda"`(大小写敏感,不是 `"CPU"`
- 确认 `compute_type = "float16"`
- 确认 `subtitle_provider = "whisper"`