Skip to main content
QUICK REVIEW

[논문 리뷰] Fault-Aware Neural Code Rankers

Jeevana Priya Inala, Chenglong Wang|arXiv (Cornell University)|2022. 06. 04.
Software Engineering Research인용 수 13
한 줄 요약

이 논문은 실행 없이 프로그램의 정확성을 예측하는 장애 인식 신경 순위 매기기인 CodeRanker를 제안한다. 이는 예를 들어 TypeError, IndexError와 같은 세분화된 오류 유형을 분류함으로써 작동한다. 샘플링된 프로그램의 실행 피드백을 기반으로 훈련된 CodeRanker는 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가 만들고, 인간 에디터가 검토했습니다.