关于 perf-test-flagos
这项技能启动 vLLM 服务,并针对 5 种配置运行性能基准测试;FlagEval 尚不可用,因此准确性测试标记为跳过。它用于在运行中的容器内测试已配置的模型栈,并生成 JSON 结果和汇总。
主要功能
- 01启动并检查 vLLM 服务
- 02运行 5 种基准配置
- 03单项失败后继续执行
- 04保存单项及汇总 JSON
- 05报告状态与性能指标
适用场景
- 01在容器中测试模型
- 02比较不同配置的性能
- 03收集吞吐量与延迟指标
- 04定位失败或超时的配置
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ flagos-ai/ skills --skill perf-test-flagos安装后在 Claude Code 中输入/perf-test-flagos确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/benchmark-profiles.mdscripts/run_all_benchmarks.pyrun_benchmark.py详细介绍
准确性 + 性能测试
使用目标模型启动 vLLM 服务,并在多个配置下运行准确性基准测试(FlagEval 可用时)和性能基准测试(vllm bench serve)。
技能组件
perf-test/
├── SKILL.md # This file — execution flow
├── scripts/
│ ├── run_benchmark.py # Run single benchmark profile (JSON output)
│ └── run_all_benchmarks.py # Run all 5 profiles, collect + summarize (JSON)
└── references/
└── benchmark-profiles.md # Profile definitions, metrics, vllm bench usage
复用自 env-verify:
env-verify/scripts/test_serve_mode.py— 可用于在基准测试前验证服务是否正常运行(可选预检查)
前置条件
- 已安装软件栈的运行中容器
- 已完成 model-verify — 确定要使用的栈(
full还是base) - model-verify 提供的模型路径、TP 大小和推荐栈
如果单独调用,请询问容器名称、模型路径、TP 大小和栈配置。
如果通过 /flagrelease 调用,这些信息会作为上下文传入。
执行流程
第 1 步:启动 vLLM 服务
使用 model-verify 推荐的栈。阅读 references/benchmark-profiles.md
了解 vllm serve 命令模式。
docker exec -d <CONTAINER> bash -c '
export USE_FLAGGEMS=<0|1>
export FLAGCX_PATH=<path_or_unset>
export VLLM_PLUGINS=<fl_or_unset>
vllm serve <MODEL_PATH> \
--tensor-parallel-size <TP_SIZE> \
--max-num-batched-tokens 4096 \
--max-num-seqs 256 \
--trust-remote-code \
--port 8000 \
<EXTRA_ARGS>
'
等待服务就绪(轮询 /health,超时 300s):
docker exec <CONTAINER> bash -c '
for i in $(seq 1 150); do
if curl -s http://localhost:8000/health 2>/dev/null | grep -qE "ok|200|\{\}"; then
echo "SERVER_READY"; break
fi
sleep 2
done
'
如果服务未能启动,报告错误并退出。
第 2 步:从服务获取模型名称
docker exec <CONTAINER> bash -c '
curl -s http://localhost:8000/v1/models | python3 -c "
import json, sys; print(json.load(sys.stdin)[\"data\"][0][\"id\"])"
'
A 部分:准确性测试(FlagEval)— 占位内容
状态: FlagEval 测试客户端尚不可用。
FlagEval 可用后,请更新本节,补充:
- Docker 镜像 URL 或 pip 包名称
- 支持的基准测试(MMLU、GSM8K、HumanEval 等)
- 必需的参数和配置
- 预期输出格式
- 通过/失败标准(准确率阈值)
当前行为: 将准确性测试报告为已跳过。
B 部分:性能基准测试
第 3 步:运行所有基准测试配置
将脚本复制到容器中并运行:
docker cp <SKILL_DIR>/scripts/run_benchmark.py <CONTAINER>:/tmp/
docker cp <SKILL_DIR>/scripts/run_all_benchmarks.py <CONTAINER>:/tmp/
docker exec <CONTAINER> python3 /tmp/run_all_benchmarks.py \
--model <MODEL_NAME> \
--tokenizer <MODEL_PATH> \
--port 8000 \
--output-dir /data/results/perf
该脚本会运行全部 5 个默认配置(参见 references/benchmark-profiles.md),
将每个配置的 JSON 保存到 /data/results/perf/,并输出包含摘要表格的汇总 JSON 报告。
重要: 某个配置失败不会导致跳过其余配置。
第 4 步:停止服务
docker exec <CONTAINER> bash -c 'pkill -f "vllm serve" || true'
第 5 步:生成报告
{
"status": "PASS | PARTIAL | FAIL",
"stage": "perf-test",
"model": "<MODEL_PATH>",
"tensor_parallel_size": 8,
"flags": {"USE_FLAGGEMS": "1|0", "FLAGCX_PATH": "..."},
"accuracy": {
"status": "SKIPPED",
"reason": "FlagEval test client not yet available"
},
"performance": {
"status": "PASS | PARTIAL | FAIL",
"profiles_passed": "5/5",
"profiles": [ "...per-profile results..." ],
"summary_table": "...markdown table..."
}
}
向用户展示摘要表格:
| Profile | Input | Output | Prompts | Req/s | Tok/s | TTFT(ms) | TPOT(ms) | P99(ms) | Status |
|---------|-------|--------|---------|-------|-------|----------|----------|---------|--------|
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
状态逻辑:
PASS— 所有配置均已完成PARTIAL— 部分配置通过,部分失败FAIL— 服务未能启动,或所有配置均失败
错误处理
| 失败情况 | 行为 |
|---|---|
| 服务启动失败 | 报告错误;退出 |
找不到 vllm bench serve | 报告 vllm 版本问题 |
| 单个配置失败 | 报告错误,继续运行其余配置 |
| 单个配置超时 | 600s 后终止,报告部分完成,并继续运行 |
| 服务在基准测试过程中崩溃 | 收集日志,报告导致崩溃的配置 |
| 高并发时发生 OOM | 报告问题,建议减少 num_prompts |
超时规则
| 操作 | 超时时间 |
|---|---|
| 服务启动 | 300s |
| 每个配置的基准测试 | 600s |
评论
支持 Markdown