Evaluating Large Language Models Trained on Code
코드로 학습된 대규모 언어 모델 평가
Mark Chen, Jerry Tworek, Heewoo Jun, et al. (2021)
GPT 언어 모델을 GitHub 코드로 미세조정한 Codex를 개발하여, 자연어 설명으로부터 프로그램을 자동 생성하는 능력을 크게 향상시키고, 이를 평가하기 위한 HumanEval 벤치마크를 제안했다.
배경
GPT-3 등 대규모 언어 모델은 자연어 처리에서 놀라운 성과를 보였으나, 프로그래밍과 같은 형식적 언어 생성에서는 한계가 있었다. 코드는 자연어와 달리 구문 오류에 엄격하고 실행 가능성이 검증 가능하다는 특성이 있어, 새로운 평가 방법론이 필요했다. 기존의 코드 생성 벤치마크는 주로 코드 완성이나 코드 검색에 초점을 맞추고 있었다.
핵심 아이디어
Codex는 GPT 모델을 GitHub에서 수집한 159GB의 Python 코드로 미세조정하여 코드 생성에 특화시킨 모델이다. 핵심 기여는 두 가지이다. 첫째, docstring(함수 설명)으로부터 올바른 함수 본문을 생성하는 능력을 평가하는 HumanEval 벤치마크(164개 프로그래밍 문제)를 제안했다. 이는 단순 문자열 매칭이 아닌 실제 유닛 테스트 통과 여부로 정확성을 평가한다. 둘째, 모델에서 여러 후보를 샘플링한 뒤 올바른 것을 선택하는 pass@k 메트릭을 도입했다. k개의 샘플 중 하나라도 테스트를 통과하면 성공으로 간주하는 이 메트릭은 코드 생성의 실용적 활용 시나리오를 반영한다.
방법론
GPT-3 12B 모델을 기반으로 GitHub 공개 저장소에서 수집한 Python 파일(159GB)로 미세조정했다. 학습률, 토크나이저(추가 코드 토큰), 컨텍스트 길이(4096 토큰) 등을 코드 도메인에 맞게 조정했다. pass@k 평가를 위한 비편향 추정량을 제안하고, 후보 선택을 위해 docstring 로그 확률 기반 리랭킹과 클러스터링 방법도 탐구했다.
주요 결과
Codex-12B는 HumanEval에서 pass@1 28.8%, pass@100 72.3%를 달성하여, GPT-3 175B의 pass@1 0%를 크게 능가했다. 반복 샘플링과 리랭킹을 결합하면 pass@1이 44.5%까지 향상되었다. GPT-J 6B도 코드 학습 후 HumanEval에서 유의미한 성능을 보여, 코드 특화 학습의 효과가 모델 크기에 걸쳐 일반적임을 확인했다.
임팩트
Codex는 GitHub Copilot의 핵심 기술로 상용화되어 AI 기반 프로그래밍 보조 도구 시장을 개척했다. HumanEval 벤치마크는 코드 생성 모델 평가의 사실상 표준이 되었으며, pass@k 메트릭은 이후 모든 코드 LLM 연구에서 채택되었다. 이 연구는 LLM의 응용 범위를 코드 생성으로 확장하는 결정적 계기가 되었고, StarCoder, CodeLlama 등 후속 코드 모델 연구를 촉발했다.