ProgramBench 소개
언어 모델(Language Model, LM)을 활용한 소프트웨어 개발은 더 이상 단일 함수 작성에 머무르지 않습니다. 여러 SWE 에이전트(SWE Agent)가 장기간에 걸쳐 코드베이스를 새로 만들고 유지보수하는 사례가 늘어나면서, 모델이 단일 버그 수정이나 정해진 기능 추가가 아닌 시스템 아키텍처 수준의 의사결정을 직접 내리는 능력이 중요해졌습니다. 그러나 SWE-bench, HumanEval, MBPP 같은 기존 벤치마크는 정해진 저장소나 함수 단위 문제에 초점을 맞추기 때문에, 모델이 비어 있는 디렉터리에서 시작해 완전히 새로운 프로그램을 설계하고 구현하는 능력은 측정하지 못합니다.
ProgramBench는 Meta(facebookresearch)가 공개한 새로운 벤치마크로, 이 공백을 메우기 위해 설계되었습니다. 평가 시 에이전트는 오로지 컴파일된 참조 바이너리(Reference Executable)와 그에 대한 사람 작성 문서만 제공받고, 그 동작을 동일하게 재현하는 코드베이스를 처음부터 작성해야 합니다. 즉, 함수 시그니처도, 파일 구조도, 라이브러리 선택도 사전에 정해주지 않습니다. 평가는 정해진 단위 테스트 통과 여부가 아니라, 에이전트 기반 퍼징(Fuzzing)으로 자동 생성되는 200개 과제, 수만 개의 행동 일치(End-to-End Behavioral) 테스트로 진행됩니다.
평가 대상 프로그램의 스펙트럼도 매우 넓습니다. 작은 CLI 도구부터 시작해 FFmpeg, SQLite, PHP 인터프리터처럼 광범위하게 사용되는 실세계 소프트웨어까지 200개 과제가 포함되며, 동일 과제를 9개의 LLM에 대해 측정한 결과 어떤 모델도 어떤 과제 하나조차 완전히 풀지 못했고, 가장 좋은 모델조차 전체 과제 중 단 3% 만이 95% 테스트를 통과한 수준에 그쳤다고 보고되어 있습니다. 또한 모델들은 모듈 분할이 거의 없는 단일 파일(Monolithic) 구현을 선호하는 경향이 강해, 사람이 작성한 코드와 구조적으로 크게 차이 나는 양상을 보입니다. 이는 LM 기반 SWE 에이전트의 실제 한계와 향후 개선 방향을 정량적으로 보여주는 중요한 증거입니다.
ProgramBench가 측정하려는 능력
ProgramBench는 함수 단위 코딩 능력이 아니라, 다음과 같은 프로젝트 단위 능력을 통합적으로 측정합니다.
고수준 아키텍처 설계 : 어떤 모듈로 코드를 분리하고, 어떤 데이터 구조와 알고리즘을 선택할 것인지에 대한 결정을 모델이 직접 내려야 합니다. 사용 라이브러리 후보도 고정되지 않으며, 모델이 표준 라이브러리만 사용할지 의존성을 추가할지를 스스로 결정합니다.
문서 해석 능력 : 평가에는 참조 바이너리에 더해 사람이 작성한 문서가 함께 제공됩니다. 모델은 이 문서로부터 입력 형식, 옵션, 에러 처리, 부수 효과(Side Effect)를 정확히 추출하여 동일한 동작을 구현해야 합니다. 모호한 부분은 바이너리를 직접 호출해 동작을 관찰함으로써 해결할 수도 있습니다.
행동 일치(Behavioral Equivalence) : 평가 메트릭은 코드 일치도가 아니라 동작 일치도입니다. 즉, 구현 방식은 자유이지만, 동일한 입력에 대해 동일한 출력을 생성해야 점수가 인정됩니다. 이를 위해 ProgramBench는 에이전트 기반 퍼징을 활용해 입력을 자동 생성하고, 참조 바이너리의 출력을 정답으로 사용합니다. 이 접근은 사람이 사전에 모든 단위 테스트를 작성할 필요를 없애 주며, 동시에 모델의 구현이 어떤 구조를 띠어도 평가가 가능하게 만듭니다.
대규모 컨텍스트 운용 : SQLite, FFmpeg, PHP 인터프리터처럼 거대한 프로그램을 재구축하려면 수십~수백 개의 파일을 일관성 있게 관리해야 하며, 컨텍스트 윈도우(Context Window)와 장기 의존성(Long-Range Dependency)을 효율적으로 다루는 설계가 필요합니다. ProgramBench의 작은 과제와 큰 과제 사이의 성능 격차는 모델의 컨텍스트 운용 능력 차이를 드러냅니다.
ProgramBench의 평가 구조
평가 자체는 단순한 함수 호출 비교가 아니라, 참조 바이너리와 후보 구현체를 동시에 실행하며 비교하는 행동 비교 형태입니다. 흐름을 단순화하면 다음과 같이 정리할 수 있습니다.
참조 바이너리 + 문서 ──► SWE 에이전트 (LM) ──► 후보 구현(소스 코드 트리)
│ │
│ (퍼징으로 자동 생성된 입력) │
▼ ▼
참조 출력 ──────── 비교(behavioral test) ──────── 후보 출력
│
▼
과제별 통과율(%)
여기서 핵심은 두 가지입니다. 첫째, 입력은 ProgramBench가 직접 만드는 것이 아니라, 별도의 퍼징 에이전트가 모델 후보별로 동적으로 만들어 행동의 가장자리(Edge)를 탐색합니다. 둘째, 평가가 구현 구조에 대한 가정 없이 진행되기 때문에, 동일한 동작을 다른 알고리즘이나 라이브러리로 구현해도 점수에 불이익이 없습니다. 이 덕분에 모델이 더 자유롭게 자기 방식대로 설계를 표현할 수 있고, 동시에 과제별 통과율은 의미 있는 비교 지표가 됩니다.
ProgramBench 사용 방법
ProgramBench는 파이썬 패키지(programbench)와 CLI를 함께 제공합니다. 가장 권장되는 설치 방식은 uv를 활용하는 것이며, pip으로도 동일하게 설치할 수 있습니다.
# 설치 없이 바로 실행
uvx programbench --help
# 프로젝트에 의존성으로 추가
uv pip install programbench
# 일반적인 pip 설치
pip install programbench
저장소를 직접 클론해 개발 모드로 설치할 수도 있습니다.
git clone https://github.com/facebookresearch/programbench.git
cd programbench
uv sync # editable + dev 의존성 설치
평가에 필요한 데이터셋은 Hugging Face의 programbench/ProgramBench-Tests에서 받을 수 있고, 리더보드는 공식 홈페이지(programbench.com)에서 확인할 수 있습니다. 자세한 사용 방법과 에이전트 통합 가이드는 저장소 내 docs/README.md에 정리되어 있습니다.
ProgramBench 인용
연구나 벤치마크 비교에 ProgramBench를 사용한다면, 다음 BibTeX 항목을 인용하면 됩니다.
@misc{yang2026programbenchlanguagemodelsrebuild,
title={ProgramBench: Can Language Models Rebuild Programs From Scratch?},
author={John Yang and Kilian Lieret and Jeffrey Ma and Parth Thakkar
and Dmitrii Pedchenko and Sten Sootla and Emily McMilin
and Pengcheng Yin and Rui Hou and Gabriel Synnaeve
and Diyi Yang and Ofir Press},
year={2026},
eprint={2605.03546},
archivePrefix={arXiv},
primaryClass={cs.SE},
url={https://arxiv.org/abs/2605.03546},
}
라이선스
ProgramBench는 MIT 라이선스로 공개되어 있어 개인 및 상업적 목적으로 자유롭게 사용·수정·배포할 수 있습니다. 평가 데이터셋(ProgramBench-Tests)은 Hugging Face에서 별도 다운로드되며, 리더보드 제출 정책은 공식 홈페이지에서 확인하는 편이 좋습니다.
ProgramBench 공식 홈페이지
ProgramBench 논문 (arXiv 2605.03546)
ProgramBench 평가 데이터셋
ProgramBench GitHub 저장소
더 읽어보기
-
mini SWE-Agent: 100줄로 구현한 GitHub 이슈 해결을 위한 AI 코딩 에이전트 (feat. SWE-Agent)
-
Cairn: GitHub 저장소와 연동하는 오픈소스 S/W 엔지니어링 자동화 에이전트(End-to-End SWE Agent)
-
Devika: AI 소프트웨어 엔지니어 에이전트 (Agentic AI Software Engineer 👩💻)
-
Agentic Harness Engineering(AHE): 관측 가능성 기반 코딩 에이전트 하네스의 자동 진화 프레임워크에 대한 연구
이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. ![]()
파이토치 한국 사용자 모임
이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일
로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)
아래
쪽에 좋아요
를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ ![]()
