BigCodeBench: 복잡한 파이썬 코드 생성을 위한 새로운 벤치마크
Hugging Face는 복잡하고 실제적인 작업에 초점을 맞춰 대형 언어 모델(LLM)의 실용적인 프로그래밍 능력을 평가하도록 설계된 새로운 벤치마크인 BigCodeBench를 소개했습니다. HumanEval과 같은 기존 벤치마크는 종종 단순한 알고리즘 중심의 코드 조각에 의존하지만, BigCodeBench는 모델이 139개의 다양한 라이브러리를 활용해 여러 함수 호출을 조합하여 사용자 중심 문제를 해결하도록 요구합니다.
기존 벤치마크의 한계 해결
BigCodeBench는 기존 코드 평가 프레임워크에서 발견되는 세 가지 주요 문제를 해결하기 위해 개발되었습니다:
- Task Simplicity: HumanEval 작업은 실제 소프트웨어 개발을 나타내기엔 너무 단순한 경우가 많으며, 실제 개발은 다양한 라이브러리 통합을 필요로 합니다.
- Contamination and Overfitting: LLM이 HumanEval 데이터로 학습되었을 가능성이 커짐에 따라 일반화 측정으로서 신뢰성이 떨어진다는 우려가 커지고 있습니다.
- Lack of General-Purpose Tools: 기존 대안들은 종종 도메인에 특화되었거나 결정론적이거나 에이전트에만 초점을 맞추고 있어(e.g., DS-1000 or SWE-bench) 사용하기 쉬운 포괄적인 프로그래밍 벤치마크에 대한 공백이 존재합니다.
기술 설계 및 작업 구조
BigCodeBench는 1,140개의 함수 수준 작업으로 구성됩니다. 엄격한 평가를 위해 각 작업은 평균 5.6개의 테스트 케이스와 평균 99%의 분기 커버리지를 포함합니다.
작업 변형
벤치마크에는 모델의 다양한 능력을 테스트하기 위해 두 가지 버전이 존재합니다:
- BigCodeBench-Complete: LLM이 docstring에 있는 상세한 지침을 기반으로 함수를 완성하는 코드 완성 시나리오.
- BigCodeBench-Instruct: 요구사항이 대화형이며 덜 자세한 형태로 제시되어 instruction-tuned LLM을 평가하는 보다 도전적인 변형.
작업 생성 과정
작업은 "Human-LLM 협업 프로세스"를 통해 생성됩니다:
- Seeding: 이 과정은 ODEX 데이터셋(Stack Overflow Python one-liners)으로 시작되었습니다.
- Expansion: GPT-4가 이러한 one-liner들을 포괄적인 함수 수준 작업으로 확장했습니다.
- Refinement: 5년 이상의 파이썬 경험을 가진 20명의 인간 전문가가 샌드박스에서 GPT-4를 안내하여 작업을 정제하고 테스트 케이스를 추가했습니다.
- Verification: 추가로 7명의 인간 전문가가 품질을 교차 검증했습니다. 인간 전문가들은 샘플링된 작업에서 평균 97%의 성능을 달성했습니다.
LLM 성능 및 평가 지표
평가는 Pass@1 with greedy decoding을 사용하여 수행되며, 첫 시도에서 올바르게 해결된 작업 비율을 측정합니다. 장문의 프롬프트에서 instruction-tuned 모델이 필수 import 문을 생략하는 "model laziness" 현상을 방지하기 위해 연구진은 calibrated Pass@1을 사용하여 평가 시 누락된 설정(import 및 전역 상수)을 추가합니다.
주요 결과
- Performance Gap: LLM은 인간보다 현저히 낮은 성능을 보입니다. 현재 최고 성능 모델은 GPT-4o이며,
BigCodeBench-Complete에서 61.1%,BigCodeBench-Instruct에서 51.1%의 calibrated Pass@1을 달성했습니다. - Closed vs. Open Models: 폐쇄형 모델과 오픈소스 모델 사이에 눈에 띄는 성능 격차가 존재합니다.
- Difficulty: 이 벤치마크는 매우 어려우며,
BigCodeBench-Complete에서 149개의 작업이 모든 테스트 모델에 의해 해결되지 않았고, 오직 6개의 작업만이 모든 모델에 의해 해결되었습니다.
Elo 레이팅을 통한 순위 매김
Pass@1보다 더 세밀한 비교를 제공하기 위해 팀은 체스에서 흔히 사용되는 Elo 레이팅 시스템을 적용했습니다. 이 시스템에서는 각 작업을 게임으로, 각 모델을 플레이어로 간주합니다. GPT-4o가 큰 차이로 순위 1위를 차지했으며, 그 다음으로 DeepSeekCoder-V2가 2위에 위치합니다.
평가 프레임워크 및 구현
BigCodeBench는 PyPI(pip install bigcodebench)를 통해 제공되는 사용자 친화적인 평가 프레임워크를 제공합니다. 이 프레임워크는 EvalPlus를 기반으로 하며 unittest와 BigCodeBench의 다양한 라이브러리 의존성을 고려해 맞춤화되었습니다.
워크플로우
- Generation:
bigcodebench.generate를 사용해 코드 샘플을 생성합니다. - Sanitization:
bigcodebench.sanitize를 사용해 자연어를 제거하고 코드가 컴파일 가능하도록 합니다. - Evaluation: Docker 샌드박스 내에서
bigcodebench.evaluate를 사용해 테스트 케이스에 대해 코드를 실행합니다.
향후 로드맵
BigCode 프로젝트는 벤치마크를 여러 핵심 영역에서 발전시키는 것을 목표로 합니다:
- Multilingualism: 파이썬을 넘어 다른 프로그래밍 언어로 확장합니다.
- Rigorousness: 모든 LLM 생성 솔루션이 정확히 평가되도록 테스트 케이스 증강을 개선합니다.
- Generalization:
transformers와langchain과 같은 최신 라이브러리에서 모델을 테스트합니다. - Evolution: 폐기된 라이브러리 버전과 변화하는 학습 데이터를 반영하도록 벤치마크를 주기적으로 업데이트합니다.
- Interaction: 모델이 브라우저와 터미널과 상호작용하여 자체 디버깅 및 반성을 할 수 있도록 하여 "LLMs as Agents" 방향으로 나아갑니다.
SUMMARY: Hugging Face는 실용적인 프로그래밍과 다양한 라이브러리 사용을 평가하기 위해 1,140개의 함수 수준 작업으로 구성된 벤치마크인 BigCodeBench를 출시했으며, HumanEval의 단순성 및 오염 문제를 해결했습니다.
TITLE: BigCodeBench: 복잡한 파이썬 코드 생성을 위한 새로운 벤치마크