Skip to main content
QUICK REVIEW

[논문 리뷰] EvoCodeBench: An Evolving Code Generation Benchmark Aligned with Real-World Code Repositories

Jia Li, Ge Li|arXiv (Cornell University)|2024. 03. 31.
Model-Driven Software Engineering Techniques인용 수 5
한 줄 요약

EvoCodeBench는 실세계 저장소(real-repo) 정렬된 코드 생성 벤치마크로, 포괄적 주석과 진화하는 파이프라인을 갖추고 있으며, 저장소 수준 코드 생성을 위해 10개의 LLM을 대상으로 평가되었습니다.

ABSTRACT

How to evaluate Large Language Models (LLMs) in code generation is an open question. Existing benchmarks demonstrate poor alignment with real-world code repositories and are insufficient to evaluate the coding abilities of LLMs. This paper proposes a new benchmark - EvoCodeBench to address the preceding problems, which has three primary advances. (1) EvoCodeBench aligns with real-world repositories in multiple dimensions, e.g., code distributions and dependency distributions. (2) EvoCodeBench offers comprehensive annotations (e.g., requirements, reference code, and reference dependencies), and robust evaluation metrics (e.g., Pass@k and Recall@k). (3) EvoCodeBench is an evolving benchmark to avoid data leakage. We build an automatic pipeline to update EvoCodeBench from the latest repositories. We release the first version - EvoCodeBench-2403, containing 275 samples from 25 real-world repositories. Based on EvoCodeBench, we propose repository-level code generation and evaluate 10 popular LLMs (e.g., gpt-4, gpt-3.5, DeepSeek Coder, StarCoder 2, CodeLLaMa, Gemma, and Qwen 1.5). Our experiments reveal the coding abilities of these LLMs in real-world repositories. For example, the highest Pass@1 of gpt-4 only is 20.73% in our experiments. We also analyze failed cases and summarize the shortcomings of existing LLMs in EvoCodeBench. We release EvoCodeBench, all prompts, and LLMs' completions for further community analysis.

연구 동기 및 목표

  • 기존 벤치마크가 실제 세계의 코드 저장소와 잘 부합하지 않는다는 점을 주장한다.
  • 실세계 분포, 포괄적 주석 및 강력한 지표를 갖춘 EvoCodeBench를 제안한다.
  • 데이터 누수를 완화하고 벤치마크를 최신 상태로 유지하기 위한 진화하는 벤치마크 파이프라인을 도입한다.
  • 저장소 수준 코드 생성을 현실적인 평가 시나리오로 정의한다.
  • 실제 저장소에서 인기 있는 LLM들을 평가하여 강점과 한계를 밝힌다.

제안 방법

  • 코드 및 의존성 분포의 정렬을 갖춘 실제 세계의 파이썬 저장소들로부터 EvoCodeBench를 구성한다.
  • 요구사항, 참조 코드, 참조 의존성 및 테스트 케이스로 샘플에 주석을 단다.
  • Pass@k를 기능적 정합성 지표로 사용하고 Recall@k를 의존성 회수를 평가한다.
  • 부분 자동화된 요구사항 생성과 주기적 업데이트를 포함한 진화하는 벤치마크 파이프라인을 운영한다.
  • 여러 컨텍스트 설정에서 10개의 LLM 세트(GPT-4, GPT-3.5, StarCoder 2, CodeLLaMa, Gemma, Qwen 1.5, DeepSeek Coder 등)를 평가한다.
  • 요구사항과 맥락을 주어 저장소 내에서 코드를 작성하는 것을 시뮬레이션하는 저장소 수준 코드 생성 작업을 정의한다.]
  • research_questions

실험 결과

연구 질문

  • RQ1EvoCodeBench가 실제 세계의 저장소에서 발견되는 분포(코드 및 의존성)와 얼마나 잘 일치하는가?
  • RQ2저장소 수준의 코드 생성이 독립 함수 벤치마크보다 개발자의 코딩 프로세스를 더 잘 반영하는가?
  • RQ3저장소 수준 코드 생성에서 현재 LLM들의 성능 및 실패 모드는 무엇인가?
  • RQ4저장소의 맥락(로컬 파일, 파일 간 의존성)이 저장소 수준 작업에서 LLM의 성능을 향상시키는가?
  • RQ5Pass@k 및 Recall@k와 같은 평가 지표가 실제 저장소에서 LLM의 능력과 한계를 어떻게 반영하는가?

주요 결과

LLMsSizePass@1Pass@3Pass@5Pass@10Recall@1Recall@3Recall@5Recall@10
gpt-4N/A20.7323.0324.1125.3468.2470.6372.0573.52
gpt-3.5N/A17.8221.7823.0624.4661.9468.1369.6970.85
DeepSeek Coder33B19.6422.7824.2926.0171.4679.9382.1186.25
DeepSeek Coder6.7B17.8221.0222.4023.9769.5874.0478.0083.22
StarCoder 215B14.9117.5418.6319.8650.9053.2955.8961.76
StarCoder 27B15.2717.2918.6320.0956.3560.5963.7474.20
  • EvoCodeBench-2403은 275개의 샘플을 25개의 실제 세계 저장소에서 포함하고 있으며 500개의 실제 세계 저장소에서 관찰된 분포와 정합한다.
  • 벤치마크는 요구사항, 참조 코드, 참조 의존성, 의존성 경로를 포함한 저장소 맥락 등 포괄적 주석을 제공한다.
  • 10개 인기 LLM은 EvoCodeBench-2403에서 전통적 벤치마크보다 훨씬 낮은 Pass@k 점수를 보인다(예: HumanEval에서 최대 88.4인 GPT-4의 Pass@1이 EvoCodeBench-2403에서 7.27로 감소).
  • 로컬 파일의 맥락 정보가 성능을 크게 향상시키며; GPT-4의 경우 특정 설정에서 Pass@1이 최대 약 152% 증가한다.
  • Recall@k는 의존성 회수의 문제점을 강조하며, 파일 간 의존성은 로컬 맥락으로부터 이익을 얻지만 여전히 불일치나 누락에 취약하다.
  • 유사한 함수로 검색 보강된 생성(RAG)은 Pass@1과 Recall@1을 향상시키며 저장소 수준 맥락 활용의 가치를 보여준다.

더 나은 연구,지금 바로 시작하세요

연구 설계부터 논문 작성까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.