SWE-bench - Can Language Models Resolve Real-World GitHub Issues
5분 분량
Introduction
SWE-bench는 실제 GitHub 이슈-PR 쌍을 수집하여 LM의 소프트웨어 엔지니어링 능력을 평가하는 벤치마크
12개 인기 Python 저장소에서 2,294개 task instance 확보
기존 벤치마크(HumanEval, MBPP)의 한계: 독립적 소규모 코딩 문제 — 실제 개발 환경과 괴리
실행 기반 이중 검증: fail-to-pass + pass-to-pass 테스트로 기능적 정확성 측정
핵심 발견: 최고 모델(Claude 2)도 BM25 설정에서 **1.96%**만 해결
Related Papers
HumanEval, MBPP: 단일 함수 코드 생성 — 코드베이스 이해 불필요
CodeContests (Li et al.): 경쟁 프로그래밍 — 실제 SW 개발과 거리
SWE-agent (Yang et al., 2024): SWE-bench 기반 에이전트 — 이후 발전
차별점: (1) 실제 이슈-PR 쌍 기반, (2) fail-to-pass 이중 검증, (3) 자동 갱신 가능
Methods
벤치마크 구축 파이프라인
1단계: 저장소 선정
PyPI 상위 100개 중 12개 Python 저장소에서 ~90,000 PR 수집
2단계: 속성 기반 필터링
GitHub 이슈 연결 + 테스트 파일 변경 포함 + 병합된 PR만 선별
3단계: 실행 기반 필터링
최소 1개 fail-to-pass 테스트 존재하는 인스턴스만 최종 포함
평가 설정
BM25 검색: 비-오라클 설정 (실제적)
Oracle 검색: 정답 파일 직접 제공 (상한 측정)
모델은 Unix diff 패치 생성 → 테스트 실행으로 검증
방법론 다이어그램
graph TD
A[GitHub 상위 Python 저장소<br/>12개 선정] --> B[PR 수집 ~90,000개]
B --> C{속성 기반 필터링}
C -->|이슈 연결 + 테스트 변경| D[후보 PR 선별]
D --> E{실행 기반 필터링}
E -->|fail-to-pass 존재| F[Task Instance 2,294개]
F --> G[모델: 코드베이스 + 이슈 → 패치 생성]
G --> H{테스트 실행}
H -->|fail-to-pass 통과<br/>+ pass-to-pass 유지| I[Resolved]
H -->|실패| J[Unresolved]
style I fill:#2d8a4e,color:#fff
style J fill:#c0392b,color:#fff
Results
평가 모델: Claude 2, GPT-4, ChatGPT-3.5, SWE-Llama 7b/13b
데이터셋: SWE-bench 2,294 인스턴스
핵심 발견: 최선 모델도 극히 낮은 해결률 — 코드 검색이 핵심 병목
실험 결과 상세
Model
Setting
% Resolved
Claude 2
BM25 13k
1.96%
GPT-4
BM25 13k
0.00%
SWE-Llama 13b
BM25 13k
0.70%
Claude 2
Oracle
4.80%
GPT-4
Oracle
1.74%
SWE-Llama 13b
Oracle
4.00%
Claude 2
Oracle-Collapsed
5.90%
BM25 검색 재현율
Context Limit
Recall
13k tokens
29.58%
27k tokens
44.41%
50k tokens
51.06%
Discussion
코드 검색이 핵심 병목: Oracle vs BM25 격차 큼 (Claude 2: 4.8% vs 1.96%)
컨텍스트 증가 역설: 더 많은 컨텍스트 → 검색 재현율 ↑ but 모델 성능 ↓
한계: 12개 Python 저장소 한정, 다국어/엔터프라이즈 코드 대표성 낮음
이후 영향: SWE-agent, Devin, SWE-bench Verified 등의 표준 평가 플랫폼이 됨
Insights
주목할 점: 실제 SW 개발 사이클(이슈 → 코드 수정 → 테스트) 재현. fail-to-pass 이중 검증은 PR 리뷰 기준과 동등
연결 고리: SWE-agent, Devin 등 에이전트 기반 코딩 연구의 촉발점. 자동화 이슈-PR 수집 파이프라인으로 지속적 갱신 가능 → 오염 문제 완화
시사점: “LM의 한계”인가 “검색/컨텍스트 관리의 한계”인가 — 에이전트 루프로 개선 가능
비판적 코멘트: 이슈 설명 질(quality) 차이로 코드 이해 vs 지시 이해 분리 어려움
Discussion Points
논쟁점: 벤치마크 결과가 “LM은 실제 SW에 한참 못 미친다”의 근거로 사용되나, Oracle 설정에서는 훨씬 높은 성능 → 근본 한계 vs 검색 한계 논쟁
검증 필요 가정: fail-to-pass 테스트가 이슈 핵심을 포착한다는 가정 — 테스트 잘 작성된 “쉬운 이슈”로 편향 가능
후속 연구: (1) 에이전트 루프(SWE-agent) 해결률 상승 정량화, (2) 다국어 확장, (3) 자기진화 코딩 에이전트 평가 프레임워크 발전