scaleapi/SWE-bench_Pro-os
요약
SWE-bench Pro는 LLM 및 에이전트가 장기적인 소프트웨어 엔지니어링 과제를 수행할 수 있는지 평가하는 고난도 벤치마크입니다. 모델은 주어진 코드베이스와 이슈를 바탕으로 문제를 해결하는 패치를 생성해야 하며, 재현 가능한 평가를 위해 Docker 환경을 지원합니다.
핵심 포인트
- LLM/에이전트의 소프트웨어 엔지니어링 능력 평가를 위한 벤치마크 제공
- HuggingFace를 통해 데이터셋 접근 및 Docker를 이용한 재현 가능한 평가 환경 지원
- Sonnet 4.5의 성능 재현을 위한 mini-swe-agent 및 스캐폴드 가이드 포함
- 공개 및 상업용(비공개) 리더보드를 통한 모델 성능 비교 가능
다음 작업들을 위한 코드 및 데이터:
HuggingFace: https://huggingface.co/datasets/ScaleAI/SWE-bench_Pro
Public Leaderboard (공개 리더보드): https://scale.com/leaderboard/swe_bench_pro_public
Commercial (Private) Leaderboard (상업용 (비공개) 리더보드): https://labs.scale.com/leaderboard/swe_bench_pro_private
(05/18) 리더보드에서 몇 가지 문제를 발견하였으며, 현재 이를 해결하기 위해 작업 중입니다.
(2/9) 오래된(예: 2025년이 필요했던) 유닛 테스트(unit tests) 또는 이전에 포함될 의도가 없었던 일부 유닛 테스트를 제거했습니다.
(1/7) tutao 인스턴스의 평가(eval) 시간이 오래 걸리는 문제를 수정했습니다. 관련 실행 스크립트가 업데이트되었습니다.
(10/28) mini-swe-agent를 추가했습니다! Sonnet 4.5의 경우 SWE-Agent와 유사한 결과를 보입니다. 자유롭게 시도해 보세요. (credit @miguelrc-scale)
(10/28) 결과를 재현하기 위한 SWE-Agent 스캐폴드(scaffold)와 아래의 단계별 가이드를 제공합니다. Sonnet 4.5의 결과를 재현함을 확인했습니다. (credit @18vijayb)
(10/3) 제한(cap limit) 없는 업데이트된 결과를 여기에 게시했습니다: https://scaleapi.github.io/SWE-bench_Pro-os/
SWE-Bench Pro는 장기적인 소프트웨어 엔지니어링 태스크(long-horizon software engineering tasks)에서 LLM/에이전트(Agents)를 평가하는 도전적인 벤치마크(benchmark)입니다.
특정 코드베이스(codebase)와 이슈(issue)가 주어지면, 언어 모델은 설명된 문제를 해결하는 패치(patch)를 생성하는 과제를 수행합니다.
이 데이터셋은 SWE-Bench에서 영감을 받았습니다: https://github.com/SWE-bench/SWE-bench
SWE-bench Pro에 접근하려면 다음 코드를 복사하여 실행하세요:
from datasets import load_dataset
swebench = load_dataset('ScaleAI/SWE-bench_Pro', split='test')
pip install -r requirements.txt
SWE-bench Pro는 재현 가능한 평가를 위해 Docker를 사용합니다.
Docker 설치 가이드의 지침에 따라 기기에 Docker를 설치하십시오. Linux에서 설정하는 경우, 설치 후 단계(post-installation steps)도 확인하는 것을 권장합니다.
modal setup # 프롬프트에 따라 토큰을 생성하세요
실행 후, ~/.modal.toml에서 자격 증명을 확인하십시오.
token_id = <token id>
token_secret = <token secret>
active = true
Beta: 로컬 Docker (Local Docker). 추가 설정이 필요하지 않습니다. 평가 (evaluations)를 실행할 때 --use_local_docker 플래그를 사용하십시오.
Docker Hub에 각 인스턴스별로 미리 빌드된 Docker 이미지 (Docker images)를 제공합니다:
Repository: https://hub.docker.com/r/jefzda/sweap-images
HuggingFace 데이터셋의 각 인스턴스에는 해당 인스턴스의 Docker 태그 (Docker tag)를 포함하는 dockerhub_tag 컬럼이 있습니다. 다음과 같이 직접 접근할 수 있습니다:
from datasets import load_dataset
dataset = load_dataset('ScaleAI/SWE-bench_Pro', split='test')
# 특정 인스턴스에 대한 Docker 이미지 가져오기
...
중요: 저희 이미지에서는 Bash가 기본적으로 실행됩니다. 이 이미지들을 실행할 때, 수동으로 bash를 호출해서는 안 됩니다. #6을 참조하십시오.
원하는 하네스 (harness)를 사용하여 패치 예측 (patch predictions)을 생성하십시오.
SWE-agent를 사용하여 패치를 생성하려면 SWE-agent git 서브모듈 (submodule)을 참조하십시오 (참고: 이를 git 서브모듈로 사용해야 합니다. 자세한 내용은 공식 git 문서를 참조하십시오). 서브모듈에는 다음 사항에 대한 상세 지침이 포함되어 있습니다:
- 패치 생성을 위한 SWE-agent 설정
- SWE-Bench Pro 인스턴스에서 SWE-agent 실행
- 모델 파라미터 (model parameters) 및 턴 제한 (turn limits) 구성
출력물은 각 인스턴스에 대해 모델이 생성한 패치를 포함하는 .pred 파일이 됩니다.
패치를 생성한 후에는 gather_patches.py 헬퍼 스크립트 (helper script)를 사용하여 모든 패치를 평가를 위한 단일 JSON 파일로 수집하십시오:
python helper_code/gather_patches.py \
--directory <path_to_pred_files> \
--prefix <model_name> \
...
Parameters (매개변수):
--directory : .pred 파일이 포함된 인스턴스 폴더가 있는 디렉토리 (예: SWE-agent 출력물 또는 다운로드된 궤적 (trajectories)에서 가져온 폴더)
--prefix : 모델/실행에 대한 접두사 식별자 (예: "gpt4", "claude-sonnet", "sample1")
--output : 출력 JSON 파일 경로
Example (예시):
python helper_code/gather_patches.py \
--directory swe_bench_pro_results/sample1 \
--prefix sample1 \
...
이렇게 하면 평가 스크립트에서 기대하는 형식의 JSON 파일이 생성됩니다:
[
{
"instance_id": "instance_...",
...
SWE-Bench Pro에서 패치 예측값(patch predictions)을 평가합니다:
python swe_bench_pro_eval.py \
--raw_sample_path=swe_bench_pro_full.csv \
--patch_path=<your_patches>.json \
...
HuggingFace 데이터셋에 있는 골드 패치(gold patches)로 테스트할 수 있습니다. helper_code 디렉토리에 골드 패치를 필요한 JSON 형식으로 추출할 수 있는 헬퍼 스크립트(helper script)가 포함되어 있습니다.
리더보드(leaderboard) 결과를 엔드 투 엔드(end-to-end)로 재현하려면 다음 단계를 따르세요:
SWE-agent서브모듈(submodule)의 설정을 완료합니다.just를 통해 스캐폴드(scaffold)를 실행할 수 있는 Docker 이미지를 사용하는 것을 권장합니다.- 스캐폴드를 실행합니다. Claude Sonnet 4.5용 예시(claude.yaml)를 포함해 두었으나, 원하는 모델을 자유롭게 사용할 수 있습니다. 로컬 모델을 위한
vllm도 지원합니다. Docker 이미지를 처음부터 빌드하기보다는 DockerHub 이미지를 사용하는 것을 권장합니다. Modal 없이 로컬에서 실행할 수도 있습니다. helper_code/gather_patches.py를 사용하여 예측값을 컴파일(Compile)합니다.- 평가 스크립트인
swe_bench_pro_eval.py를 실행하여 평가를 수행합니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub AI Coding Assistants의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기