소프트웨어 개발에 인공지능을 접목하려는 시도가 늘어나고 있습니다. 하지만 문제는 데이터입니다. 좋은 모델을 만들려면 그에 걸맞는 고품질 학습 데이터가 필요하지만, 소프트웨어 엔지니어링(Software Engineering, 이하 SE) 분야에서는 이 데이터 자체를 만들기가 어렵습니다.
기존 SWE-bench 같은 데이터셋은 수작업으로 수천 개의 인스턴스를 만들며, 실행 환경 유지만 해도 수 테라바이트의 저장 공간이 필요합니다. 이 정도면 일반 연구자나 개발자가 쉽게 접근할 수 없는 수준입니다.
이 문제를 해결하기 위해 등장한 것이 바로 SWE-smith입니다. 이 글에서는 SWE-smith가 어떻게 기존 SWE 데이터셋의 한계를 극복하고, 어떤 방식으로 데이터를 자동 생성하며, 실제로 얼마나 효과적인지 상세히 살펴보겠습니다.
SWE 데이터셋의 한계와 SWE-smith의 등장
기존 SE 태스크용 데이터셋들은 몇 가지 공통적인 문제가 있습니다.
- 인스턴스 수가 적음 (기껏해야 수천 개)
- 수작업 시간이 수백 시간에 달함
- 실행 환경 유지 비용이 매우 높음 (수 TB 수준)
- 특정 저장소나 태스크에만 최적화됨
이러한 한계를 해결하고자 제안된 것이 SWE-smith입니다. SWE-smith는 실제 파이썬 코드베이스에서 자동으로 버그를 생성하고, 실행 가능한 환경을 구성해주는 파이프라인입니다. 핵심 목표는 두 가지입니다.
- 데이터 생성의 자동화
- 효율적인 실행 환경 구축
이 파이프라인을 통해 단순히 데이터 양을 늘리는 것뿐만 아니라, 실질적으로 모델 성능 향상에 기여할 수 있는 고품질 태스크 데이터를 생성할 수 있습니다.
SWE-smith의 데이터 생성 프로세스
SWE-smith는 단순한 스크립트가 아닙니다. 하나의 복잡한 파이프라인이며, 총 여섯 가지 주요 단계를 거쳐 태스크 인스턴스를 생성합니다.
1. 실행 환경 구축
- PyPI 상위 파이썬 저장소를 대상으로 자동 설치
- 기존 테스트들이 통과하는 개발 환경 구성
- 수동 검증 후 Docker 이미지로 저장
2. 태스크 인스턴스 후보 생성
- 다양한 버그 생성 전략을 통해 .diff 형태의 후보 생성
- 전략에는 LM 기반 변형, AST 기반 수정 등이 포함
3. 버그 생성 전략
LM Generation
- 기존 함수에 오작동 버전을 생성하거나
- 함수 헤더와 독스트링만 주고 전체를 재작성
Procedural Modification
- 조건문 제거, 연산자 변경 등 13가지 자동 AST 변형
Combine Bugs
- 동일 파일 또는 모듈 내 생성된 버그들을 조합
Invert PRs (PR Mirror)
- 실제 PR을 되돌리는 방식으로 버그 생성
4. 실행 기반 검증
- 패치 적용 후 테스트 실행
- 기존 테스트 중 하나라도 실패하면 유효한 인스턴스로 선정
5. 문제 설명 생성
- 버그 패치, 실패 테스트 코드, 실행 결과를 LM에 제공
- 실제 GitHub 이슈처럼 자연스러운 문제 설명 자동 생성
6. 효율적인 환경 공유
- 저장소 단위로 환경 공유
- 기존 방식 대비 저장 공간 요구량 대폭 절감 (약 295GB)
얼마나 많은 데이터를 만들었고, 얼마나 효과적이었나?
SWE-smith는 총 128개의 GitHub 저장소에서 50,137개의 태스크 인스턴스를 자동으로 생성했습니다. 이는 SWE-bench보다 훨씬 큰 규모입니다.
이 데이터를 기반으로 파인튜닝된 모델인 SWE-agent-LM-32B는 다음과 같은 성과를 보여줍니다.
- SWE-bench Verified 벤치마크 기준 Pass@1 해결률 40.2% (오픈소스 모델 중 최고 성능)
- 5,016개의 전문가 궤적을 이용해 Qwen 2.5 Coder Instruct 32B 모델을 학습
어떤 전략이 가장 효과적이었나?
- PR Mirror, Procedural Modification, LM Rewrite 전략이 모델 성능 향상에 특히 효과적이었음
- LM이 생성한 문제 설명은 실제 이슈와 유사한 학습 효과 제공
- 저장소 수가 늘어날수록 일반화 성능도 향상되는 경향 확인
SWE-smith는 단지 데이터셋이 아니다
SWE-smith는 단순한 데이터셋 이상입니다. 파이프라인 전체, 실행 환경, 전문가 궤적, 학습된 모델까지 모두 오픈소스로 공개되어 있습니다. SWE-smith 생태계를 활용하면 다음과 같은 활용이 가능합니다.
- 맞춤형 SWE 학습 데이터 생성
- 특정 저장소에 최적화된 모델 학습
- 소프트웨어 에이전트 개발 실험
SWE-smith가 바꾸는 소프트웨어 자동화의 판
소프트웨어 개발을 자동화하려면, 사람처럼 생각하는 모델이 필요합니다. 그리고 그 모델은 사람처럼 ‘실수’를 접하면서 학습합니다. SWE-smith는 바로 이 학습 과정을 대규모로 자동화할 수 있도록 설계된 도구입니다.
복잡한 수작업 없이도, 현실적인 버그와 문제 설명을 자동 생성할 수 있다면 소프트웨어 개발 자동화의 접근성과 속도는 극적으로 향상됩니다. SWE-smith는 그 가능성을 실현하고 있는 실용적인 파이프라인이며, 향후 SE 분야에서의 LLM 응용을 크게 확장할 수 있는 기반이 될 것입니다.
지금까지 SWE 데이터셋 부족으로 고민해왔다면, SWE-smith는 그 해답이 될 수 있습니다.
SWE-smith
Citation @misc{yang2025swesmith, title={SWE-smith: Scaling Data for Software Engineering Agents}, author={John Yang and Kilian Leret and Carlos E. Jimenez and Alexander Wettig and Kabir Khandpur and Yanzhe Zhang and Binyuan Hui and Ofir Press and Ludwig Sc
swesmith.com
'인공지능' 카테고리의 다른 글
영상 이해의 경계를 확장하다: Gemini 2.5가 바꾼 비디오 AI의 미래 (0) | 2025.05.11 |
---|---|
AI 에이전트를 지키는 보안 방패, Meta의 LlamaFirewall 공개 (0) | 2025.05.11 |
AI 에이전트의 소통을 혁신하는 인프라, A2A Gateway란? (0) | 2025.05.10 |
Docker로 구축하는 안정적인 MCP 서버 운영 가이드 - MCP 서버를 프로덕션 환경에 적용하기 위한 실질적인 해법 (0) | 2025.05.10 |
개발자의 새로운 선택지, Void – Cursor를 대체할 수 있는 오픈소스 AI 코드 에디터 (0) | 2025.05.09 |