# EleutherAI LM Evaluation Harness

> 仓库地址：https://github.com/EleutherAI/lm-evaluation-harness
> 作者/组织：EleutherAI
> 成熟度：production
> 分析日期：2026-05-06

## 一句话总结
LLM 评测领域的事实标准框架，提供 200+ 内置 benchmark 任务，支持几乎所有主流模型后端，是 Hugging Face Open LLM Leaderboard 的底层引擎。

## 项目定位与架构
lm-evaluation-harness 定位为通用型 LLM 评测基础设施。其核心架构分为三层：(1) **Task 层**——以 YAML 配置文件声明式定义评测任务（数据集、prompt template、metric）；(2) **Model 层**——通过统一的 `LM` 抽象接口对接 HuggingFace Transformers、vLLM、GGUF、OpenAI API、Anthropic API 等后端；(3) **Evaluation 层**——协调采样、推理、打分的流水线。框架通过 `TaskManager` 管理任务注册与依赖，支持 few-shot、chain-of-thought、generation 和 loglikelihood 两类评测范式。

## 关键技术特性
- **200+ 内置任务**：覆盖 MMLU、HellaSwag、ARC、GSM8K、HumanEval 等主流 benchmark
- **多后端支持**：HF Transformers、vLLM、TGI、llama.cpp、OpenAI-compatible API
- **YAML 声明式任务定义**：无需编写 Python 即可创建新评测任务
- **Group 机制**：将多个子任务聚合为 benchmark suite（如 MMLU 的 57 个子类别）
- **批量推理优化**：自动 batching 和 request caching 提升评测吞吐
- **Few-shot 采样**：支持固定或随机 few-shot exemplar 选取策略
- **可复现性**：固定 seed、版本化任务配置确保结果一致性

## 设计亮点与创新
1. **loglikelihood vs generation 双轨制**：选择题类任务使用 loglikelihood 评估，开放生成类使用 generation + metric，兼顾效率与灵活性
2. **Filter 机制**：在模型输出和最终打分之间插入可配置的后处理流水线
3. **社区驱动的任务生态**：任何人可通过 PR 提交新任务 YAML，形成良性循环
4. **与 Hugging Face 深度集成**：直接引用 HF Datasets，结果可上传至 Open LLM Leaderboard

## 局限性与风险
- 对 multi-turn 对话和 agent 场景支持有限
- 大规模评测时内存消耗较高，需要仔细调配 batch size
- YAML 配置虽降低门槛，但复杂评测逻辑仍需编写 Python metric
- 评测结果受 prompt template 影响显著，不同版本间可能不可直接比较

## 与生态系统的关联
- 是 Hugging Face Open LLM Leaderboard 的官方评测引擎
- 被 BigCode、NVIDIA NeMo、Meta Llama 等项目广泛引用
- 与 vLLM 配合可实现高吞吐评测流水线
- 影响了 BigCode Evaluation Harness 等领域专用框架的设计
