AI eval ツール: lm-evaluation-harness — ベンチマーク標準

AI eval ツール: lm-evaluation-harness — ベンチマーク標準

lm-evaluation-harness (通称 lm-eval、または lm-eval-harness) は、EleutherAI が開発する学術ベンチマーク用の OSS フレームワークです。MMLU、HellaSwag、GSM8K、HumanEval、ARC、TruthfulQA といった標準ベンチマークを、統一された CLI から走らせられます。LLM の素の能力 (capability benchmark) を測るための de facto 標準で、Hugging Face の Open LLM Leaderboard もこれを裏側で使っています。

本記事では、2020 年代初期から今日まで残り続けている理由、主な機能、最小動作例、Inspect AI との棲み分け、そしてハマりやすい点を整理します。

EleutherAI と歴史

EleutherAI は 2020 年に Discord で発足した非営利の研究コミュニティで、GPT-Neo、GPT-J、Pythia といった初期のオープンモデル群で知られます。lm-evaluation-harness は 2021 年ごろ、GPT-Neo の論文実験を再現可能にする目的で書かれました。ライセンスは MIT で、現在も活発にメンテナンスされています。

GPT-3 以降、各社・各研究室が独自のベンチマーク実装を回していましたが、プロンプト整形や few-shot の組み方が微妙に違うため、論文間で数字を直接比べられないという問題がありました。lm-evaluation-harness は「同じコードで同じ条件で測る」ことを最初から目標に置いています。2022 年ごろから学術コミュニティでの採用が加速し、2023 年の Hugging Face Open LLM Leaderboard 採用で事実上の標準になりました。

なぜ乱立しなかったか

評価ツールは普通、各社・各ラボで独自実装が乱立しがちです。にもかかわらず lm-evaluation-harness が標準になったのは、以下のような理由があります。

第一に、EleutherAI 自体が特定の商用ベンダーに紐づかない非営利コミュニティで、中立的に受け止められました。学術論文で引用しやすい立ち位置です。

第二に、タスク定義が YAML/Jinja2 ベースで、プロンプトテンプレートがコードから分離されています。「論文 X と全く同じプロンプトで測りたい」という要求を、設定ファイル差分として提示できます。

第三に、Hugging Face transformers、vLLM、OpenAI 互換 API、ONNX、SGLang、NVIDIA NeMo など主要バックエンドを一通り押さえています。モデルの入手経路に合わせてバックエンドを切り替えられ、ロックインがありません。

第四に、Open LLM Leaderboard が lm-evaluation-harness を採用した影響があります。「leaderboard で勝つには lm-eval で走らせる必要がある」という事実上の制約が働き、網羅性の勝負は網羅した者が勝つという循環を生みました。

主な機能

v0.4 系で以下の機能が揃っています。

最小動作例

インストールはバックエンドごとに extras を指定します。

pip install "lm_eval[hf]"      # Hugging Face
pip install "lm_eval[vllm]"    # vLLM
pip install "lm_eval[openai]"  # OpenAI API

Llama 3 8B を MMLU と GSM8K で測る、典型的な実行例はこうです。

lm_eval --model hf \
    --model_args pretrained=meta-llama/Meta-Llama-3-8B \
    --tasks mmlu,gsm8k \
    --device cuda:0 \
    --batch_size 8

vLLM バックエンドなら数倍速くなります。

lm_eval --model vllm \
    --model_args pretrained=meta-llama/Meta-Llama-3-8B,tensor_parallel_size=2,dtype=auto \
    --tasks hellaswag,arc_easy,arc_challenge \
    --batch_size auto

OpenAI 互換 API を叩く場合はこうです。

lm_eval --model openai-chat-completions \
    --model_args model=gpt-4o-mini \
    --tasks truthfulqa_mc2 \
    --limit 100

結果は stdout にスコアテーブルで表示され、--output_path を指定すれば JSON と per-sample ログが書き出されます。

支える主要タスク

典型的に走らせるベンチマークは以下です。

タスク一覧は lm_eval --tasks list で確認できます。

Hugging Face Open LLM Leaderboard との関係

Hugging Face Open LLM Leaderboard は、公開モデルを横並びで比較するリーダーボードで、2023 年から運営されています。評価実行は lm-evaluation-harness が担当しており、投稿されたモデルは Hugging Face 側のクラスタで自動的に lm-eval を使ってスコア計算されます。

Leaderboard v1 (2023) は ARC、HellaSwag、MMLU、TruthfulQA、Winogrande、GSM8K の 6 タスク構成でした。v2 (2024 年リニューアル) は IFEval、BBH、MATH、GPQA、MuSR、MMLU-Pro の 6 タスクに刷新され、より難しい問題が中心になっています。いずれも lm-eval 側に leaderboard タスクグループとして用意されており、同じ条件を手元で再現できます。

向くケース・向かないケース

向くケース

向かないケース

lm-evaluation-harness は「静的なデータセットに対する静的な正解判定」が中心なので、動的に振る舞う agent や、人間基準で採点したい用途には別のツールを選びます。

Inspect AI との棲み分け

同じ「学術色の強い評価 OSS」として Inspect AI (UK AISI 製) と比較されますが、志向はかなり違います。

モデル公開前の「MMLU で何点か」は lm-eval、frontier model の「サイバー攻撃能力の閾値を超えたか」は Inspect AI、という使い分けになります。Hugging Face Open LLM Leaderboard のスコアを再現したいなら lm-eval 一択ですし、UK AISI の pre-deployment eval を回したいなら Inspect AI です。両者は競合というより補完関係です。

ハマりポイント

実務で詰まる点をいくつか挙げます。

一つめは計算リソースです。MMLU 一つで約 14,000 サンプル、BBH で約 6,500 サンプルあります。7B モデルでも full suite を走らせると GPU 時間が数時間かかります。--limit でサンプル数を絞って動作確認してから本番に進むのが安全です。

二つめは cherry-picking バイアスです。モデルベンダーが「MMLU で 85 点」と主張しても、few-shot の数、プロンプト整形、サンプリング条件を変えれば数字は動きます。lm-eval でデフォルト設定を走らせた数字と比較するのが、再現可能な出発点になります。

三つめはベンチマーク汚染 (data contamination) です。公開ベンチマークの問題文が学習データに混入している可能性は年々高まっており、「素のスコア」が能力ではなく記憶を測ってしまうリスクが指摘されています。GPQA や MATH のような難問系、あるいは非公開テストセットを併用するのが現実的な回避策です。

四つめはバックエンド間の微妙な差です。HF transformers と vLLM では、同じモデル・同じプロンプトでも tokenizer や sampling の実装差でスコアがわずかにずれることがあります。論文で数字を主張するなら、バックエンドを明記するのが礼儀です。

五つめはタスク定義のバージョン互換性です。lm-eval 自身のバージョンが上がるとタスク定義も更新されることがあり、過去の数字と直接比較できない場合があります。--include_path でタスク YAML を固定し、lm-eval のタグも併せて記録しておくと再現しやすくなります。

chaff grade との関係

chaffjs の grade は、プロダクト eval 文脈で決定論的な採点を担当するツールです。LLM-judge の意見的な採点と、事実ベースの採点を分離する用途で使います。

lm-evaluation-harness は capability benchmark 用途です。正解ラベルがデータセットに固定されており、採点は perplexity ベースや正規表現マッチなどすでに決定論的になっています。LLM-judge をあえて組み込まないのが設計方針なので、chaff grade と直接統合する例もありません。この住み分けは chaffjs の README 最終段落 にも明記されています: “lm-evaluation-harness and Arize Phoenix need nothing chaff-specific”。

まとめ

lm-evaluation-harness は、公開モデルの capability を再現可能に測るための標準フレームワーク です。2026 年現在、Hugging Face Open LLM Leaderboard の基盤として、また各モデル公開時の自社ベンチマーク発表の裏側として、依然として一線で使われ続けています。プロダクトの eval には向きませんが、「このモデルは MMLU で何点か」「量子化で何ポイント落ちたか」といった素の能力評価では、まず lm-eval を手に取ることになります。学術色が強く重めのツールですが、評価数字の読み方を身につける意味でも、一度は手元で動かしておく価値があります。

関連記事


Singularity Society はテクノロジー集団として MulmoClaude / MulmoTerminal / MulmoCast を開発しています。エンジニア・起業家向けの実践プログラム BootCamp も運営しています。

この記事をシェア

関連記事

記事一覧に戻る