mcpField
P
perf-test-flagos

perf-test-flagos

github.com/flagos-ai测试与质量2248 次安装15 周前更新
代码仓库

关于 perf-test-flagos

这项技能启动 vLLM 服务,并针对 5 种配置运行性能基准测试;FlagEval 尚不可用,因此准确性测试标记为跳过。它用于在运行中的容器内测试已配置的模型栈,并生成 JSON 结果和汇总。

主要功能

  1. 01启动并检查 vLLM 服务
  2. 02运行 5 种基准配置
  3. 03单项失败后继续执行
  4. 04保存单项及汇总 JSON
  5. 05报告状态与性能指标

适用场景

  1. 01在容器中测试模型
  2. 02比较不同配置的性能
  3. 03收集吞吐量与延迟指标
  4. 04定位失败或超时的配置

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/flagos-ai/skills --skill perf-test-flagos

安装后在 Claude Code 中输入/perf-test-flagos确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
benchmark-profiles.md
scripts/
run_all_benchmarks.py
run_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