SWE-bench 점수가 1.96%에서 72.7%로 상승했습니다. 그 사이에 벤치마크가 수정되었습니다.
요약
SWE-bench 벤치마크의 점수가 1.96%에서 72.7%로 급등한 배경에는 벤치마크 데이터셋의 수정이 있었음을 분석합니다. 기존의 가공되지 않은 데이터 대신 인간이 검증한 'SWE-bench Verified' 하위 집합을 사용하면서 발생한 지표의 왜곡을 다룹니다.
핵심 포인트
- SWE-bench 점수 급등은 모델 성능 향상과 벤치마크 수정이 결합된 결과임
- SWE-bench Verified는 품질 검증을 거친 500개의 하위 집합을 사용함
- 동일한 이름의 벤치마크라도 측정 대상(모집단)이 바뀌면 직접 비교가 불가능함
- 벤치마크 수정은 데이터 품질을 높이지만 지표 해석 시 주의가 필요함
2023년 10월, Princeton의 한 팀이 SWE-bench라는 벤치마크를 발표했습니다. 이는 12개의 인기 있는 Python 저장소(repositories)에서 추출한 실제 GitHub 이슈(issues)와 그에 상응하는 풀 리퀘스트(pull requests)를 바탕으로 구성된 2,294개의 소프트웨어 엔지니어링(software engineering) 문제입니다. 해당 논문은 당시 최고의 모델이었던 Claude 2가 그중 1.96%를 해결했다고 보고했습니다. 19%가 아닙니다. 1.96%입니다.
2025년 5월, Anthropic은 SWE-bench Verified에서 72.7%의 점수를 기록한 Claude Sonnet 4를 발표했습니다.
유혹적인 문장이 저절로 떠오릅니다. 모델들이 19개월 만에 소프트웨어 엔지니어링 능력이 37배 향상되었다는 것입니다. 그리고 이 향상은 실재합니다. 현재의 코딩 에이전트(coding agent)를 버그에 투입해 본 사람이라면, 지금과 2023년의 차이가 통계적 노이즈가 아니라는 것을 알고 있습니다. 하지만 이 문장은 여전히 논리적으로 맞지 않습니다. 왜냐하면 문장 속의 두 숫자가 동일한 것을 측정한 값이 아니기 때문입니다. 1.96과 72.7 사이에는, 이 두 수치를 하나의 축에 그리는 모든 차트에서 누락된 어떤 일이 일어났습니다. 바로 벤치마크 자체가 수정된 것입니다.
이름 아래 도구가 바뀌었다
현재 거의 모든 헤드라인 점수가 사용하는 변형 버전인 SWE-bench Verified는 원래 테스트 세트에서 추출한 500개의 작업(tasks)으로 구성된 하위 집합이며, 품질을 위해 인간이 검증(human-validated)한 것입니다. 이러한 검증이 존재하는 이유는 원래의 2,294개 작업이 가공되지 않은 상태(from the wild)에서 수집되었기 때문이며, 가공되지 않은 작업에는 가공되지 않은 문제들이 따르기 때문입니다. 즉, 성공의 모습이 무엇인지 전혀 명시하지 않은 이슈 설명, 합리적인 패치(patch)가 생성할 수 없는 세부 사항을 확인하는 테스트, 제시된 방식으로는 사실상 해결 불가능한 작업 등이 포함되어 있었습니다. 이러한 것들을 걸러내는 것은 책임감 있는 행동이었습니다. 대답할 수 없는 질문들로 가득 찬 벤치마크는 엔지니어링이 아니라 인내심을 측정할 뿐입니다.
하지만 이 수정(repair)이 조용히 무엇을 해냈는지 주목하십시오. 검증된 500개 항목에서 72.7%의 점수를 기록한 모델은 1.96%를 만들어냈던 그 시험에 답하고 있는 것이 아닙니다. 그것은 품질 검토(quality review)를 거쳐 살아남은 시험의 하위 집합, 즉 높은 점수를 받는 것이 가능한 하위 집합에 답하고 있는 것입니다. 두 숫자 모두 SWE-bench라는 이름 아래 보고됩니다. 이름은 그대로 유지되지만, 지칭 대상(referent)이 변한 것입니다. 차트가 2023년부터 현재까지 선을 그을 때, 그 선은 자(ruler)가 교체된 지점을 통과하지만 차트는 이를 표시하지 않습니다.
이것은 비난이 아닙니다. 이 이야기에는 악당이 없으며, 바로 그 점이 이 이야기를 들려줄 가치가 있게 만듭니다. 벤치마크에 대한 비판은 보통 악의적인 행위자를 필요로 합니다. 오염된 학습 데이터 (contaminated training data), 리더보드(leaderboard)를 조작하는 팀들, 혹은 40번의 시도 중 가장 좋은 결과만을 선택하는 연구소 같은 것들 말입니다. 이 모든 것은 실제로 존재하며 다른 곳에서도 문서화되어 있습니다. 하지만 이번 실패는 그중 어느 것도 필요로 하지 않습니다. 모든 당사자가 선의로 행동할 수 있고, 수정 사항이 진정으로 올바를 수 있으며, 그럼에도 불구하고 그 숫자는 사람들이 그로부터 도출하는 결론의 근거가 될 자격을 상실합니다. 왜냐하면 그 결론은 어떤 대상을 더 이상 존재하지 않는 대상과 비교하고 있기 때문입니다.
모집단이 시험을 학습했다
두 번째 표류(drift)는 더 느리게 진행되며 별도의 공지 페이지도 없습니다. 2023년에는 SWE-bench를 염두에 두고 구축된 시스템이 없었으며, 이것이 최고 점수가 1.96%였던 큰 이유 중 하나입니다. 벤치마크는 아무도 목표로 하지 않았던 능력을 샘플링했습니다. 바로 그 점이 이것을 증거로 만들었습니다. 모집단이 자신이 샘플링되고 있다는 사실을 모를 때, 샘플은 모집단에 대해 알려줍니다.
2025년까지 SWE-bench는 산업계의 점수판이 될 것입니다. 에이전트 스캐폴드 (Agent scaffolds)는 이 형태에 맞춰 설계됩니다: Python 저장소, 연결된 풀 리퀘스트 (pull requests)가 포함된 이슈, 그리고 저장소 자체의 테스트를 통과함으로써 정의되는 성공. Anthropic의 자체 발표는 설정(configuration)에 대해 감탄스러울 정도로 정밀합니다. bash 도구와 파일 에디터를 사용하여 달성한 72.7%와, 병렬 시도 (parallel attempts) 및 최적의 후보를 선택하는 스코어러 (scorer)를 사용하여 달성한 80.2%를 구분하고 있습니다. 그 정밀함이 바로 핵심을 드러냅니다. 점수를 해석하기 위해 한 단락의 방법론이 필요하다면, 그 점수는 공학적 목표 (engineering target)가 된 것이며, 목표에 대한 개선은 샘플에 대한 개선과는 다른 사실입니다.
측정된 슬라이스 (slice)에서의 개선은 여전히 개선입니다. 허가되지 않은 단계는 그 슬라이스에서 현장 (field)으로의 추론입니다. "테스트로 검증 가능한 수정 사항으로 검증된 Python 이슈의 72.7%를 해결함"과 "소프트웨어 엔지니어링을 할 수 있음"은 매우 다른 규모의 주장이며, 벤치마크의 이름은 누구의 승인도 없이 첫 번째에서 두 번째로의 홍보를 수행합니다.
벤치마크 수치를 믿기 전 세 가지 질문
이 에세이의 실용적인 버전은 인덱스 카드 한 장에 들어갈 정도입니다. 모델이 더 좋아졌다고 주장하는 수치가 나타나면, 다음과 같이 질문하십시오:
어떤 버전인가? 오리지널 (Original), Lite, Verified, 멀티모달 (Multimodal), 아니면 연구소의 내부 포크 (internal fork)인가? 버전 간의 점수는 이름만 공유할 뿐 그 외에는 아무것도 공유하지 않습니다. 버전이 명시되지 않았다면, 그 수치는 아직 정보가 아닙니다.
무엇이, 왜 필터링되었는가? 모든 수정에는 근거가 있으며, 그 근거는 새로운 수치가 더 이상 무엇을 볼 수 없는지를 알려줍니다. 잘 정의된 작업 (well-specified tasks)을 위해 검증된 세트는 더 이상 불충분하게 정의된 작업 (under-specified tasks)에 대한 성능을 측정하지 못하며, 불충분하게 정의된 것이야말로 대부분의 실제 작업입니다.
시스템이 이 벤치마크를 루프 (loop)에 포함하여 구축되었는가? 훈련 오염 (training contamination)에 대한 함정이 아니라 구조적으로 묻는 것입니다. 만약 스캐폴드 (scaffold)가 이 점수판에 맞춰 튜닝되었다면, 그 점수는 시스템과 측정 도구 사이의 적합도 (fit)를 측정하는 것입니다. 적합도는 알 가치가 있습니다. 다만 그것이 능력 (capability)과 동일한 사실은 아닐 뿐입니다.
이 질문들 중 그 어느 것도 누군가를 비난하는 것이 아닙니다. 이것은 두 번이나 재교정(recalibrated)되고, 측정 대상인 라디에이터에 테이프로 붙여진 온도계에 대해 던질 법한 질문들입니다. 즉, "누가 거짓말을 했는가"가 아니라, "이 기기가 이제 무엇을 측정하고 있는가, 그리고 그것이 내가 관심을 두는 대상인가?"라는 질문입니다.
이야기 속에서 가장 정직한 숫자
1.96%가 SWE-bench가 만들어낸 역대 최고의 측정치였다는 주장도 가능합니다. 그 수치는 수정(repair)이 이루어지기 전, 타겟팅(targeting)이 이루어지기 전, 벤치마크의 이름이 가치를 갖기 전, 그리고 아무도 그에 맞춰 최적화(optimized)하지 않은 기기에서 측정된 것이었습니다. 그것은 보이는 그대로를 정확히 측정했습니다. 즉, 2023년의 최첨단 (state-of-the-art) 모델들이 세상에서 샘플링된 필터링되지 않은 작업에 직면했을 때 대부분 실패했다는 사실을 말입니다. 그 이후의 모든 수치는 더 나은 모델이, 더 잘 이해된 시험을 치러서 만들어진 결과이며, 그 시험 또한 점점 더 '좋은' 시험이 되어가고 있습니다. 이 세 가지 요소의 비중은 점수만으로는 분리해낼 수 없습니다.
벤치마크 점수는 벤치마크가 무언가의 표본 (sample)인 동안에만 세상에 대한 증거가 됩니다. 그것을 수정하면 표본이 변합니다. 그것을 타겟팅하면 그것은 더 이상 표본이 아니게 됩니다. 어떤 경우든 점수는 계속해서 산출됩니다. 점수판의 역할은 숫자를 만들어내는 것이며, 숫자가 조용히 그 대상을 바꾸고 난 뒤에도 점수판은 그 역할을 계속 수행할 것이기 때문입니다. 이름이 변하는 것은 가장 마지막에 일어나는 일입니다. 버전을 읽고, 필터 (filter)를 읽고, 루프 (loop)를 읽은 다음, 그 숫자가 무엇을 의미하도록 허용할지 결정하십시오.
출처 (Sources)
-
Carlos E. Jimenez, John Yang, Alexander Wettig, Shunyu Yao, Kexin Pei, Ofir Press, Karthik Narasimhan, "SWE-bench: Can Language Models Resolve Real-World GitHub Issues?", arXiv:2310.06770 (2023년 10월 제출). 2,294개의 태스크 (task) 수와 1.96% 수치의 출처이며, 초록 (abstract)에서 인용되었습니다.
-
SWE-bench Verified 데이터셋 카드, Hugging Face (princeton-nlp/SWE-bench_Verified): "품질을 위해 인간이 검증한 SWE-bench 테스트 세트의 500개 샘플 부분 집합 (subset)."
-
Anthropic, "Introducing Claude 4" (2025년 5월): bash 도구 (tool) 및 파일 에디터 (file editor)를 사용한 Claude Sonnet 4가 SWE-bench Verified에서 72.7%를 기록; 병렬 시도 (parallel attempts) 및 후보 선택 (candidate selection)을 포함한 고성능 컴퓨팅 (high-compute) 구성에서는 80.2%를 기록함.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기