运行时依赖
安装命令
点击复制技能文档
准确性 + 性能测试开始 使用目标模型启动 vLLM 服务,运行准确性基准测试(当 FlagEval 可用时)和性能基准测试(vllm bench serve)跨多个配置文件。 技能组件 perf-test/ ├── SKILL.md # 本文件 — 执行流程 ├── scripts/ │ ├── run_benchmark.py # 运行单个基准测试配置文件(JSON 输出) │ └── run_all_benchmarks.py # 运行所有 5 个配置文件,收集 + 总结(JSON) └── references/ └── benchmark-profiles.md # 配置文件定义,指标,vllm bench 使用 从 env-verify 复用:env-verify/scripts/test_serve_mode.py — 可用于在基准测试之前验证服务器是否健康(可选预检查) 先决条件 运行容器,软件栈已安装,model-verify 已完成 — 知道要使用哪个栈(完整 vs 基础) 模型路径,TP 大小和 model-verify 推荐的栈 如果独立调用,询问容器名称,模型路径,TP 大小和栈配置。 如果从 /flagrelease 调用,这些将作为上下文传递。 执行流程 步骤 1:启动 vLLM 服务器 使用 model-verify 推荐的栈。 阅读 references/benchmark-profiles.md 以获取 vllm serve 命令模式。 docker exec -d bash -c ' export USE_FLAGGEMS=<0|1> export FLAGCX_PATH= export VLLM_PLUGINS= vllm serve \ --tensor-parallel-size \ --max-num-batched-tokens 4096 \ --max-num-seqs 256 \ --trust-remote-code \ --port 8000 \ ' 等待服务器准备就绪(轮询 /health,超时 300s): docker exec 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 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 等) 所需参数和配置 预期输出格式 通过/失败标准(准确性阈值) 当前行为:报告准确性测试为 SKIPPED。 部分 B:性能基准测试 步骤 3:运行所有基准测试配置文件 将脚本复制到容器中并运行: docker cp /scripts/run_benchmark.py :/tmp/ docker cp /scripts/run_all_benchmarks.py :/tmp/ docker exec python3 /tmp/run_all_benchmarks.py \ --model \ --tokenizer \ --port 8000 \ --output-dir /data/results/perf 脚本运行所有 5 个默认配置文件(请参阅 references/benchmark-profiles.md),将每个配置文件的 JSON 保存到 /data/results/perf/,并输出一个包含摘要表的组合 JSON 报告。 重要:一个配置文件的失败不会跳过剩余的配置文件。 步骤 4:停止服务器 docker exec bash -c 'pkill -f "vllm serve" || true' 步骤 5:生成报告 { "status": "PASS | PARTIAL | FAIL", "stage": "perf-test", "model": "", "tensor_parallel_size": 8, "flags": {"USE_FLAGGEMS": "1|0", "FLAGCX_PATH": "..."}, "accuracy": { "status": "SKIPPED", "reason": "FlagEval 测试客户端尚不可用" }, "performance": { "status": "PASS | PARTIAL | FAIL", "profiles_passed": "5/5", "profiles": [ "...每个配置文件的结果..." ], "summary_table": "...markdown 表..." } } 向用户呈现摘要表: | 配置文件 | 输入 | 输出 | 提示 | Req/s | Tok/s | TTFT(ms) | TPOT(ms) | P99(ms) | 状态 | |---------|-------|--------|---------|-------|-------|----------|----------|---------|--------| | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | 状态逻辑: PASS — 所有配置文件已完成 PARTIAL — 部分通过,部分失败 FAIL — 服务器未启动或所有配置文件失败 错误处理 故障行为 服务器无法启动 报告错误;退出 vllm bench serve 未找到 报告 vllm 版本问题 单个配置文件失败 报告错误,继续剩余配置文件 单个配置文件超时 在 600s 后杀死,报告部分,继续 服务器在基准测试中间崩溃 捕获日志,报告哪个配置文件导致崩溃 OOM 在高并发期间 报告,建议减少 num_prompts 超时规则 操作超时 服务器启动 300s 每个配置文件的基准测试 600s