LLM Benchmark 可以分为三个层次:
LLM Evaluation
├── Model Capability Benchmark
│ ├── Knowledge / Reasoning
│ ├── Mathematics / Coding
│ ├── Instruction Following
│ └── Long Context / Tool Calling
│
├── Inference Performance Benchmark
│ ├── TTFT / TPOT / ITL
│ ├── Latency / Throughput
│ ├── Concurrency / Goodput
│ └── GPU Memory
│
└── End-to-End Benchmark
├── Agent Task Success
├── RAG Quality
├── Tool Call Accuracy
└── Latency / Cost / Reliability
1. Model Capability Benchmark
用于衡量模型本身的能力,而不是推理引擎运行速度。
常见评测维度:
- 知识与事实准确性。
- 数学和逻辑推理。
- 代码生成。
- 指令遵循。
- 多语言能力。
- 长上下文理解。
- Tool Calling 和 Agent 能力。
常用指标
| 指标 | 含义 | 典型场景 |
|---|---|---|
| Accuracy | 正确答案占比 | 选择题 |
| Exact Match(EM) | 预测与标准答案精确匹配 | QA、信息抽取 |
| F1 | Precision 和 Recall 的调和平均 | QA、分类、抽取 |
| Pass@k | 生成 k 个候选,至少一个通过测试的概率 | 代码生成 |
| Judge Score | 模型或人工按标准打分 | 开放式回答 |
Pass@k
例如对于一道代码题:
Generate 5 Solutions
Solution 1 → Fail
Solution 2 → Fail
Solution 3 → Pass
Solution 4 → Fail
Solution 5 → Fail
这次采样的 5 个候选中至少有一个正确,因此对应的 Pass@5 事件为成功。
正式评测中,通常对多道题及多次采样统计 Pass@k;如果使用 n 个候选、其中 c 个通过测试,可以使用标准无偏估计:
注意:Pass@k 不是把单个答案的 Accuracy 简单乘以 k。
评测常见问题
- Data Contamination:测试题或答案进入训练数据。
- Benchmark Leakage:测试集、答案或评测信息泄漏。
- Prompt Sensitivity:不同 Prompt / Chat Template 影响结果。
- Sampling Differences:Temperature、Top-p、生成次数不同。
- Judge Bias:LLM Judge 的长度偏好、位置偏好或模型偏好。
比较模型时,应尽量统一评测配置,并记录模型版本、Prompt、生成参数和评测程序版本。
2. 常见模型能力 Benchmark
| Benchmark | 主要测试内容 |
|---|---|
| MMLU / MMLU-Pro | 多学科知识与推理 |
| GPQA / GPQA Diamond | 高难度科学推理 |
| GSM8K | 数学文字题 |
| HumanEval / MBPP | 函数级代码生成 |
| SWE-bench | 真实软件仓库中的 Issue 修复 |
| TruthfulQA | 事实真实性及常见错误观念 |
| HellaSwag / ARC / WinoGrande | 常识与语言推理 |
| LongBench / RULER | 长上下文理解和检索 |
| BFCL | Function Calling 能力 |
SWE-bench
SWE-bench 让模型或 Agent 处理真实 GitHub Repository 中的软件问题。
GitHub Issue
↓
Agent Reads Repository
↓
Modify Code
↓
Run Tests
↓
Resolved / Failed
相比 HumanEval,它更接近真实软件工程。
但这类结果高度依赖 Agent Scaffold、工具权限、测试环境和执行预算,不能完全归因于基础模型。
此外,2026 年 OpenAI 公开指出 SWE-bench Verified 已受到明显数据污染,并建议改用更新、更可靠的评测基准。因此应谨慎使用 Verified 排行榜分数判断前沿编码能力。
3. Inference Performance Benchmark
推理性能 Benchmark 研究同一个模型在不同硬件、推理引擎、量化方案和负载下的运行效率。
核心指标
| 指标 | 含义 |
|---|---|
| TTFT | 请求到第一个输出 Token 的时间 |
| TPOT | 第一个 Token 之后平均每个输出 Token 的生成时间 |
| ITL | 连续输出 Token 之间的延迟 |
| Latency | 请求端到端总耗时 |
| Throughput | 每秒处理的请求或 Token 数 |
| Concurrency | 同时进行中的请求数量 |
| GPU Memory | 推理过程显存占用 |
| Goodput | 满足指定延迟目标的有效处理吞吐量 |
TTFT 与 TPOT
对于输出 Token 数大于 1 的请求:
ITL 统计相邻输出之间的延迟,而 TPOT 一般是请求级平均值。
在 Streaming 中,两者相关但不完全相同。
不同 Benchmark 工具的测量位置与统计口径可能不同,比较前需要确认公式。
Goodput
Throughput 高不一定代表用户体验好。
假设服务器每秒完成 100 个请求,但是其中许多请求延迟超过要求。
Goodput 只统计满足 Service Level Objective(SLO)的请求。
例如:
SLO:
TTFT < 1 s
TPOT < 50 ms
100 requests/s total
80 requests/s meet SLO
20 requests/s violate SLO
Goodput = 80 requests/s
实际 SLO 阈值应由产品需求决定。
Goodput 对生产 Serving 尤其重要,因为它把系统处理能力与用户体验约束结合起来。
4. 推理性能测试场景
| 测试场景 | 主要考察 |
|---|---|
| 短输入、短输出 | 基础延迟与调度开销 |
| 长输入、短输出 | Prefill、TTFT |
| 短输入、长输出 | Decode、TPOT |
| 长输入、长输出 | 综合性能、KV Cache |
| 高并发请求 | Throughput、排队延迟、显存 |
| 重复 Prompt Prefix | Prefix Cache 命中收益 |
负载模型
两个重要概念:
Closed-loop Benchmark
固定一定数量的并发客户端,一个请求完成后继续发起下一个。
N Concurrent Clients
↓
Request → Response → Next Request
Open-loop Benchmark
按照设定的请求到达速率发送请求,不必等待上一请求完成。
5 Requests/s
10 Requests/s
20 Requests/s
...
Open-loop 更适合研究给定请求到达速率下的排队、延迟和系统容量。
测试注意事项
应固定:
- 模型及精度。
- GPU 型号与数量。
- 推理引擎版本。
- 输入 / 输出 Token 长度分布。
- 请求到达速率或并发数。
- Prefix Cache 设置。
- Sampling 参数。
还应考虑预热、测试时长和多次重复测量。
对延迟建议至少报告 P50、P95、P99,而不是只报告平均值。
5. End-to-End Benchmark
端到端评测关心整个应用是否真正完成用户目标。
User Request
↓
Application / Agent
↓
Retrieval / Tool Calling
↓
LLM
↓
Final Result
↓
Task Evaluation
常见指标:
| 指标 | 含义 |
|---|---|
| Task Success Rate | 任务完成比例 |
| End-to-End Latency | 完成任务的总时间 |
| Error / Failure Rate | 系统错误或任务失败比例 |
| Retry Rate | 重试发生比例 |
| Cost per Task | 每个任务的平均成本 |
| Cost per Successful Task | 每个成功任务的成本 |
模型回答得好,不代表整个 Agent 或 RAG 应用一定能正确完成任务。
6. Agent Evaluation
Agent 评测主要关注工具选择、参数、执行路径和最终结果。
User Task
↓
Plan / Reason
↓
Select Tool
↓
Generate Arguments
↓
Execute Tool
↓
Observe Result
↓
Continue / Finish
核心指标
| 指标 | 作用 |
|---|---|
| Task Success Rate | 最终是否完成任务 |
| Tool Selection Accuracy | 是否选择正确工具 |
| Argument Accuracy | 工具参数是否正确 |
| Trajectory Evaluation | 执行步骤是否合理 |
| Steps per Task | 平均执行步数 |
| Cost per Successful Task | 每个成功任务的成本 |
| End-to-End Latency | 总执行时间 |
最重要的原则
Task Success Rate 通常比单独的 Tool-call Accuracy 更重要。
例如一个 Agent 工具选择完全正确,但最终没有完成用户任务,仍然应算任务失败。
同时,Steps 越少不代表一定越好;减少步骤不能以降低成功率为代价。
对于 Agent 系统,评测环境还应该尽量可重复,包括工具返回值、外部状态和测试数据。
7. RAG Evaluation
RAG 通常分成 Retrieval 与 Generation 两部分评估。
User Query
↓
Retriever
↓
Retrieved Documents
↓
LLM
↓
Generated Answer
Retrieval 指标
| 指标 | 含义 |
|---|---|
| Recall@k | Top-k 结果覆盖了多少相关文档 |
| Precision@k | Top-k 中有多少文档相关 |
| MRR | 第一个相关结果的排名质量 |
| NDCG@k | 综合相关性等级和排序位置 |
Recall@k
例如某个 Query 有 4 篇相关文档。
Top-5 找到其中 3 篇:
[ Recall@5=\frac34=0.75 ]
如果只关心是否至少找到一篇相关文档,可以使用 Hit Rate@k,但它与 Recall@k 不完全相同。
Precision@k
Top-5 中有 3 篇相关:
[ Precision@5=\frac35=0.6 ]
MRR
Mean Reciprocal Rank 关注第一个相关结果的位置。
Rank 1 → 1
Rank 2 → 1/2
Rank 5 → 1/5
No relevant result → 0
对多个 Query 的倒数排名取平均。
NDCG@k
Normalized Discounted Cumulative Gain 同时考虑:
- 文档相关性等级。
- 文档排序位置。
高相关文档排在前面通常得到更高分数。
常见取值范围为 0~1。
Generation 指标
| 指标 | 含义 |
|---|---|
| Faithfulness | 回答内容能否被检索上下文支持 |
| Answer Relevancy | 回答是否切题 |
| Answer Correctness | 回答是否与参考答案或事实一致 |
| Citation Accuracy | 引用是否真正支持对应结论 |
Faithfulness 与 Correctness
这两个概念容易混淆。
Faithfulness 衡量回答是否有检索上下文作为依据。
Correctness 衡量回答是否事实上正确。
例如,检索文档包含错误信息,LLM 忠实地复述:
Faithfulness → 可能很高
Correctness → 可能很低
因此 RAG 不能只看 Faithfulness,还需要评估检索来源质量和最终答案正确性。
Ragas 将 Faithfulness、Context Precision、Context Recall、Response Relevancy 等作为不同评测指标。
8. 常用评测工具
| 工具 | 主要用途 |
|---|---|
| lm-evaluation-harness | 通用模型能力 Benchmark |
| LightEval | 模型能力评测 |
| HELM | 多维模型评测 |
| vLLM Benchmark CLI | Serving 性能测试 |
| GuideLLM | 推理服务负载与性能评测 |
| Ragas | RAG、LLM 应用指标 |
| DeepEval | LLM、RAG、Agent 系统评测 |
| SWE-bench | 软件工程 Agent 评测 |
vLLM Benchmark 示例
vllm bench serve \
--backend openai-chat \
--base-url http://localhost:8000 \
--model your-model-id \
--dataset-name random \
--num-prompts 100 \
--request-rate 5
这个示例使用随机合成请求,适合初步性能测试;运行前需要启动兼容的模型服务,并确保模型名称一致。
实际压测应尽量使用与生产环境相似的 Prompt 长度及请求分布。
9. 评测结果的可靠性
Benchmark 的可信度不仅取决于评测集,还取决于实验设计。
重点检查:
| 问题 | 对策 |
|---|---|
| 数据污染 | 使用未见过的测试集或更新评测 |
| Prompt 不一致 | 统一 Prompt 和 Chat Template |
| 随机性 | 固定参数、多次重复测试 |
| Judge Bias | 明确 Rubric、抽样人工核验 |
| 样本太少 | 扩大测试集、报告统计不确定性 |
| 环境变化 | 固定模型、引擎、硬件和版本 |
| 缓存干扰 | 明确区分冷缓存与热缓存 |
| 过度优化公开题集 | 使用独立的私有或真实业务测试集 |
尤其在 Agent/RAG 应用中,应建立与实际业务任务对应的小型内部评测集。
例如 100 条真实业务请求,通常比只依赖某个通用模型排行榜更有决策价值。
总结
| Benchmark | 核心问题 | 主要指标 |
|---|---|---|
| Model Capability | 模型本身有多强? | Accuracy、Pass@k、EM |
| Inference Performance | 推理服务运行得多快? | TTFT、TPOT、Throughput、Goodput |
| End-to-End | 系统能否正确完成任务? | Task Success、Cost、Latency |
| RAG Retrieval | 能否找到正确资料? | Recall@k、MRR、NDCG |
| RAG Generation | 答案是否正确且有依据? | Faithfulness、Correctness |
| Agent | 是否正确调用工具并完成任务? | Task Success、Tool Accuracy |
最重要的三个原则:
- 能力、速度和系统成功率需要分别评测,不能只看一个 Benchmark 分数。
- 公平比较需要固定测试条件,否则结果可能没有可比性。
- 生产系统应关注质量、延迟、吞吐量和成本的综合表现,而不只是追求最高 Tokens/s。