SWE-bench

SWE-bench

SWE-bench는 GitHub에서 수집한 실제 세계의 소프트웨어 이슈를 바탕으로, 대규모 언어 모델(LLM)이 얼마나 실제 코드 문제를 해결할 수 있는지 평가하는 벤치마크예요. 코드베이스와 이슈를 주고, 모델이 그 문제를 해결하는 패치(patch)를 생성하도록 평가해요. 프린스턴 대학 연구팀이 만들었고, ICLR 2024에서 oral 발표로 채택된 대표적인 SWE(Software Engineering) 에이전트 평가 지표랍니다.

출처: 문서

본문

SWE-bench이란

SWE-bench는 GitHub에서 수집한 실제 소프트웨어 이슈로 대규모 언어 모델을 평가하는 벤치마크예요. 코드베이스와 이슈를 주면 모델이 해당 문제를 해결하는 패치(patch)를 생성해야 해요. 이 방식은 단순한 질의응답이나 코드 생성이 아니라, 실제 저장소의 맥락을 이해하고 버그나 기능 요청을 해결하는 실제 소프트웨어 엔지니어링 작업을 측정한다는 점이 특징이에요.

관련 발표 논문은 다음과 같아요.

  • [ICLR 2025] SWE-bench Multimodal: Do AI Systems Generalize to Visual Software Domains?
  • [ICLR 2024 Oral] SWE-bench: Can Language Models Resolve Real-World GitHub Issues?

Task instance와 평가 방식

SWE-bench에서 각 평가 단위는 코드베이스(코드베이스)와 이슈(issue) 쌍으로 구성돼요. 모델은 주어진 이슈를 해결하는 패치를 생성하고, 이 패치가 실제로 숨겨진 테스트(tests)를 통과하는지로 성능을 판단해요. 평가는 Docker 기반의 재현 가능한 환경에서 수행돼요.

대표적인 데이터셋 분류로는 전체(full), Verified(소프트웨어 엔지니어가 실제로 풀 수 있다고 확인한 500개 문제의 부분집합), Multimodal, Multilingual 등이 있어요.

데이터셋 접근하기

SWE-bench에 접근하려면 다음 코드를 실행하면 돼요.

from datasets import load_dataset
swebench = load_dataset('princeton-nlp/SWE-bench', split='test')

설치하기

SWE-bench는 재현 가능한 평가를 위해 Docker를 사용해요. Docker 설정 가이드를 따라 Docker를 먼저 설치하고, 소스에서 직접 빌드하려면 다음 단계를 따라요.

git clone [email protected]:SWE-bench/SWE-bench.git
cd SWE-bench
pip install -e .

# Required for local image builds with the v5 CLI. This path is only an example.
git clone --depth 1 https://github.com/SWE-bench/swe-bench-tasks.git ./swe-bench-tasks
swebench dataset check ./swe-bench-tasks

설치가 잘 됐는지 확인하려면 다음을 실행해요.

swebench eval verified --gold \
    -i sympy__sympy-20590 \
    --run-id validate-gold \
    --task-repo ./swe-bench-tasks

사용 예시: 평가 실행하기

패치 예측값을 평가하는 기본 명령은 다음과 같아요.

swebench eval verified -p <path_to_predictions> --run-id <run_id> -j <num_workers>

DATASET 인자는 별칭(full, verified, multimodal, multilingual), HuggingFace id, 또는 로컬 경로를 받아요. 그 외의 값은 그대로 전달되므로 SWE-bench/SWE-bench_Lite도 사용할 수 있어요.

swebench eval verified --gold                 # reference patches
swebench eval multimodal --gold -i carbon-design-system__carbon-10188
swebench report <run_id> -d verified          # re-grade saved logs, no containers

기타 명령어도 있어요.

swebench infer verified -m gpt-5 -o preds -w 8        # generate predictions with mini-SWE-agent
swebench images build verified -j 8           # build/pull images ahead of time
swebench images check multilingual            # verify images exist on the registry
swebench images clean --run-id <run_id>       # remove leftover containers
swebench submit hf <run_id> -b <user/bucket>      # publish results to an HF bucket
swebench --help                               # all commands

이 명령은 현재 디렉토리에 도커 빌드 로그(logs/build_images)와 평가 로그(logs/evaluation)를 만들고, 실행 결과 요약은 logs/evaluation/<run_id>/results.json에 저장돼요.

결과 캐싱 주의: 평가 하네스는 run_idinstance_id 기준으로 결과를 캐시해요. 같은 인스턴스를 같은 run_id로 다시 실행하면, 예측 diff가 달라도 처음 실행한 캐시를 재사용하므로 재평가되지 않아요. 다른 diff로 재평가하려면 다른 run_id를 써야 해요.

리소스 주의: SWE-bench 평가는 리소스를 많이 써요. x86_64 머신에 최소 120GB의 여유 저장 공간, 16GB RAM, 8 CPU 코어를 권장하고, --max_workersmin(0.75 * os.cpu_count(), 24)보다 작게 쓰는 걸 추천해요. Docker Desktop을 쓴다면 가상 디스크 공간을 약 120GB로 늘려야 해요. arm64 머신 지원은 실험 단계예요.

평가 하네스의 전체 인자 목록은 다음으로 확인할 수 있어요.

swebench eval --help

SWE-bench는 평가 외에도 직접 모델을 학습하거나(HF 데이터셋 기반 학습), 기존 모델로 추론을 돌리거나, 자체 저장소에 대해 데이터 수집 절차를 돌려 새로운 SWE-bench task를 만드는 것도 가능해요.

더 알아보기 (Learn more)