Skip to main content
QUICK REVIEW

[論文レビュー] Fault-Aware Neural Code Rankers

Jeevana Priya Inala, Chenglong Wang|arXiv (Cornell University)|Jun 4, 2022
Software Engineering Research被引用数 13
ひとこと要約

この論文では、実行せずにプログラムの正しさを予測する故障に配慮したニューラルランカー、CodeRankerを提案する。CodeRankerは、TypeError や IndexError などの細分化されたエラー種別を分類することで、実行フィードバックから学習し、APPS、HumanEval、MBPP などの複数のコード生成モデルおよびデータセットで pass@1 の精度を最大で13.6パーセンテージポイント向上させる。

ABSTRACT

Large language models (LLMs) have demonstrated an impressive ability to generate code for various programming tasks. In many instances, LLMs can generate a correct program for a task when given numerous trials. Consequently, a recent trend is to do large scale sampling of programs using a model and then filtering/ranking the programs based on the program execution on a small number of known unit tests to select one candidate solution. However, these approaches assume that the unit tests are given and assume the ability to safely execute the generated programs (which can do arbitrary dangerous operations such as file manipulations). Both of the above assumptions are impractical in real-world software development. In this paper, we propose CodeRanker, a neural ranker that can predict the correctness of a sampled program without executing it. Our CodeRanker is fault-aware i.e., it is trained to predict different kinds of execution information such as predicting the exact compile/runtime error type (e.g., an IndexError or a TypeError). We show that CodeRanker can significantly increase the pass@1 accuracy of various code generation models (including Codex, GPT-Neo, GPT-J) on APPS, HumanEval and MBPP datasets.

研究の動機と目的

  • セキュリティリスクや依存関係のオーバーヘッドのため、推論時にLLMが生成したコードを実行することが現実的でないことを解決する。
  • ユニットテストと安全な実行環境を必要とする実行ベースのフィルタリングの限界を克服する。
  • ランタイム実行なしにサンプリングされたプログラムをランク付けすることで、コード生成モデルの pass@1 のパフォーマンスを向上させる。
  • 構文エラー、実行時エラー、型エラーなどの多様な失敗モードを理解できるニューラルランカーを開発し、プログラムの正しさをよりよく評価する。
  • 再訓練なしに、異なるコード生成モデルやデータセット間でランカーを転送可能にする。

提案手法

  • プログラム実行フィードバックから多クラス障害モードを予測する故障に配慮したニューラルランカー(CodeRanker)を訓練する。
  • CodeBERT を、エラー種別や出力不一致などの実行結果に基づいて微調整し、プログラム正しさの分類器を構築する。
  • ユニットテスト上でサンプルされたプログラムの実行ログを用いて、具体的なエラー種別や出力種別を含むラベルを生成する。
  • 予測された正しさ確率に基づいて候補となるプログラムをランク付けし、失敗の可能性が低いものを優先する。
  • データセット作成時に実行データを活用し、推論時にランタイム実行を回避する。
  • 再訓練なしに、コード生成モデル(例:Codex、GPT-J、GPT-Neo)およびデータセット(APPS、HumanEval、MBPP)間でランカーを転送する。

実験結果

リサーチクエスチョン

  • RQ1細分化されたエラー種別を予測するように訓練されたニューラルランカーは、実行を伴わせずにLLMが生成したプログラムのランク付けを改善できるか?
  • RQ2故障に配慮したランク付けは、二値分類ベースのランク付けと比較して、pass@k および exec@k メトリクスにおいてどのように異なるか?
  • RQ3あるコード生成モデルで訓練されたランカーが、再訓練なしに他のモデルへどの程度転送可能か?
  • RQ4故障に配慮したランク付けは、コンテスト形式の問題以外のプログラミングタスクやデータセットに対しても一般化可能か?
  • RQ5故障に配慮したランク付けは、推論時に高価な実行を減らしつつ、精度を維持または向上させることができるか?

主な発見

  • CodeRanker は、APPS のバリデーションセットで Codex の pass@1 精度を 26% から 39.6% に、テストセットで 3.8% から 4.5% に向上させた。
  • HumanEval では、Codex の pass@1 を 26% から 32% に、MBPP では 36% から 42% に向上させた。
  • 故障に配慮したランカーは、ベースラインの二値分類器を上回り、細分化されたエラー予測の価値を示した。
  • ランカーは転送可能である:再訓練なしに、GPT-J や GPT-Neo などの異なるコード生成モデルでも性能向上が観察された。
  • CodeRanker は意図の誤りよりも実行エラーをより効果的に検出できており、モデルが生成したコードがしばしばランタイムで失敗することと整合する。
  • 推論時の実行依存度を低減でき、実世界の環境でより安全でスケーラブルなコード生成を可能にした。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。