Core Concepts
大規模言語モデルを使用して、任意のコード断片をテストケースを含む評価例に変換することで、多様なシナリオにわたるコード生成システムの評価を可能にする。
Abstract
本研究では、CodeBenchGenと呼ばれるフレームワークを提案し、これを使用して実行ベースのベンチマークデータセットであるExec-CSNを構築した。
CodeBenchGenは以下のステップで動作する:
サンドボックス化: 大規模言語モデルを使用して、任意のコード断片をテストケースを含む実行可能な形式に変換する。
テスト生成: 大規模言語モデルを使用して、生成したコードを検証するためのテストケースを生成する。
反復的な実行とデバッグ: 生成したコードとテストケースを実行し、大規模言語モデルを使ってデバッグを行う。これを繰り返し、全てのテストケースに合格するまで改善する。
ポストプロセッシング: 自然言語の説明や追加のテストケースを生成する。
Exec-CSNは、CodeSearchNetデータセットから抽出した1,931個の評価例で構成される。ドメインの多様性、問題の複雑さ、解決可能性の分析を行った結果、Exec-CSNが高品質な実行ベースのベンチマークであることが示された。
10種類のコード生成モデルをExec-CSNで評価した結果、最良のモデルでも37.21%のPass@1スコアしか得られず、Exec-CSNが非常に複雑な問題を含んでいることが明らかになった。モデルの性能は、出力の長さや関数呼び出しの数、外部ライブラリの使用などの要因によって大きく変動することが分かった。
人間とモデルの比較実験では、初回の正解率はモデルの方が高いものの、反復的な改善によって人間の方が最終的により多くの問題を解決できることが示された。
Stats
コード生成モデルの性能は、出力の長さが長いほど、関数呼び出しが多いほど、外部ライブラリを使用している場合に低下する傾向がある。