HumanEvalは、OpenAIが2021年にCodexを紹介した論文とともに公開したコード生成用のAI benchmarkであり、元のGitHub Copilotを支えたモデルです。このベンチマークは、164個の手書きのPythonプログラミング問題で構成され、各問題には関数シグネチャ、タスクを説明するdocstring、および生成されたソリューションの正しさを検証するための単体テストのセットが含まれています。
設計
各HumanEval問題は、モデルに対して、シグネチャと自然言語のdocstringのみを与えてPython関数本体を完成させることを求めます。これは、プログラマーが小さなタスクを書く前に説明する方法に似ています。正しさは機能的に判断され、生成されたソリューションは、単一の参照回答とテキスト的に比較されるのではなく、付随する単体テストを満たす場合に合格とみなされます。これにより、同じ関数を実装する多くの異なる有効な方法が可能になります。問題は既存のコードリポジトリからスクレイピングされるのではなく、ベンチマーク用に手書きで作成されたため、HumanEvalは、モデルのトレーニングデータにソリューションが逐語的に既に存在するリスクを低減するように設計されました。
pass@kメトリック
HumanEvalは、コード生成を評価するためのpass@kメトリックを導入または普及させました。これは、モデルから独立してサンプリングされたk個のソリューションのうち、少なくとも1つが特定の問題のすべての単体テストに合格する確率を測定します。Pass@1は単一試行の精度に近似し、pass@100以上の値は、多くのサンプル内のどこかに正しいソリューションが現れる頻度を推定し、複数の再試行を許可するなど、さまざまな実世界の使用パターンにおけるモデルの能力を理解するのに役立ちます。
採用と進歩
HumanEvalはすぐにコーディング能力の標準的な参照点となり、OpenAI、Anthropic、Google DeepMind、およびMeta AIのLlamaファミリーなどのオープンモデル開発者からのリリース発表で、一般的な評価結果とともに報告されました。パフォーマンスは急速に向上し、初期のCodexモデルはpass@1で30%未満の問題を解決しましたが、2023年から2024年までに主要モデルは90%を超え、これはより広範な知識領域でMMLUに見られる飽和パターンと同様です。
制限と後継
HumanEvalの問題は比較的短く、自己完結型で、Python固有であるため、強いパフォーマンスは、モデルが大規模で現実的なコードベース、複数ファイルのプロジェクト、または他のプログラミング言語を処理できることを必ずしも示しません。多くの初期のベンチマークと同様に、データ汚染がますます懸念されるようになりました。なぜなら、問題とコミュニティが書いたソリューションがオンラインで広く流通し、後のモデルの事前学習データに現れる可能性があるためです。これらの制限により、より困難で現実的な後継が動機付けられ、最も注目すべきはSWE-benchであり、これは短い孤立した関数ではなく、実際のGitHubの問題と完全なコードベースにタスクを基づかせており、元のHumanEval形式の他の多言語拡張もあります。
遺産
後の基準では範囲が狭いにもかかわらず、HumanEvalは、コード生成をモデル間で測定可能で比較可能な能力として確立する上で重要な役割を果たし、その機能的でテストベースの評価アプローチ(参照ソリューションへのテキスト的類似性ではなく)は、業界全体のその後のコーディングベンチマークの設計に影響を与えました。