04 场景演算
5090 基准测试执行清单
5090 基准测试执行清单
8 周内跑完的具体命令、测试脚本、数据模板。项目方(或团队)可以直接照做。
第一步:环境搭建(W1)
1.1 系统 & 驱动
# Ubuntu 24.04 LTS(Blackwell 支持最好)
sudo apt update && sudo apt upgrade -y
# NVIDIA Driver 560+ (Blackwell 支持)
sudo apt install nvidia-driver-565
sudo reboot
# CUDA Toolkit 12.6+
# 从 developer.nvidia.com 下载 cuda-toolkit-12-6 官方 deb 安装
# 验证
nvidia-smi
nvcc --version1.2 Python 环境
conda create -n bench python=3.11
conda activate bench
# 关键包
pip install torch==2.5.1 --index-url https://download.pytorch.org/whl/cu126
pip install vllm==0.6.5 # Blackwell 支持
pip install "sglang[all]==0.3.7"
pip install transformers==4.46
pip install accelerate triton==3.1.0
pip install lm-eval llmperf1.3 监控栈
Prometheus + DCGM Exporter + Grafana(Docker Compose 起)
- DCGM Exporter 官方 repo:github.com/NVIDIA/dcgm-exporter
- 访问 Grafana:http://localhost:3000
第二步:单机基础压测(W2)
2.1 启动 vLLM 服务
python -m vllm.entrypoints.openai.api_server \
--model Qwen/Qwen2.5-14B-Instruct \
--dtype float16 \
--max-model-len 8192 \
--gpu-memory-utilization 0.9 \
--enable-prefix-caching \
--served-model-name qwen2.5-14b \
--port 80002.2 用 LLMPerf 压测
参考 github.com/ray-project/llmperf 的 token_benchmark_ray.py,测试参数:
- num-concurrent-requests:1 / 4 / 16 / 64 / 256
- max-num-completed-requests:≥ 100
- mean-input-tokens / mean-output-tokens:见测试矩阵
- llm-api:openai
- 目标端点:本地 8000
第三步:矩阵测试(W3-W6)
3.1 测试维度
模型(15 个候选):
- Qwen2.5-7B / 14B / 32B(AWQ)
- Llama-3.1-8B
- DeepSeek-V2-Lite / DeepSeek-Coder-V2-Lite
- GLM-4-9B
- Qwen2-VL-7B
- BGE-M3
引擎:vLLM / SGLang / TensorRT-LLM / LMDeploy
量化:FP16 / FP8 / AWQ / INT8
并发:1 / 4 / 16 / 64
长度:128/128、512/512、4096/128、128/4096、8192/512
3.2 建议节奏
- W3:先跑 vLLM + FP16 全组合(~144 组,24h)
- W4:加 FP8 + AWQ 量化维度(+288 组,48h)
- W5:加 SGLang 全对比(+432 组,72h)
- W6:加长上下文(8K/32K)+ 视觉模型专项
3.3 自动化框架
用 shell 循环 model × engine × dtype × concurrency × input/output length, 每次组合:
- 启动引擎(后台 &)
- 等待 60s warmup
nvidia-smi采集 gpu 基线到 CSV- 跑 LLMPerf 压测
- 采集 gpu 峰值
- kill 引擎,sleep 30s 冷却
第四步:稳定性测试(W7)
72h 持续压力:
- 用 asyncio 并发发起 16 路请求
- 每 5 秒一次 nvidia-smi
- 记录:崩溃次数、内存增长、显存 fragmentation、温度峰值
第五步:质量测试(W7)
用 lm-evaluation-harness 验证量化后精度损失:
# 中文 C-Eval
lm_eval --model vllm \
--model_args pretrained=Qwen/Qwen2.5-14B-Instruct,dtype=float8_e4m3fn \
--tasks ceval-valid \
--num_fewshot 5
# 英文 MMLU / 代码 HumanEval 类似对比 FP16 基线与量化后的分数差。关键指标:
- MMLU 分数下降 > 1 分 → 量化有问题
- HumanEval 下降 > 2 分 → 代码模型不能量化
第六步:数据入库 & 分析(W8)
6.1 结果解析
用 Python 遍历 results/ 目录,解析每个测试的 summary.json:
- 提取 TTFT p50/p99、TPOT p50/p99、单卡 TPS
- 补充 GPU 温度峰值、功率、显存占用
- 全部写入 pandas DataFrame → CSV
6.2 成本反算
成本每 M token = (1M / output_tps / 3600) × 单卡每小时成本假设 5090 单卡每小时成本 6 元(折旧 + 电 + 分摊):
- 单卡 output 500 tok/s → 每 M token 成本 = 1000000/500/3600×6 = 3.33 元
- 售价 5 元/M token → 毛利率 33%
- 售价 8 元/M token → 毛利率 58%
6.3 结论报告
必须回答:
- Top 5 性价比模型(每 M token 成本最低)
- Top 5 单卡吞吐冠军
- 引擎横评(同模型不同引擎)
- 量化收益表(同模型不同量化)
- 精度损失表
- 稳定性排名
第七步:万卡决策报告
结束 8 周后,项目方拿到:
- 性能对比图:每个模型 × 引擎 × 量化的 TPS / TTFT / TPOT 三维
- 成本对比图:每 M token 的真实成本
- 精度损失表:量化后 MMLU / C-Eval / HumanEval 掉多少
- 稳定性数据:72h 崩溃 / OOM / 温度峰值
- KV Cache 命中率:不同 prefix 场景的实际收益
- 万卡决策建议:
- 推荐模型 Top 5
- 推荐引擎组合比例
- 推荐量化档位
- 预估单卡月毛利
- 预估万卡年收入区间
常见坑
- Blackwell 驱动:CUDA 12.6+ 才行
- vLLM Blackwell 支持:0.6.5+ 才完整
- FP8 精度:数学 / 代码任务对 FP8 敏感,必须跑 lm-eval 验证
- 消费卡合规:测试没问题,商业化对外要低调
- 温度告警:5090 满载 85°C 是正常上限,超过要减 batch
- PCIe 5.0 带宽:多卡张量并行时 PCIe 会成瓶颈
- 测试环境隔离:不同引擎不能同时跑(端口冲突),必须串行
- 数据可复现:每次测试记录 seed 和 driver 版本
- 模型下载:15 个模型合计 > 500GB,提前用 hf_transfer 加速
- HuggingFace 镜像:用 hf-mirror.com 或 ModelScope 加速国内下载
交付物清单
W8 结束时,项目方手上应该有:
-
all_results.csv:所有 500+ 测试数据点 -
top_models.md:Top 5 性价比模型报告 -
engines_comparison.md:引擎横评 -
quantization_analysis.md:量化收益分析 -
stability_report.md:72h 稳定性数据 -
wanka_decision.md:万卡采购决策报告(最终输出)
这个 wanka_decision.md 就是项目方后续融资、招人、买卡的核心依据。