LLM Benchmark Suite v3.1 — 大模型基准测试与自我优化
当用户提到基准测试、压力测试、性能测试、benchmark、stress test、模型评测、TPS测试、LLM性能等关键词时,应触发本 Skill。
Agent 使用指南
本 Skill 需要通过命令行执行,Agent 应按以下流程操作:
触发场景
| 场景 | 关键词示例 | 推荐动作 |
|------|-----------|---------|
| 基准测试 | "测一下这个模型"、"跑个benchmark"、"测试API性能" | 执行 benchmark 命令 |
| 压力测试 | "压力测试"、"持续运行"、"稳定性测试"、"stress test" | 执行 stress 命令 |
| 批量对比 | "对比这几个模型"、"哪个模型更快" | 执行 batch 命令 |
| 性能分析 | "历史数据怎么样"、"趋势如何"、"分析性能" | 执行 optimize analyze |
| 参数优化 | "最佳参数"、"推荐配置"、"调参" | 执行 optimize suggest 或 auto-tune |
| 报告生成 | "生成报告"、"导出结果" | 执行 report 命令 |
执行流程
- 确认参数:如果用户未提供 API 地址、密钥、模型名,需先询问
- 安装依赖:首次使用前执行
pip install httpx reportlab - 运行命令:在 Skill 目录下执行
python llm_bench.py <子命令> [参数] - 读取结果:从输出的 JSON 文件中提取关键指标
- 呈现结论:用自然语言总结测试结果,提供趋势判断和改进建议
- 生成报告:有需要时执行
report命令生成 HTML/PDF 报告
注意事项
- API 地址需为 OpenAI 兼容格式(
/v1/chat/completions) - 本地 Ollama 密钥可填
"ollama",API 地址为http://localhost:11434/v1/chat/completions - 压力测试耗时较长,建议先运行快速基准测试(
--mode quick)验证连通性 - 自动调参(
auto-tune)会实际发送大量请求,提醒用户预估时间
功能概述
一站式 LLM API 测试工具,用户只需提供 API 地址、密钥、模型名即可完成:
- 快速基准测试 — 12条/轮 × N轮,约2-5分钟
- 完整基准测试 — 40条/轮 × N轮,8大维度,约5-15分钟
- 持续压力测试 — 支持断点续传,实时进度监控
- 实时状态查看 —
status命令查看任务进度和预计完成时间 - HTML/PDF双格式报告 — 自动生成可视化报告
- 历史结果分析 — 扫描历史数据,生成性能画像和趋势判断
- 模型横向对比 — 多模型 TPS/TTFT/稳定性/评分多维对比
- 参数智能推荐 — 基于历史数据和场景(生产/开发/压测)推荐配置
- 自动网格搜索调参 — 自动遍历参数组合寻找最优解
安装
方式一:WorkBuddy / ClawHub(推荐)
在 WorkBuddy 中搜索 llm-benchmark 直接安装,依赖会自动处理。
方式二:手动安装
pip install httpx reportlab
快速开始
基准测试
# 快速测试 (12条 × 3轮)
python llm_bench.py benchmark --api "http://localhost:11434/v1/chat/completions" --key "ollama" --model "qwen2.5:7b"
# 完整测试 (40条 × 3轮)
python llm_bench.py benchmark --api "URL" --key "KEY" --model "MODEL" --mode full --rounds 3
压力测试
# 1小时压力测试
python llm_bench.py stress --api "URL" --key "KEY" --model "MODEL" --duration 60
# 3并发 + 256 tokens
python llm_bench.py stress --api "URL" --key "KEY" --model "MODEL" --duration 60 --concurrency 3 --max-tokens 256
查看进度
# 查看所有任务
python llm_bench.py status
# 查看指定任务
python llm_bench.py status --task-id bench_qwen3_5-27b_153024
生成报告
python llm_bench.py report --file result.json --format html
python llm_bench.py report --file result.json --format pdf
python llm_bench.py report --file result.json --format both
批量测试
# 批量基准测试
python llm_bench.py batch --api "URL" --key "KEY" --models "qwen2.5:7b llama3.1:8b" --mode full --rounds 3
# 批量压力测试
python llm_bench.py batch-stress --api "URL" --key "KEY" --models "qwen2.5:7b llama3.1:8b" --duration 60
自我优化 (optimize)
历史分析
分析模型历史测试数据,生成性能画像和趋势判断。
# 分析指定模型
python llm_bench.py optimize analyze --model "qwen2.5:7b"
输出内容:
- 模型性能画像(TPS/TTFT/ITL/成功率)
- 趋势判断(↑ 提升 / → 稳定 / ↓ 退化)
- 各维度表现对比
- 自动生成 HTML 报告
模型对比
横向对比多个模型的历史性能表现。
python llm_bench.py optimize compare --models "qwen2.5:7b llama3.1:8b"
输出:多维对比表格(TPS/稳定性/TTFT/成功率/综合评分/趋势)+ HTML报告
参数推荐
基于历史数据推荐最优参数配置。
# 生产环境(低延迟优先)
python llm_bench.py optimize suggest --model "qwen2.5:7b" --scenario production
# 开发环境(平衡模式)
python llm_bench.py optimize suggest --model "qwen2.5:7b" --scenario development
# 压力测试(吞吐量优先)
python llm_bench.py optimize suggest --model "qwen2.5:7b" --scenario loadtest
| 场景 | 优先级 | 默认 max_tokens | 默认 temperature | |------|--------|-----------------|-------------------| | production | 低延迟、稳定性 | 128 | 0.3 | | development | 速度与质量平衡 | 256 | 0.7 | | loadtest | 最大吞吐量 | 64 | 0.5 |
自动调参
网格搜索自动寻找最优参数组合。
# 搜索最优 max_tokens 和 temperature 组合
python llm_bench.py optimize auto-tune \
--api "http://localhost:11434/v1/chat/completions" \
--key "ollama" \
--model "qwen2.5:7b" \
--param max_tokens:64,128,256,512 \
--param temperature:0.0,0.3,0.7,1.0 \
--metric balance --goal maximize --top 5
| 参数 | 描述 | 默认值 |
|------|------|--------|
| --param | 参数网格,格式 key:val1,val2,val3(可多次使用) | 必填 |
| --metric | 优化指标 (tps/ttft/balance) | balance |
| --goal | 优化方向 (maximize/minimize) | maximize |
| --rounds | 每组测试轮次 | 1 |
| --top | 输出前N个最优结果 | 5 |
评分函数
| 指标 | 公式 | 说明 |
|------|------|------|
| tps | avg_tps × success_rate | 吞吐量优先 |
| ttft | (1000/ttft) × success_rate | 延迟优先 |
| balance | tps × success_rate / (1 + ttft/1000) | 综合平衡 |
参数说明
| 参数 | 描述 | 默认值 |
|------|------|--------|
| --api | OpenAI兼容API端点 | 必填 |
| --key | API密钥 | 必填 |
| --model | 模型名称 | 必填 |
| --mode | 测试模式 (quick/full) | quick |
| --rounds | 测试轮次 | 3 |
| --duration | 压力测试时长(分钟) | 必填 |
| --concurrency | 并发线程数 | 1 |
| --max-tokens | 每请求最大Token | 128 |
测试维度 (完整模式)
| # | 类别 | 数量 | 描述 | |---|------|------|------| | 1 | 短文本 | 10 | 不同max_tokens (32~512) | | 2 | 数学计算 | 5 | 精确推理 (temp=0) | | 3 | 创意写作 | 5 | 不同温度 (0.5~1.2) | | 4 | 知识问答 | 5 | 事实性问题 (temp=0.3) | | 5 | 代码生成 | 5 | 编程任务 (temp=0.2) | | 6 | 逻辑推理 | 5 | 推理链 (temp=0.1) | | 7 | 长文本生成 | 3 | 深度输出 (max_tokens=512) | | 8 | 多语言 | 2 | 中/英/日/法混合 |
性能指标
| 指标 | 描述 | |------|------| | TTFT | Time To First Token 首Token延迟 | | TPS | Tokens Per Second 吞吐量 | | ITL | Inter-Token Latency Token间延迟 | | P50/P90/P99 | 百分位数统计 |
输出目录
默认输出到 benchmark_logs/(脚本同级目录下),可通过环境变量 LLM_BENCH_LOG_DIR 自定义:
export LLM_BENCH_LOG_DIR="/custom/path"
python llm_bench.py benchmark ...
输出文件:
bench_*.json— 基准测试原始数据stress_*.json— 压力测试原始数据report_*.html— 可视化HTML报告report_*.pdf— PDF格式报告optimize_*.html— 优化分析报告optimize_tune_*.json— 自动调参结果.state/*.json— 任务状态文件
压力测试特性
- 指数退避 — 失败时自动等待 (2s→4s→8s→16s)
- 5分钟检查点 — 自动保存进度
- 每分钟快照 — 生成时序数据
- 实时进度 — 每5秒更新状态
- 崩溃恢复 — 最多10次自动重试
文件结构
llm-benchmark/
├── llm_bench.py # 主程序 (2460行)
├── SKILL.md # 本文档
├── references/
│ ├── design.md # 技术设计文档
│ ├── dependencies.md # 依赖说明
│ └── examples.md # 使用示例
└── benchmark_logs/ # 输出目录 (自动创建)
└── .state/ # 任务状态 (自动创建)
依赖
- Python >= 3.9
- httpx >= 0.24
- reportlab >= 4.0
微信扫一扫