跳转至

本地模型部署方案 - 三机配置

硬件配置: - 主机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响应时间
  - 错误率

业务监控:
  - 集数翻译数量
  - 音频生成时长
  - 图片生成数量
  - 视频渲染进度

监控工具

Prometheus: 数据采集
Grafana: 可视化大屏
Alertmanager: 告警通知
Node Exporter: 主机指标
cAdvisor: 容器指标

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天)

# 主机A: 部署API网关
pip install fastapi uvicorn httpx
uvicorn gateway:app --host 0.0.0.0 --port 8000

第四阶段:集成测试(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)