複数の画面で作業する開発者

HumanEvalとは

HumanEvalの定義

HumanEvalはベンチマークであり、大規模言語モデル(LLM)コード生成の機能を評価します。これは、OpenAIのソフトウェア・エンジニアリングエージェントであるCodexを支えるAIモデルの初期バージョンを評価するために同社によって開発されました。

HumanEvalベンチマークは、特にPythonで生成されたコード用に設計されています。構文の枠を超えて、作成されたコードが正確であり、意図したとおりに機能することを検証します。

ベンチマークのフレームワークは、OpenAI HumanEvalのGitHubリポジトリーからアクセスできます。HumanEvalはまた、Claudeスイート、Kimi K2Google GemmaGeminiGPT-5および旧型GPT-4o、およびGPT-4、IBM® Granite®ファミリーなど、さまざまなコード生成モデルのパフォーマンスをランキングしたリーダーボードも持っています。

The DX Leaders

AI活用のグローバル・トレンドや日本の市場動向を踏まえたDX、生成AIの最新情報を毎月お届けします。登録の際はIBMプライバシー・ステートメントをご覧ください。

ご登録いただきありがとうございます。

ニュースレターは日本語で配信されます。すべてのニュースレターに登録解除リンクがあります。サブスクリプションの管理や解除はこちらから。詳しくはIBMプライバシー・ステートメントをご覧ください。

データ・セット構造

HumanEvalデータ・セットは、164個の手書きプログラミングの問題と、それに対応する単体テストで構成されています。1これらの問題は、モデルが言語を理解し、文字列を操作し、検索およびソートする能力を評価するものです。また、単純な数学と複雑なアルゴリズムの観点から問題解決スキルを評価します。これらのプログラミング・タスクは、ソフトウェア開発者が技術面接で直面するアルゴリズムの質問、コーディング演習、システム設計の課題と似ています。

各コード生成タスクには、次の構成要素があります。

  • 関数シグネチャ

  • Docstring

  • 機能本体

  • 単体テスト

関数シグネチャー

シグネチャは、関数の名前とパラメーターを定義します。例として、2つの整数の積を計算する関数の署名は次のとおりです。

def multiply(a, b):

Docstring

docstringは、関数の期待される動作、目標、インプット、アウトプットの自然言語プロンプトまたは説明です。これらのコメントは関数の機能の概要を示し、Pythonコードを生成する際のモデルの指針となります。

たとえば、multiply関数のdocstringは次のようになります:

“””Complete the function that takes two integers as inputs
and returns their product as the output.
Assume the inputs are always valid.
Examples:
multiply(8, 2) must return 16
multiply(0, 777) must return 0
multiply(-32,64) must return -2048
“””

関数本体

これは、モデルが生成するコードに割り当てられるセグメントです。これは、関数シグネチャとdocstringに基づいて、問題に対する実装済みの解決策を保持します。

単体テスト

これらのテスト・ケースは、生成されたコードの機能的な正しさをさまざまなシナリオで検証します。各テストでは、関数に特定のインプットを入力し、そのアウトプットを結果と照合します。

乗算関数の単体テストの例をいくつか示します。

def test_multiply():
    assert multiply(89, 0) == 0
    assert multiply(37, -5) == -185
    assert multiply(66, 17) == 1122

評価メトリクス

コードLLMベンチマークの多くは、生成されたコード・サンプルを参照ソリューションと比較する一致ベースの指標など、テキスト生成に使用される方法論を適用しています。しかし、一致ベースの指標では通常、問題を解決するためのさまざまな方法は考慮されておらず、いずれも参照ソリューションと機能的に同等である可能性があります。

そのため、HumanEvalベンチマークは機能の正確性に目を向けました。これは、生成されたコード・サンプルが一連の単体テストに合格している場合に正しいと判断するものです。このアプローチは、開発者がコードの成功を評価する際に、一連の単体テストを実行し、それぞれに合格することを確認する方法を反映しています。

HumanEvalは、pass@k指標を使用して機能の正確性を測定します。問題ごとに、モデルはk個のコード・サンプルを生成します。これらのサンプルのいずれかが単体テストに合格すると、問題は正しく解決されたと見なされます。Pass@k指標は、k個のサンプルのうち少なくとも1つが機能的に正しい確率を推定します。

オフィスでミーティングをするビジネスチーム

IBMお客様事例

お客様のビジネス課題(顧客満足度の向上、営業力強化、コスト削減、業務改善、セキュリティー強化、システム運用管理の改善、グローバル展開、社会貢献など)を解決した多岐にわたる事例のご紹介です。

HumanEvalの限界

HumanEvalは、コードLLMを評価するための多くのベンチマークの1つにすぎません。ソフトウェア開発チームは、引き続き独自の内部テストを使用してLLMで生成されたコードを評価し、複数の指標を組み合わせてモデル性能をより包括的に把握する必要があります。また、AIが生成したコードの精度を保証し、機械学習モデルを長期にわたってファイン・チューニングおよび改善するためには、ヒューマン・イン・ザ・ループ・アプローチも引き続き重要です。

HumanEvalベンチマークのいくつかの限界を以下に示します。

  • 汚染

  • 現実世界の複雑さの欠如

  • コーディング能力という狭い指標

  • 制限されたプログラミング言語のサポート

汚染

データ・セットに含まれるプログラミングの問題は、その広範な入手可能性から、モデルのトレーニング中に発生した可能性があります。また、問題の数も少なく、コード生成モデルがおそらくすべてを記憶できるほどです。

現実世界の複雑さの欠如

HumanEval内のコード生成タスクは通常、簡単なものから中程度の範囲に分類されます。しかし、現実世界のプログラミング・タスクは、複数のシステムとのAPI連携、巨大なコードベース、大規模なデータ・セットなど、より複雑になる傾向があります。

ユースケースの進化、不完全なテスト・ケース、一貫性のない要件、レガシー・コード、あいまいな仕様など、現実世界のソフトウェア開発環境やワークフローがしばしば複雑に絡み合った状態を、ベンチマークは反映していません。

コーディング機能の限定的なメトリクス

プログラミングには、単に機能的に正しいこと以上のものがあります。たとえば、HumanEvalは効率性を考慮していません。これは、正確で期待どおりに機能するLLM生成コードが、性能の点で最も効率的で最適化されたソリューションではない可能性があることを意味します。

このベンチマークでは、コーディング規則、スタイル基準、エラー処理、インプット検証、安全なコーディングなどのプログラミングのベスト・プラクティスは考慮されていません。

制限されたプログラミング言語のサポート

HumanEvalは、オープンソースのPythonプログラミング言語向けに特別に調整されています。他の言語で生成されたソースコードは、他のベンチマークを使用して評価する必要があります。

HumanEvalのバリエーション

ベンチマークには、一部の制限に対処する複数の異なるバージョンがあります。

  • HumanEval+
     

  • HumanEval-V
     

  • HumanEval-X
     

  • HumanEvalNext

HumanEval+

HumanEvalの各プログラミング問題には、平均して約7~8個の単体テストがあります。1 HumanEval+では、テスト・カバレッジが大幅に向上し、問題あたり平均764個のテストでより厳密な評価が可能になります。2

HumanEval-V

HumanEval-Vは前モデルを基に、特に視覚言語モデル(VLM)を中心としたマルチモーダルAIモデルのベンチマークを作成しています。これは、アルゴリズムやマトリックス変換のフローチャートに基づいてコードを生成するなど、プログラミング・コンテキストでチャート、図、グラフを理解し推論する VLM の能力を評価します。

HumanEval-X

HumanEval-Xは元のベンチマークを拡張し、C++、Go、Java、JavaScriptのプログラミング言語も含みます。その820のタスクは、コード生成およびコード変換のスキルを評価するために使用できます。

HumanEvalNext

HumanEvalNextはHumanEvalを改良したものです。型注釈(関数パラメーターと戻り値のデータ型を示すプログラミング構文)を通じてコンテキストを追加し、より多くのエッジケースを組み込み、より多くの単体テストを導入し、問題の難易度を高めます。3

共同執筆者

Rina Diane Caballar

Staff Writer

IBM Think

Cole Stryker

Staff Editor, AI Models

IBM Think

関連ソリューション
IBM Bob

安全で意図を認識した開発を実現するAIパートナーであるBobと連携して、ソフトウェア・デリバリーを加速させましょう。

IBM Bobはこちら
AIコーディング・ソリューション

信頼性の高いAI駆動型ツールを活用することで、コード作成、デバッグ、リファクタリング、コード補完に費やす時間を最小限に抑え、イノベーションに集中できる余地を広げます。

AIコーディング・ソリューションはこちら
AIコンサルティングとサービス

AIの導入によって重要なワークフローと業務を再構築し、エクスペリエンスの最大化、リアルタイムの意思決定、ビジネス価値の向上を実現しましょう。

AIコンサルティング・サービスはこちら
次のステップ

生成AIと高度な自動化を活用して、企業向けのコードをより迅速に作成Bobモデルは開発者のスキルセットを強化し、開発とモダナイゼーションの取り組みを簡素化、自動化します。

  1. IBM Bobの詳細
  2. AIコーディング・ソリューションはこちら