LM Evaluation Harness Review (2026)
EleutherAI's academic benchmarking framework and the backend behind the HuggingFace Open LLM Leaderboard. 60+ standard benchmarks, cited in hundreds of papers - and structurally unable to run multiple-choice tasks against chat-only APIs.
Rating
Starting Price
$0 (open source)
Free Plan
Yes
SDKs & Frameworks
6
Deployment
3
Best For
Anyone benchmarking base models, comparing fine-tunes against published baselines, or producing numbers that need to line up with academic literature and the Open LLM Leaderboard.
Last Updated:
10 Things You Should Know About LM Evaluation Harness
- 1 Maintained by EleutherAI and used as the backend for the HuggingFace Open LLM Leaderboard
- 2 Covers 60+ standard academic benchmarks with hundreds of subtasks and variants
- 3 Cited in hundreds of research papers, with users including NVIDIA, Cohere, BigScience and Mosaic ML
- 4 Release v0.4.9.2 landed in late November 2025 and raised the minimum to Python 3.10
- 5 That release added Azure OpenAI support, BOS token delegation to the tokenizer, GraphWalks and LongBench fixes
- 6 A 2026 release added a subcommand CLI with YAML config support and modular installs
- 7 Loglikelihood is not supported for chat completions because OpenAI does not provide prompt logprobs
Pros & Cons
Pros
- ✓ The de facto standard for academic LLM benchmarking, cited in hundreds of research papers
- ✓ Backend for the HuggingFace Open LLM Leaderboard, so your numbers are directly comparable with published results
- ✓ Genuinely broad coverage at 60+ benchmarks with hundreds of subtasks, so you rarely need to implement one yourself
- ✓ Actively maintained with a steady stream of community contributions and recent releases
- ✓ Used by NVIDIA, Cohere, BigScience and Mosaic ML
- ✓ Modular installs keep the dependency footprint sane
Cons
- ✕ Loglikelihood is not supported for chat completions, so multiple-choice tasks simply cannot run against chat-only APIs like OpenAI's
- ✕ It benchmarks models, not applications - there is nothing here for RAG faithfulness, agent trajectories or production quality
- ✕ Requires Python 3.10 or later
- ✕ Benchmark scores are sensitive to prompt formatting in ways that are easy to get wrong and hard to notice
- ✕ No dashboards, no collaboration and no production monitoring
Features
The academic standard
LM Evaluation Harness is EleutherAI’s framework for few-shot evaluation of language models, and it is the closest thing the field has to a common measuring stick.
It covers 60+ standard academic benchmarks with hundreds of subtasks and variants. It is the backend for the HuggingFace Open LLM Leaderboard. It is cited in hundreds of research papers, with users including NVIDIA, Cohere, BigScience and Mosaic ML.
That last point is the real argument for using it. When you report an MMLU score produced by this harness with its standard task definition, your number means the same thing as everyone else’s number. Roll your own benchmark implementation and you have produced a private metric that looks comparable and is not.
The limitation that will decide it for many teams
This is the thing to check before anything else.
Loglikelihood is not supported for chat completions, because OpenAI does not expose prompt logprobs.
That sounds narrow. It is not. Multiple-choice benchmarks in this framework are typically scored by loglikelihood - you present each candidate answer and compare how probable the model considers each. No prompt logprobs means no loglikelihood scoring, which means multiple-choice tasks cannot run against chat-only APIs at all.
A large share of the standard suite is multiple-choice. So:
- Benchmarking open-weight models you serve via HuggingFace, vLLM or SGLang - completely fine, everything works.
- Benchmarking GPT-class chat endpoints on MMLU-style tasks - you cannot.
This is a limitation of the API rather than the harness, and no framework can work around it. But the practical effect is identical, and it is much better to know now than after you have built a pipeline around it.
Prompt formatting is a reproducibility hazard
Worth flagging because it undermines results quietly.
Benchmark scores are sensitive to prompt formatting - whitespace, delimiters, answer formatting. There is published research specifically on how single-character differences can materially change evaluation outcomes.
The implication is that a benchmark score is only meaningful alongside the exact task configuration that produced it. This is the strongest practical argument for using the harness’s standard task definitions rather than writing your own variants: the standard definitions are what published results used.
The moment you tweak the prompt, you are no longer comparable to the literature - but the number still looks exactly like a benchmark score, and nobody downstream will know the difference. That is how misleading comparisons get into slide decks.
Actively maintained, and improving
For a community academic project the cadence is healthy.
v0.4.9.2 (late November 2025) added Azure OpenAI support, BOS token delegation to the tokenizer, GraphWalks, LongBench fixes and GPT-5 support, and raised the minimum to Python 3.10.
A 2026 release added a proper subcommand CLI with YAML config support - lm-eval run, lm-eval ls tasks, lm-eval validate - while staying backward compatible if you omit run. It also introduced modular installs: lm_eval[hf], lm_eval[vllm], lm_eval[api].
The modular installs are a genuine quality-of-life improvement. Evaluation frameworks accumulate backend dependencies relentlessly, and being able to pull only vLLM without dragging in every supported runtime keeps the footprint manageable.
Results log to JSON, Weights & Biases, HuggingFace Hub or Trackio.
What it is not for
This benchmarks models, not applications.
There is nothing here for RAG faithfulness, agent trajectories, tool call correctness or production quality. No dashboards, no collaboration, no monitoring.
If your question is “did this week’s prompt change improve our chatbot,” this is the wrong tool and Ragas or DeepEval is the right one. If your question is “does our fine-tune beat the base model on recognised benchmarks,” this is exactly right and nothing else comes close.
Backend choice
| Backend | When to use it |
|---|---|
| HuggingFace | Simplest; fine for most local model evaluation |
| vLLM | Substantially faster for large runs and many tasks |
| SGLang | Alternative high-throughput serving backend |
| OpenAI / Anthropic API | Generative tasks only - see the loglikelihood limitation |
Should you use it?
Use LM Evaluation Harness if you are benchmarking base or fine-tuned models, comparing against published baselines, or producing numbers that need to match the academic literature and the Open LLM Leaderboard.
Don’t use it if you are evaluating an application rather than a model, or you need multiple-choice benchmarks against chat-only APIs, which it structurally cannot do.
Bottom line: the default choice for model benchmarking, free, actively maintained, and valuable precisely because everyone else uses it too. Stick to the standard task definitions if you want your numbers to mean anything to anyone else, and check the loglikelihood constraint against your target models before you plan around it.
Release history, backend support and the loglikelihood limitation verified against the EleutherAI repository and release notes on 31 July 2026. This is a researched directory entry - we have not yet instrumented this framework with our reference application.
Pricing Plans
Open source
$0
- Free and community maintained by EleutherAI
- No hosted tier and no commercial upsell
- Modular installs for the backends you need
- You pay only for compute or API calls
SDKs & Frameworks
Deployment
Eval Methods
Scope
Our Verdict
LM Evaluation Harness is the standard for academic LLM benchmarking and should be your default whenever the question is how good is this model rather than how good is my application. It covers 60+ standard benchmarks with hundreds of subtasks, it is the backend behind the HuggingFace Open LLM Leaderboard, and it is cited in hundreds of papers - which means your numbers are directly comparable with published results instead of being your own private metric. It is actively maintained, with a 2026 release adding a proper subcommand CLI with YAML configs and modular installs. The critical limitation to understand before you plan around it is that loglikelihood is not supported for chat completions, because OpenAI does not expose prompt logprobs. That means multiple-choice benchmarks - a large share of the standard suite - cannot run against chat-only APIs at all. If you are evaluating open-weight models you serve yourself, this is a non-issue. If you intended to benchmark GPT-class endpoints on MMLU-style tasks, it is a wall.
Similar Tools
Patronus AI
Enterprises that want evaluation backed by purpose-trained judge models rather than prompted general LLMs, particularly for hallucination detection and agent debugging, and who can work with enterprise procurement.
Promptfoo
Security and CI teams who want config-driven LLM eval plus serious red-teaming, from an OSS tool with no seat cost
Ragas
Teams building RAG pipelines who want fast, meaningful retrieval and generation metrics during development, and who already have or want a separate tracing platform.
Openlayer
Regulated enterprises that need evaluation with documented EU AI Act or NIST alignment, and teams evaluating both classical ML and LLM systems who want one platform and can work with enterprise procurement.
Frequently Asked Questions
Why can't I run multiple-choice benchmarks against OpenAI models?
Because the scoring method depends on data the API does not return. Multiple-choice tasks in this framework are typically scored by loglikelihood - you present each candidate answer and compare how probable the model considers each one. That requires prompt logprobs, and OpenAI does not provide them for chat completions. So loglikelihood, and therefore multiple-choice-type tasks, are not supported for chat completions. This is a limitation of the API rather than the harness, but the practical effect is the same. A large share of the standard benchmark suite is multiple-choice, so if your plan was to benchmark GPT-class chat endpoints on MMLU-style tasks, you cannot. Open-weight models you serve yourself via HuggingFace or vLLM are unaffected.
Is this the right tool for evaluating my application?
No, and this is the most common misuse. LM Evaluation Harness benchmarks models against standardised academic tasks - it answers whether this model is good at reasoning, mathematics or general knowledge relative to other models. It has nothing for RAG faithfulness, agent trajectories, tool call correctness or production quality. If you want to know whether your chatbot got better this week, use Ragas or DeepEval. If you want to know whether your fine-tune beats the base model on recognised benchmarks, this is exactly the tool.
Is it still actively maintained?
Yes, clearly. Release v0.4.9.2 landed in late November 2025 with Azure OpenAI support, BOS token delegation to the tokenizer, GraphWalks, LongBench fixes and GPT-5 support, and raised the minimum to Python 3.10. A subsequent 2026 release introduced an explicit subcommand CLI with YAML config files - lm-eval run, lm-eval ls tasks, lm-eval validate - while remaining backward compatible if you omit run, plus modular installs like lm_eval[hf], lm_eval[vllm] and lm_eval[api]. The main repository shows recent commit activity. For a community-maintained academic project, that is a healthy cadence.
How much does prompt formatting affect the scores?
More than most people expect, and it is a genuine reproducibility hazard rather than a curiosity. Benchmark results are sensitive to details like whitespace, delimiters and answer formatting, and there is published research specifically on how single-character differences can materially change eval outcomes. The practical implication is that a score is only meaningful alongside the exact task configuration that produced it. This is a strong argument for using the harness's standard task definitions rather than writing your own variants, because the standard definitions are what published results used - the moment you tweak the prompt you are no longer comparable to the literature, even though the number still looks like a benchmark score.
Which backend should I use?
It depends on what you are evaluating and how much throughput you need. HuggingFace Transformers is the simplest and works for most local model evaluation. vLLM is substantially faster for large evaluation runs and is the sensible choice when you are benchmarking many tasks or large models. SGLang is also supported. The OpenAI and Anthropic API backends work for generative tasks but carry the loglikelihood limitation described above. Modular installs mean you can pull only what you need - lm_eval[hf], lm_eval[vllm] or lm_eval[api] - rather than taking every backend's dependencies.
How does it compare with Inspect AI?
They overlap but have different centres of gravity. LM Evaluation Harness is about running standard academic benchmarks and getting numbers comparable with published literature and the Open LLM Leaderboard. Inspect AI is about building your own rigorous, reproducible evaluations, with stronger support for agents, tool use and sandboxed execution. If you want to report MMLU, use the harness. If you are designing a bespoke safety or capability evaluation, Inspect AI gives you better primitives. Both are free and they coexist happily.