한 줄 요약
SWE-smith는 소프트웨어 엔지니어링 에이전트 학습 데이터를 대규모로 생성하는 파이프라인으로, 128개 리포지토리에서 50,000개의 인스턴스를 생성해 기존 방식 대비 10배 규모 확장.
핵심 기여도
- SWE-smith 파이프라인을 제안해, 128개 GitHub 리포지토리에서 50,000개의 학습 인스턴스를 생성.
- 40.2% Pass@1 성능을 달성한 SWE-agent-LM-32B 모델을 개발.
- 100~1,000개의 테스트 실패 인스턴스를 자동 생성하는 기술 (LM rewrite, AST 수정, PR undo, bug 병합).
- 실행 환경 설정과 인스턴스 수집 과정을 자동화하여 수십 TB 저장소와 수백 시간의 인력 소요 문제를 해결.
핵심 아이디어
SWE-smith는 기존 학습 데이터 수집 방식에서 요구되는 수동 작업과 저장소 부담을 줄이기 위해, Python 코드베이스를 기반으로 실행 환경을 자동 생성하고, 테스트 실패를 유발하는 버그 인스턴스를 자동으로 합성하는 방식을 제안한다. 핵심 아이디어는 실행 기반 검증을 통해 해결 가능한 버그를 식별하고, 이를 학습 데이터로 활용하는 것이다. 이는 기존 SWE-bench의 인스턴스 수집 전략을 확장하면서도, PR 필터링과 수동 작업을 최소화하는 것이 핵심이다. SWE-smith는 LM을 활용한 함수 재작성, AST 수정, PR 복구, 버그 병합 등 4가지 기술을 결합해 인스턴스를 생성한다.
기술적 접근법
- **SWE-smith 파이프라인**: 주어진 Python 코드베이스에 대해 실행 환경을 자동 생성한 후, 100~1,000개의 테스트 실패 인스턴스를 자동 생성.
- **버그 생성 기술**:
- LM을 활용한 함수 재작성 (LM Rewrite)
- 추상 구문 트리(AST) 수정 (AST-based modification)
- PR 복구 (PR Undo)
- 버그 병합 (Bug Merging)
- **인스턴스 생성 후 처리**: Claude 3.7 Sonnet와 Qwen 2.5 Coder Instruct 32B를 사용해 5,016개의 전문가 트레젝토리 생성.
- **학습 데이터 필터링**: 최대 3번까지 반복되는 인스턴스만 포함, 총 5,016개의 트레젝토리로 최종 학습 데이터셋 구성.
주요 결과
- **SWE-bench Verified 벤치마크에서 40.2% Pass@1 성능 달성** (기존 오픈소스 모델 대비 +33.4% 개선).
- **128개 GitHub 리포지토리에서 50,000개의 인스턴스 생성**, 기존 방식 대비 10배 규모 확장.
- **5,016개의 전문가 트레젝토리 생성** (Claude 3.7 Sonnet와 Qwen 2.5 Coder Instruct 32B 사용).
- **SWE-bench Lite와 Multilingual 데이터셋에서도 성능 평가** (다국어 300개 인스턴스 포함).
의의 및 한계
SWE-smith는 소프트웨어 엔지니어링 에이전트 학습 데이터 생성의 주요 장벽인 수동 작업과 저장소 부담을 해결하며, 대규모 오픈소스 데이터셋을 생성할 수 있는 기반을 제공한다. 특히, 실행 기반 검증을 통해 생성된 인스턴스는 실제 문제 해결 능력을 평가할 수 있어, 기존 텍스트 기반 학습 데이터와 차별화된다. 그러나 SWE-smith는 Python 코드베이스에만 적용되며, 다른 언어나 복잡한 시스템에 대한 확장성은 명시되지 않았다. 또한, 생성된 인스턴스 중 일부는 반복적인 행동이나 로컬라이제이션 실패로 인해 해결되지 않으며, 이는 모델의 추론 능력을 제한하는 요인으로 작용할 수 있다.
실용적 활용
SWE-smith는 오픈소스 소프트웨어 엔지니어링 에이전트 연구를 촉진할 수 있는 도구로, 대규모 학습 데이터셋을 저비용으로 생성할 수 있다. 특히, 소프트웨어 자동화, 코드 생성, 버그 수정 등에 활용 가능하며, 연구자와 개발자들이 LM 기반 에이전트를 개선하는 데 기여할 수 있다. SWE-smith는 GitHub 리포지토리 기반의 코드베이스를 대상으로 하기 때문에, 오픈소스 프로젝트 개발자들이 모델 학습과 평가에 활용할 수 있다.