返回 Skill 列表
extension
分类: 其它需要 API Key

大模型基准测试与自我优化

一站式LLM API基准测试与自我优化工具。支持快速/完整基准测试、持续压力测试、历史趋势分析、参数推荐、自动网格搜索调参,自动生成HTML/PDF可视化报告。

person作者: user_fcba917fhubcommunity

LLM Benchmark Suite v3.1 — 大模型基准测试与自我优化

当用户提到基准测试、压力测试、性能测试、benchmark、stress test、模型评测、TPS测试、LLM性能等关键词时,应触发本 Skill。

Agent 使用指南

本 Skill 需要通过命令行执行,Agent 应按以下流程操作:

触发场景

| 场景 | 关键词示例 | 推荐动作 | |------|-----------|---------| | 基准测试 | "测一下这个模型"、"跑个benchmark"、"测试API性能" | 执行 benchmark 命令 | | 压力测试 | "压力测试"、"持续运行"、"稳定性测试"、"stress test" | 执行 stress 命令 | | 批量对比 | "对比这几个模型"、"哪个模型更快" | 执行 batch 命令 | | 性能分析 | "历史数据怎么样"、"趋势如何"、"分析性能" | 执行 optimize analyze | | 参数优化 | "最佳参数"、"推荐配置"、"调参" | 执行 optimize suggestauto-tune | | 报告生成 | "生成报告"、"导出结果" | 执行 report 命令 |

执行流程

  1. 确认参数:如果用户未提供 API 地址、密钥、模型名,需先询问
  2. 安装依赖:首次使用前执行 pip install httpx reportlab
  3. 运行命令:在 Skill 目录下执行 python llm_bench.py <子命令> [参数]
  4. 读取结果:从输出的 JSON 文件中提取关键指标
  5. 呈现结论:用自然语言总结测试结果,提供趋势判断和改进建议
  6. 生成报告:有需要时执行 report 命令生成 HTML/PDF 报告

注意事项

  • API 地址需为 OpenAI 兼容格式(/v1/chat/completions
  • 本地 Ollama 密钥可填 "ollama",API 地址为 http://localhost:11434/v1/chat/completions
  • 压力测试耗时较长,建议先运行快速基准测试(--mode quick)验证连通性
  • 自动调参(auto-tune)会实际发送大量请求,提醒用户预估时间

功能概述

一站式 LLM API 测试工具,用户只需提供 API 地址、密钥、模型名即可完成:

  1. 快速基准测试 — 12条/轮 × N轮,约2-5分钟
  2. 完整基准测试 — 40条/轮 × N轮,8大维度,约5-15分钟
  3. 持续压力测试 — 支持断点续传,实时进度监控
  4. 实时状态查看status命令查看任务进度和预计完成时间
  5. HTML/PDF双格式报告 — 自动生成可视化报告
  6. 历史结果分析 — 扫描历史数据,生成性能画像和趋势判断
  7. 模型横向对比 — 多模型 TPS/TTFT/稳定性/评分多维对比
  8. 参数智能推荐 — 基于历史数据和场景(生产/开发/压测)推荐配置
  9. 自动网格搜索调参 — 自动遍历参数组合寻找最优解

安装

方式一: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