HumanEval ベンチマーク(ヒューマンエバル)
OpenAI が2021年に公開した LLM のコード生成能力を評価するベンチマーク。164問の Python プログラミング問題で構成され、モデルが生成したコードがユニットテストを通過するかで正解判定する。Pass@k 指標で評価され、コード生成 LLM の標準的な評価基準として広く使用されている。
HumanEval ベンチマークとは
HumanEval は OpenAI が2021年に Codex 論文と共に公開したコード生成ベンチマークである。164問の Python プログラミング課題で構成され、各問題には関数シグネチャ・docstring・ユニットテストが含まれる。モデルが生成したコードを実際に実行し、テストをパスするかで正誤を判定する「実行ベース評価」が特徴である。
データセットの構成
HumanEval の各問題は以下の要素で構成される。
- 関数シグネチャ:
def function_name(param: type) -> return_type: - Docstring: 関数の仕様を自然言語で説明
- ユニットテスト: 正解判定用のテストケース(平均7.7個/問)
- 正解実装: 参考用の人間による実装
問題の難易度はアルゴリズム入門〜中級レベルで、文字列操作・リスト処理・数学・再帰・ソートなど基本的なプログラミングスキルを測定する。
Pass@k 評価指標
HumanEval では Pass@k という指標で性能を評価する。k 回コードを生成し、1回でもテストを通過すれば成功とみなす。
| 指標 | 意味 | 使い方 |
|---|---|---|
| Pass@1 | 1回の生成で正解する確率 | 実用性能の指標(ユーザーが最初に得る結果) |
| Pass@10 | 10回中1回以上正解する確率 | モデルの潜在能力 |
| Pass@100 | 100回中1回以上正解する確率 | 理論上の上限性能 |
実用上は Pass@1 が最も重要で、Pass@10 や Pass@100 はモデルの潜在的な能力を示す参考値として使われる。
主要モデルの HumanEval スコア
| モデル | Pass@1 | リリース時期 |
|---|---|---|
| GPT-4o | 90.2% | 2024年 |
| Claude 3.5 Sonnet | 92.0% | 2024年 |
| DeepSeek-Coder-V2 | 90.2% | 2024年 |
| Llama 3.1 405B | 89.0% | 2024年 |
| GPT-4 (初期) | 67.0% | 2023年 |
| Codex (code-davinci-002) | 47.0% | 2021年 |
| GPT-3.5 Turbo | 48.1% | 2022年 |
2024年以降の最先端モデルは Pass@1 で90%前後に到達しており、HumanEval 単体ではモデル間の差別化が困難になっている。
HumanEval の派生ベンチマーク
HumanEval の限界を補うために複数の派生ベンチマークが登場している。
- HumanEval+: テストケースを大幅に追加(80倍)して偽陽性を減らした強化版。EvalPlus プロジェクト
- MBPP (Mostly Basic Python Problems): Google が公開した974問のPython問題。HumanEval より簡単だが量が多い
- MultiPL-E: HumanEval を18言語(Java, C++, Rust, Go 等)に翻訳した多言語版
- SWE-bench: 実際の GitHub Issue を解決させる実践的なベンチマーク。HumanEval より難度が桁違いに高い
- LiveCodeBench: 時系列で新問題が追加される「生きた」ベンチマーク。汚染対策
HumanEval の限界
- 問題が簡単すぎる: 最先端モデルが90%超を達成しており、天井効果が発生
- Python のみ: 他言語の能力を測定できない(MultiPL-E で補完)
- 実務との乖離: 短い関数の実装問題であり、実際のソフトウェア開発(大規模コード・デバッグ・リファクタ)とは異なる
- ベンチマーク汚染リスク: 問題が公開されているため、学習データに含まれている可能性がある
FAQ
Q1: HumanEval で高スコアのモデルは実務でも使えますか?
A1: HumanEval の高スコアはコード生成の基礎能力を示すが、実務ではコンテキスト理解・大規模コードベースの把握・デバッグ能力なども重要。SWE-bench や実際のタスクでの評価も併用すべき。
Q2: HumanEval の問題は見ることができますか?
A2: GitHub で公開されている(openai/human-eval)。ただしモデルの学習データに混入する汚染リスクがあるため、新しいベンチマーク(LiveCodeBench等)も参照すべき。
Q3: ローカル LLM の HumanEval スコアを測定するには?
A3: bigcode/bigcode-evaluation-harness または lm-evaluation-harness で測定可能。vLLM や llama.cpp バックエンドに対応しており、GGUF 形式のモデルも評価できる。