GPU Compute Plans
04 场景演算S0 production plan

04 · M3 机器 · 小型模型舰队

04 · M3 机器 · 小型模型舰队

定位

多副本单卡跑 8 个小模型,覆盖 embedding、代码、视觉、快速对话。同时兼任 NFS 模型仓库主机。

  • 单机 8×5090,每卡跑一个模型
  • 类型多样,服务不同客户需求
  • 定价:¥0.5-2/M(低价挡)

部署清单(每卡一个)

GPU模型用途端口
0BGE-M3多语言嵌入8010
1Qwen3-Embedding-4B大嵌入(可选)8011
2BGE-reranker-v2-m3精排8012
3Qwen2.5-7B-Instruct-AWQ快速对话8013
4Qwen2.5-Coder-7B-Instruct代码8014
5DeepSeek-Coder-V2-Lite-Instruct代码 MoE8015
6Qwen2-VL-7B-Instruct视觉对话8016
7GLM-4-9B-ChatGLM 备选8017

启动配置

GPU 0 · BGE-M3 嵌入

用 vLLM 的 embedding 端点:

CUDA_VISIBLE_DEVICES=0 python -m vllm.entrypoints.openai.api_server \
  --model /models/bge-m3 \
  --served-model-name bge-m3 \
  --task embed \
  --max-model-len 8192 \
  --gpu-memory-utilization 0.80 \
  --port 8010

或用 TEI(Hugging Face Text Embeddings Inference,更轻):

docker run --gpus '"device=0"' -p 8010:80 \
  -v /models/bge-m3:/data \
  ghcr.io/huggingface/text-embeddings-inference:latest \
  --model-id /data \
  --dtype float16 \
  --max-batch-tokens 65536

GPU 3 · Qwen2.5-7B AWQ

CUDA_VISIBLE_DEVICES=3 python -m vllm.entrypoints.openai.api_server \
  --model /models/Qwen2.5-7B-Instruct-AWQ \
  --served-model-name qwen2.5-7b \
  --tensor-parallel-size 1 \
  --quantization awq \
  --max-model-len 8192 \
  --gpu-memory-utilization 0.85 \
  --enable-prefix-caching \
  --max-num-seqs 256 \
  --port 8013

GPU 4 · Qwen2.5-Coder-7B

CUDA_VISIBLE_DEVICES=4 python -m vllm.entrypoints.openai.api_server \
  --model /models/Qwen2.5-Coder-7B-Instruct \
  --served-model-name qwen-coder-7b \
  --tensor-parallel-size 1 \
  --dtype float16 \
  --max-model-len 16384 \
  --gpu-memory-utilization 0.88 \
  --enable-prefix-caching \
  --port 8014

GPU 5 · DeepSeek-Coder-V2-Lite

CUDA_VISIBLE_DEVICES=5 python -m vllm.entrypoints.openai.api_server \
  --model /models/DeepSeek-Coder-V2-Lite-Instruct \
  --served-model-name deepseek-coder-lite \
  --tensor-parallel-size 1 \
  --dtype float16 \
  --max-model-len 32768 \
  --gpu-memory-utilization 0.88 \
  --enable-prefix-caching \
  --trust-remote-code \
  --port 8015

GPU 6 · Qwen2-VL-7B(视觉)

CUDA_VISIBLE_DEVICES=6 python -m vllm.entrypoints.openai.api_server \
  --model /models/Qwen2-VL-7B-Instruct \
  --served-model-name qwen2-vl-7b \
  --tensor-parallel-size 1 \
  --dtype float16 \
  --max-model-len 16384 \
  --gpu-memory-utilization 0.85 \
  --enable-prefix-caching \
  --port 8016

单卡模型的性能预估

模型单卡 TPS月吞吐 output月营收(估)
BGE-M340K req/s(超高)无 output token¥0.5/M × 巨量,实际难估
Qwen2.5-7B AWQ350 tok/s9 亿0.3 万
Coder-7B300 tok/s7.8 亿0.4 万(代码高价)
DeepSeek-Coder-Lite400 tok/s(MoE)10 亿0.5 万
Qwen2-VL-7B200 tok/s5 亿0.5 万(视觉高价)
GLM-4-9B250 tok/s6.5 亿0.2 万

M3 整机月理论满载:约 2-2.5 万

systemd 服务化

每个模型一个 service:/etc/systemd/system/vllm-m3-<name>.service

统一模板 /etc/systemd/system/vllm-m3@.service

[Unit]
Description=vLLM M3 Service %i
After=network.target

[Service]
Type=simple
User=ubuntu
ExecStart=/opt/vllm-m3-launch.sh %i
Restart=on-failure
RestartSec=30

[Install]
WantedBy=multi-user.target

启动脚本包含 model_name → GPU / port / 模型路径 映射。

启动全部:

  • systemctl enable vllm-m3@bge-m3 vllm-m3@qwen7b vllm-m3@coder7b ...
  • systemctl start ...

NFS 模型仓库(M3 兼职)

M3 作为 NFS 主机(因为 M3 是"最热闹的机器",模型仓库放它上省事):

apt install nfs-kernel-server

# 编辑 /etc/exports
/data/models 192.168.1.0/24(rw,sync,no_subtree_check,no_root_squash)

exportfs -a
systemctl restart nfs-kernel-server

其他机器 mount:

apt install nfs-common
mkdir /models
mount M3-IP:/data/models /models

优先级排布

M3 上并行 8 个进程,如果显存偶发不足:

  • Embedding(0/1/2):不吃显存,永不抢占
  • 快速对话(3):稳定跑
  • Coder(4/5):如果 5 挤 4 显存,减低 gpu-memory-utilization
  • Visual(6):视觉模型 attention 显存需求大,独立
  • GLM(7):备用,客户少时可临时关掉给其他模型让位

Nginx 汇总路由

/etc/nginx/conf.d/m3-models.conf

map $arg_model $backend_port {
    default             8013;   # 默认 qwen7b
    "bge-m3"            8010;
    "qwen3-embed"       8011;
    "bge-rerank"        8012;
    "qwen2.5-7b"        8013;
    "qwen-coder-7b"     8014;
    "deepseek-coder"    8015;
    "qwen2-vl-7b"       8016;
    "glm-4-9b"          8017;
}

server {
    listen 8020;
    location /v1/ {
        proxy_pass http://M3-IP:$backend_port;
        proxy_read_timeout 300s;
        proxy_buffering off;
    }
}

:更规范做法是网关层根据请求 body 里的 "model" 字段路由,见 07-tech-stack.md。

监控与告警

  • 8 个进程各自 /metrics(vLLM 内置)
  • Prometheus 采集全部
  • 告警:
    • 单进程 crash 自动重启 + 告警
    • 单卡温度 > 87°C 告警
    • 显存溢出(OOM)立即告警

推荐

8 周 MVP:先起 4 个模型(bge-m3 + qwen7b + coder7b + qwen2-vl),验证客户是否用得到

验证客户后

  • 哪个模型 QPS 高 → 挪出 1 卡 → 增加副本
  • 哪个模型 QPS 低 → 关掉,换新模型试
  • 每月 review 一次,动态调整

M3 是"客户实验田":40 卡里最灵活的一台,快速试新模型。

On this page