이 기능의 역할
SWE-bench는 언어 모델이 실제 저장소에서 실제 버그를 수정할 수 있는지 테스트합니다. 각 작업은 패치를 적용하고 테스트 스위트를 실행한 후 수정이 작동하는지 확인합니다. 도커로 SWE-bench를 로컬에서 실행할 수 있지만, 머신의 리소스가 제한됩니다. CoreWeave 샌드박스를 사용하면 CoreWeave infrastructure에서 평가를 대규모로 실행할 수 있습니다. 직접 관리하지 않고도 수십 또는 수백 개의 샌드박스를 동시에 시작할 수 있습니다. 스크립트는 GHCR의 Epoch AI 레지스트리에서 사전 구축된 이미지를 가져오므로 로컬 도커 구축 단계가 필요 없습니다.설정
평가를 실행하기 전에 다음 단계에 따라 필요한 도구를 설치하고 인증을 설정하세요.-
Python SDK와 평가 의존성을 설치하세요:
-
예시 평가 스크립트가 포함된 저장소를 복제하세요:
-
CWSANDBOX_API_KEY를 CoreWeave API 액세스 토큰으로 설정하세요.[API-ACCESS-TOKEN]을 본인의 토큰으로 바꾸세요:
auth 값을 examples/swebench/run_evaluation.py의 SandboxDefaults(...)에 전달하세요.
빠른 시작
확장하기 전에 단일 인스턴스 run으로 시작하여 환경, 인증 정보 및 GHCR에 대한 네트워크 액세스가 모두 작동하는지 확인하세요.gold 옵션은 데이터셋의 알려진 올바른 수정을 사용합니다:
병렬 실행
여러 인스턴스를 동시에 실행하세요:모델 예측 평가
맞춤형 모델 출력을 테스트하려면:옵션
리소스 조정
기본값은 샌드박스당 CPU 2개와 메모리 4Gi입니다.run_evaluation.py에서 이를 변경하세요:
작동 방식
이 섹션에서는 스크립트의 동작 원리를 설명하므로, 사용자가 자신의 평가 워크플로에 맞게 조정할 수 있습니다.Container images
Epoch AI는 GHCR에 사전 구축된 이미지를 호스팅합니다. 각 인스턴스에는 올바른 커밋에서 체크아웃된 저장소, 설치된 의존성, 준비된 테스트 환경이 포함된 자체 이미지가 있습니다. 이미지 형식:ghcr.io/epoch-research/swe-bench.eval.x86_64.{instance_id}:latest
샌드박스는 GHCR에서 직접 이를 가져옵니다. 로컬 구축은 필요하지 않습니다.
평가 flow
각 인스턴스는 다음 단계를 거칩니다:
단계 2~5와 8은 원격으로 실행됩니다. 단계 1, 6, 7은 사용자 머신에서 실행됩니다.
병렬 실행
스크립트는ThreadPoolExecutor를 사용하여 인스턴스 워크플로를 동시에 실행합니다. 각 스레드는 하나의 인스턴스를 워크플로를 통해 구동합니다. 한 인스턴스가 테스트하는 동안, 다른 인스턴스는 패치를 적용할 수 있고, 또 다른 인스턴스는 로컬에서 평가하고, 또 다른 인스턴스는 시작할 수 있습니다. 이러한 중첩이 속도의 원천입니다.
워크플로가 as_completed()를 통해 종료하면 결과가 반환됩니다.
정리
이 스크립트는 샌드박스Session을 사용해 샌드박스를 추적합니다. 세션이 종료되면(정상 종료, 예외 발생 또는 Ctrl+C) 세션이 모든 샌드박스를 정리합니다.
출력
결과는{output-dir}/{run-id}/{model-name}/{instance-id}/에 저장됩니다:
보고서 형식
문제 해결
패치 적용 실패
로그에APPLY_PATCH_FAIL이 표시되면 패치 형식이 잘못되었거나, 잘못된 커밋을 대상으로 하거나, whitespace 문제가 있을 수 있습니다. 로컬에서 git apply --check를 실행하여 문제를 확인하세요. 인스턴스 ID가 예측과 일치하는지 확인하세요.
테스트 timeout
일부 테스트 스위트는 30분 이상 걸립니다. 모델이 생성한 코드에 무한 루프가 있을 수도 있습니다. 필요한 경우--timeout을 늘리거나 테스트 출력을 확인하여 어디에서 멈췄는지 파악하세요.
이미지 가져오기 오류
이미지 가져오기 오류로 컨테이너가 시작되지 않으면 인스턴스 ID가 Epoch AI의 레지스트리에 없거나 네트워크 문제로ghcr.io에 연결할 수 없는 것입니다. 인스턴스 ID가 SWE-bench 데이터셋에 있는지 확인하세요.