本地模型部署方案 - 三机配置
硬件配置: - 主机A:6GB GPU - 主机B:8GB GPU - 主机C:8GB GPU(新增) - 总计:22GB显存,可并发运行多个任务
一、推荐分配方案
方案A:专卡专用(高吞吐量)
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ 主机A (6GB) │ │ 主机B (8GB) │ │ 主机C (8GB) │
├─────────────────┤ ├─────────────────┤ ├─────────────────┤
│ 🎤 TTS (1GB) │ │ 📝 翻译 (4GB) │ │ 🎨 图片 (6GB) │
│ │ │ │ │ │
│ 💾 缓存 (1GB) │ │ 🧠 LLM (2GB) │ │ 🎬 视频 (2GB) │
│ │ │ │ │ │
│ 🔧 调度 (4GB) │ │ 🔄 批处理(2GB) │ │ 📦 存储(存储) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
优势: - ✅ 三机并行,吞吐量提升300% - ✅ 任务隔离,互不干扰 - ✅ 每个主机负载均衡(~50-60%显存占用) - ✅ 一机故障不影响其他任务
并发能力: - 翻译:5-10集/小时 - TTS:15-20集/小时 - 图片生成:30-50张/分钟 - 视频渲染:2-3集/小时
方案B:动态负载均衡(高资源利用率)
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ 主机A (6GB) │ │ 主机B (8GB) │ │ 主机C (8GB) │
├─────────────────┤ ├─────────────────┤ ├─────────────────┤
│ 🔄 调度器 │ │ 🌐 API网关 │ │ 💾 共享存储 │
│ │ │ │ │ │
│ 📊 监控 (1GB) │ │ 🔄 负载均衡 │ │ 📂 缓存池 │
│ │ │ │ │ │
│ 🚀 任务池A │ │ 🚀 任务池B │ │ 🚀 任务池C │
│ - TTS │ │ - 翻译 │ │ - 图片 │
│ - 小模型 │ │ - 大模型 │ │ - 视频 │
│ (5GB可浮动) │ │ (7GB可浮动) │ │ (7GB可浮动) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │ │
└─────────────────────┴─────────────────────┘
高速网络(万兆/千兆)
优势: - ✅ 资源利用率提升40% - ✅ 灵活应对不同负载 - ✅ 可自动扩展 - ✅ 高可用性
技术栈: - 调度器:Celery + Redis - 负载均衡:Nginx - 共享存储:NFS / GlusterFS - 监控:Prometheus + Grafana
二、详细任务分配
主机A (6GB) - 轻量级任务
任务1: TTS音频生成
模型: Sherpa-ONNX + VITS
显存: 1GB
性能: 2x实时
并发: 2-4个音频流
任务2: 小模型推理
模型: Qwen2.5-3B (备用翻译)
显存: 2-3GB
用途: 快速翻译、文本处理
任务3: 任务调度
组件: Celery Worker + Redis
显存: <1GB
用途: 任务队列管理
总显存占用: ~4-5GB
主机B (8GB) - 中等任务
任务1: 翻译模型(主)
模型: Qwen2.5-7B-Instruct-GPTQ-Int4
显存: 4GB
性能: 30-50 tokens/s
批处理: 是 (batch_size=4)
任务2: 批处理缓存
用途: 中间结果缓存
显存: 1-2GB
任务3: API网关
组件: FastAPI + gunicorn
显存: <1GB
用途: 统一API入口
总显存占用: ~6-7GB
主机C (8GB) - 重型任务
任务1: 图片生成
模型: Stable Diffusion XL + LoRA
显存: 6GB
性能: 5-10秒/张
分辨率: 1920x1080
任务2: 视频渲染(GPU加速)
组件: FFmpeg + CUDA
显存: 2GB
性能: 2-3倍实时
分辨率: 1080p @ 30fps
总显存占用: ~8GB
三、工作流程
端到端流程(三机并行)
graph TB
A[脚本输入] --> B[主机B: 翻译]
B --> C{翻译完成?}
C -->|是| D[主机A: TTS音频]
C -->|否| B
D --> E{音频完成?}
E -->|是| F[主机C: 图片生成]
E -->|否| D
F --> G{图片完成?}
G -->|是| H[主机C: 视频合成]
G -->|否| F
H --> I[输出: 视频+音频+图片]
style B fill:#90EE90
style D fill:#87CEEB
style F fill:#DDA0DD
style H fill:#FFD700
并行优势: - 翻译进行时:主机A可处理其他TTS任务 - TTS进行时:主机C可同时生成图片 - 图片生成时:主机B可翻译下一集
效率提升: - 单机:~3小时/集 - 三机:~30分钟/集 - 提升6倍
四、网络架构
推荐拓扑
┌─────────────┐
│ 公网IP │
│ (可选) │
└──────┬──────┘
│
┌──────┴──────┐
│ Nginx │
│ 反向代理 │
└──────┬──────┘
│
┌────────────┼────────────┐
│ │ │
┌─────┴────┐ ┌───┴────┐ ┌───┴────┐
│ 主机A │ │ 主机B │ │ 主机C │
│ 6GB GPU │ │ 8GB GPU│ │ 8GB GPU│
│:8001 │ │:8002 │ │:8003 │
└──────────┘ └────────┘ └────────┘
│ │ │
└────────────┼────────────┘
│
┌──────┴──────┐
│ 共享存储 │
│ (NFS) │
│ /data/ │
└─────────────┘
网络配置:
网络类型: 内网高速(千兆/万兆)
IP分配:
主机A: 192.168.1.10
主机B: 192.168.1.11
主机C: 192.168.1.12
存储: 192.168.1.20
端口映射:
主机A: 8001 (TTS API)
主机B: 8002 (翻译API)
主机C: 8003 (图片API + 视频渲染)
网关: 8000 (统一入口)
共享存储:
协议: NFSv4
挂载点: /mnt/shared
带宽: 千兆以上
五、数据存储方案
分层存储
/mnt/shared/
├── models/ # 模型仓库(100GB)
│ ├── translation/
│ │ └── qwen2.5-7b-int4/
│ ├── tts/
│ │ ├── vits-male/
│ │ └── vits-female/
│ └── image/
│ └── sdxl-base/
│
├── cache/ # 缓存池(200GB)
│ ├── translation/
│ ├── audio/
│ └── images/
│
├── output/ # 输出文件(500GB)
│ ├── episodes/
│ ├── audio/
│ └── videos/
│
└── logs/ # 日志文件(10GB)
├── translation.log
├── tts.log
└── image_gen.log
存储需求: - 模型仓库:100GB - 缓存池:200GB - 输出文件:500GB+ - 日志文件:10GB - 总计:~800GB+
推荐配置: - SSD(系统):256GB × 3(每主机) - HDD(数据):2TB × 1(共享存储) - 或:1TB SSD(高速缓存) + 2TB HDD(归档)
六、API统一入口
网关设计
# 主机A :8000 - 统一API网关
from fastapi import FastAPI, Request
from httpx import AsyncClient
app = FastAPI()
# 服务发现
SERVICES = {
"translation": "http://192.168.1.11:8002", # 主机B
"tts": "http://192.168.1.10:8001", # 主机A
"image": "http://192.168.1.12:8003", # 主机C
"video": "http://192.168.1.12:8003" # 主机C
}
@app.post("/api/v1/translate")
async def translate(request: Request):
"""转发翻译请求到主机B"""
async with AsyncClient() as client:
response = await client.post(
f"{SERVICES['translation']}/translate",
content=await request.body()
)
return response.json()
@app.post("/api/v1/tts")
async def tts(request: Request):
"""转发TTS请求到主机A"""
async with AsyncClient() as client:
response = await client.post(
f"{SERVICES['tts']}/tts",
content=await request.body()
)
return response.json()
@app.post("/api/v1/generate-image")
async def generate_image(request: Request):
"""转发图片生成请求到主机C"""
async with AsyncClient() as client:
response = await client.post(
f"{SERVICES['image']}/generate-image",
content=await request.body()
)
return response.json()
优势: - 统一API接口 - 服务发现与负载均衡 - 请求缓存与限流 - 监控与日志集中
七、监控与运维
监控指标
主机监控:
- GPU显存使用率
- GPU温度
- GPU利用率
- CPU使用率
- 内存使用率
- 磁盘IO
- 网络IO
任务监控:
- 任务队列长度
- 任务处理时间
- 任务成功率
- API响应时间
- 错误率
业务监控:
- 集数翻译数量
- 音频生成时长
- 图片生成数量
- 视频渲染进度
监控工具
Grafana面板示例:
┌─────────────────────────────────────┐
│ 灵族AI集群监控大屏 │
├─────────────────────────────────────┤
│ GPU集群利用率 │
│ ████████████░░░░░░░░ 60% │
│ │
│ 主机A (6GB): ████░░░░░░░ 40% │
│ 主机B (8GB): ██████░░░░░ 60% │
│ 主机C (8GB): ████████░░░ 80% │
├─────────────────────────────────────┤
│ 任务队列 │
│ 翻译: 5个进行中 | 12个等待 │
│ TTS: 2个进行中 | 8个等待 │
│ 图片: 10个进行中 | 0个等待 │
├─────────────────────────────────────┤
│ 今日产出 │
│ 翻译: 15集 | 音频: 20集 │
│ 图片: 120张 | 视频: 3集 │
└─────────────────────────────────────┘
八、部署步骤
第一阶段:基础环境(1天)
# 1. 主机配置
# 主机A (6GB)
sudo nvidia-smi
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
# 主机B (8GB)
# 同上
# 主机C (8GB)
# 同上
# 2. 共享存储配置(主机C作为存储服务器)
sudo apt install nfs-kernel-server
sudo mkdir -p /data/shared
sudo chmod 777 /data/shared
# /etc/exports
/data/shared 192.168.1.0/24(rw,sync,no_subtree_check)
# 3. 客户端挂载(主机A、B)
sudo apt install nfs-common
sudo mount 192.168.1.12:/data/shared /mnt/shared
# 4. 配置开机自动挂载
# /etc/fstab
192.168.1.12:/data/shared /mnt/shared nfs defaults 0 0
第二阶段:模型部署(2-3天)
# 主机B: 部署翻译模型
cd /mnt/shared/models/translation
git clone https://huggingface.co/Qwen/Qwen2.5-7B-Instruct-GPTQ-Int4
pip install vllm
python -m vllm.entrypoints.openai.api_server \
--model Qwen/Qwen2.5-7B-Instruct-GPTQ-Int4 \
--port 8002 \
--gpu-memory-utilization 0.8
# 主机A: 部署TTS模型
cd /mnt/shared/models/tts
git clone https://github.com/k2-fsa/sherpa-onnx
pip install sherpa-onnx
python -m sherpa_onnx.offline_tts \
--port 8001
# 主机C: 部署图片生成模型
cd /mnt/shared/models/image
git clone https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0
pip install diffusers accelerate
python -m diffusers.cli.serve \
--model stabilityai/stable-diffusion-xl-base-1.0 \
--port 8003
第三阶段:API网关(1天)
第四阶段:集成测试(1-2天)
# 测试翻译
curl -X POST http://192.168.1.10:8000/api/v1/translate \
-H "Content-Type: application/json" \
-d '{"text": "今天我们聊聊混元气", "target_lang": "en"}'
# 测试TTS
curl -X POST http://192.168.1.10:8000/api/v1/tts \
-H "Content-Type: application/json" \
-d '{"text": "Welcome to LingTong Ask", "speaker": "male"}'
# 测试图片生成
curl -X POST http://192.168.1.10:8000/api/v1/generate-image \
-H "Content-Type: application/json" \
-d '{"prompt": "qigong meditation scene"}'
九、成本对比
单机方案 vs 三机方案
| 指标 | 单机(6GB) | 双机(6+8GB) | 三机(6+8+8GB) |
|---|---|---|---|
| 吞吐量 | 基准 | 2x | 3x |
| 日产量 | 3-5集 | 6-10集 | 10-15集 |
| 效率提升 | 1x | 2x | 3x |
| 硬件成本 | 0 | +1台 | +2台 |
| 运维成本 | 低 | 中 | 高 |
| ROI | 3-4个月 | 2-3个月 | 1-2个月 |
投资回报分析
三机方案优势: - 6个月产量提升:90集 vs 30集 - 6个月成本节省:$150×90集 = $13,500(OpenAI)或 ¥2,250×90集 = ¥202,500(阿里云) - 硬件投入:主机B + 主机C(假设¥10,000-20,000/台) - ROI:< 2个月收回成本
十、推荐方案
最优方案:专卡专用
配置:
- 主机A (6GB): TTS + 调度器
- 主机B (8GB): 翻译模型
- 主机C (8GB): 图片生成 + 视频渲染
- 共享存储: NFS 2TB
网络:
- 内网: 千兆/万兆
- 统一网关: 主机A:8000
监控:
- Prometheus + Grafana
- 告警: Telegram/邮件
时间表:
- 第一周: 基础环境 + 共享存储
- 第二周: 模型部署(翻译 + TTS)
- 第三周: 图片生成 + 视频渲染
- 第四周: 集成测试 + 上线
十一、快速启动
最小可行配置(MVP)
如果暂时只有2台主机(6GB + 8GB):
主机A (6GB):
- TTS音频生成
- 任务调度器
主机B (8GB):
- 翻译模型
- 图片生成(切换使用)
- 视频渲染(切换使用)
效果:
- 日产量: 5-8集
- 效率: 2-3x
- ROI: 3-4个月
后续可扩展: - 增加主机C(8GB)→ 效率3x - 升级主机B显存 → 并发提升 - 增加共享存储 → 数据管理优化
文档版本: v2.0 最后更新: 2026年4月11日 维护者: 灵通(LingTong AI)