성공한 궤적 100%보다 선별한 10%가 나았다: SWE-Prime의 데이터 품질 실험
코딩 에이전트를 학습시킬 때 가장 손쉬운 데이터 선택 규칙은 "문제를 풀었는가"다. 테스트를 통과한 실행 궤적만 모아 지도 미세조정(SFT)에 넣으면 깔끔해 보인다. 하지만 성공한 궤적에도 같은 파일을 반복해서 찾거나, 실패한 도구 호출을 되풀이하거나, 정답 패치와 무관한 코드를 건드린 구간이 섞일 수 있다. 최종 테스트 통과는 결과를 확인할 뿐, 그 과정 전체가 따라 배울 만한 행동인지는 말해주지 않는다.
8월 27일 공개된 논문 SWE-Prime은 이 간극을 정면으로 다룬다. 연구진은 성공한 궤적 32,161개를 모두 학습하는 대신, 과정과 결과가 좋은 대표 궤적 10%를 고르고 그 안에서도 학습 손실을 줄 구간만 다시 선택했다. 세 가지 30B급 모델과 두 벤치마크에서 이 10% 선별 방식이 전체 성공 궤적 학습보다 높은 해결률을 기록했다.
결론부터 말하면 "데이터를 줄이면 항상 좋아진다"는 연구가 아니다. 같은 논문에서 임의로 뽑은 10%는 대부분 성능이 나빠졌다. 양이 아니라 선택 기준이 핵심이다. 아직 v1 논문이고 방법 구현 저장소도 연결돼 있지 않으므로, 아래 수치는 저자 실험의 재현 완료 결과가 아니라 공개 표를 원자료와 대조해 읽은 결과다.
성공 여부만으로는 학습 품질을 알 수 없다
SWE-Prime이 출발점으로 삼은 공개 데이터셋은 Nebius의 SWE-rebench OpenHands Trajectories다. Qwen3-Coder-480B-A35B-Instruct와 OpenHands로 만든 67,074개 궤적 가운데 32,161개가 해당 이슈를 해결했다. 연구진은 이 성공 집합을 후보 풀로 사용했다.
여기서 문제가 생긴다. 에이전트가 마지막에 올바른 패치를 만들었더라도 중간에 다음 행동이 남을 수 있다.
- 수정 전에 저장소를 읽지 않고 바로 코드를 바꾼다.
- 같은 탐색이나 실패한 도구 호출을 새 정보 없이 반복한다.
- 버전 기록에서 목표 수정을 찾아오는 식의 누출 지름길을 쓴다.
- 필요한 범위보다 많은 파일을 바꿔 회귀 위험을 키운다.
- 최종 수정에 기여하지 않은 긴 우회 구간을 남긴다.
이런 궤적을 통째로 SFT에 넣으면 모델은 정답 패치뿐 아니라 우회와 위험한 습관도 다음 토큰 예측의 정답으로 배운다. 테스트 통과 여부는 패치의 결과 라벨로는 쓸 수 있지만, 모든 중간 행동의 품질 라벨은 아니다.
SWE-Prime은 두 번 거른다
첫 단계는 궤적 전체를 평가한다. 논문은 과정 품질, 결과 품질, 데이터 대표성을 따로 본다. 과정 품질에는 관찰-수정-검증의 흐름, 도구 호출 성공률, 연속 반복, 버전 기록을 이용한 누출 여부가 들어간다. 결과 품질은 패치가 최소 범위로 문제를 해결했는지 본다. 대표성 평가는 비슷한 문제만 남지 않도록 임베딩과 군집을 이용해 후보의 분포를 조정한다.
두 번째 단계는 선택된 궤적을 의미 단위 구간으로 나눈다. 각 구간이 최종 해결에 기여했는지, 모델이 따라 배울 수 있는지, 위험한 행동을 담았는지를 평가해 점수를 준다. 기준을 통과한 구간의 어시스턴트 응답 토큰에만 학습 손실을 적용한다.
중요한 설계가 하나 있다. 탈락한 구간을 시퀀스에서 삭제하지 않는다. 뒤 행동이 앞선 실패나 관찰을 전제로 할 수 있기 때문이다. 전체 문맥은 모델 입력에 남기되, 좋지 않은 구간을 모방하도록 보상하지 않는 방식이다. "문맥으로 보는 것"과 "정답으로 학습하는 것"을 분리한 셈이다.
SWE-Prime은 성공 궤적을 전체 단위와 의미 구간 단위로 두 번 평가한다. 탈락 구간도 문맥에는 남지만 학습 손실에는 포함하지 않는다. 출처: arxiv.org/abs/2608.27449.
공개 표를 다시 계산해 본 결과
논문은 Qwen3-30B-A3B-Instruct-2507, GLM-4.7-Flash, Qwen3-Coder-30B-A3B-Instruct를 사용했다. 평가는 500개 인간 검증 과제로 구성된 SWE-bench Verified와 SWE-bench Pro 공개 분할 731개에서 이뤄졌다. 각 과제는 최대 100번 상호작용할 수 있었고, 최종 패치는 각 벤치마크 실행 환경에서 검사됐다.
전체 성공 궤적 SFT와 SWE-Prime 10%를 비교하면 다음과 같다.
| 모델 | Verified 전체→10% | Pro 전체→10% | 평균 턴 변화(Verified / Pro) |
|---|---|---|---|
| Qwen3 Instruct | 36.8→39.6 | 16.83→18.88 | 65.2→61.1 / 68.3→62.2 |
| GLM-4.7 Flash | 41.4→51.4 | 24.62→26.95 | 67.9→56.0 / 79.7→70.8 |
| Qwen3 Coder | 51.0→53.2 | 31.05→34.75 | 75.6→70.9 / 83.6→70.9 |
가장 큰 차이는 GLM-4.7-Flash의 Verified 결과다. 해결률이 41.4%에서 51.4%로 10.0%포인트 올랐고, 상대 향상률은 (51.4-41.4)/41.4로 계산하면 약 24.2%다. Pro에서는 Qwen3 Instruct가 16.83%에서 18.88%로 올라 약 12.2% 상대 향상을 보였다. 논문 초록의 최대 24.2%와 12.2%는 이 두 비교와 일치한다.
세 모델 모두 두 벤치마크에서 전체 궤적 학습보다 높은 해결률을 냈고 평균 상호작용 턴도 줄었다. 다만 절대 상승 폭은 2.2%포인트부터 10.0%포인트까지 넓다. 특정 모델에서 크게 오른 결과를 모든 모델의 일반적 향상 폭으로 읽으면 안 된다.
세 모델 모두 SWE-bench Verified에서 전체 성공 궤적 학습보다 SWE-Prime 10%가 높은 해결률을 기록했다. 무작위 10%는 같은 효과를 내지 못했다. 출처: arxiv.org/abs/2608.27449.
"10%면 충분하다"고 일반화하면 안 되는 이유
무작위 10% 기준선은 이 연구의 가장 중요한 제동 장치다. Qwen3 Coder는 무작위 10%로 학습했을 때 Verified가 41.2%로, 원본 모델의 44.8%보다도 낮았다. Pro도 27.22%로 원본 29.55%보다 떨어졌다. GLM-4.7-Flash 역시 무작위 10%에서 두 벤치마크 모두 원본보다 낮았다. 적은 데이터 자체가 이득을 만든 게 아니라는 뜻이다.
재현성에도 빈칸이 있다. 입력 궤적 데이터셋과 기반 모델 카드는 공개돼 있고, 논문의 표와 산식은 대조할 수 있었다. 반면 arXiv v1 본문에는 SWE-Prime 구현 저장소가 연결돼 있지 않다. 궤적·구간 점수는 LLM 평가에 의존하므로 평가 프롬프트, 모델 버전, 군집 설정, 임계값이 달라지면 선택 집합도 바뀔 수 있다. 30B급 모델 세 개와 두 소프트웨어 이슈 벤치마크에서 얻은 결과를 더 작은 모델, 사내 코드, 일반 도구 사용 에이전트에 바로 옮길 근거도 아직 부족하다.
또 하나, 해결률은 실행 테스트를 통과한 패치 비율이다. 보안성, 유지보수성, 사람이 읽기 좋은 수정, 운영 비용을 모두 대표하지 않는다. 연구진은 최소 패치와 위험 행동을 선택 기준에 넣었지만, 공개 표만으로는 실제 조직의 코드 리뷰 품질까지 증명할 수 없다.
실전에서는 학습보다 먼저 로그 선별 체계를 만든다
대부분의 팀은 당장 30B 모델을 미세조정하지 않는다. 그래도 이 설계는 에이전트 실행 로그를 평가 데이터나 프롬프트 예시로 재사용할 때 그대로 적용할 수 있다.
첫째, 성공을 한 비트로 저장하지 말고 과정을 함께 기록한다. 최소한 탐색 뒤 수정했는지, 실패 호출이 몇 번 반복됐는지, 변경 파일 수가 필요 범위와 맞는지, 최종 테스트 전에 어떤 검증을 했는지를 구조화한다.
둘째, 궤적과 구간을 다른 단위로 본다. 전체 실행이 쓸 만해도 중간의 비밀 노출, 과도한 권한 요청, 무관한 파일 수정은 학습 예시에서 제외해야 한다. 반대로 실패한 시도도 뒤의 복구 판단에 필요한 문맥이라면 삭제보다 마스킹이 낫다.
셋째, 선별기의 품질을 독립적으로 시험한다. 전체 성공 집합, 임의 동일 크기 집합, 규칙 기반 집합, LLM 선별 집합을 같은 평가 세트에서 비교해야 한다. 선별 방법이 우수하다는 주장은 "적은 데이터"가 아니라 무작위·전체 기준선보다 나은지로 확인한다.
넷째, 누출 검사를 별도 게이트로 둔다. Git 기록, 테스트 정답, 평가 패치, 미래 시점 파일을 읽은 실행은 실제 문제 해결 능력과 다른 신호를 쓴다. 통과했더라도 학습과 성능 보고에서 빼야 한다.
마지막으로 비용표를 함께 남긴다. 궤적 수가 90% 줄어도 선별용 LLM 평가와 임베딩·군집 비용이 추가된다. 저장·학습 토큰 절감과 선별 비용을 같은 장부에서 비교해야 실제 운영 이득을 알 수 있다.
결론
SWE-Prime의 결과가 주는 메시지는 단순하다. 코딩 에이전트가 문제를 풀었다는 사실만으로 그 실행 전체가 좋은 교재가 되지는 않는다. 성공 궤적 안에도 반복, 도구 실패, 누출 지름길, 불필요한 수정이 남는다.
이번 실험에서는 전체 성공 궤적을 그대로 학습한 것보다 과정·결과·대표성을 기준으로 고른 10%와 구간별 손실 마스킹을 결합한 방식이 여섯 비교 모두에서 더 높은 해결률을 냈다. 동시에 무작위 10%는 자주 원본 모델보다 나빴다. 데이터 절감이 아니라 행동 품질 선별이 성능 차이를 만들었다는 해석이 가장 안전하다.
실무에서 먼저 가져올 것은 특정 10%라는 숫자가 아니다. 결과 라벨과 과정 라벨을 분리하고, 궤적 전체와 의미 구간을 따로 평가하며, 나쁜 행동은 문맥에 남겨도 모방 대상으로 삼지 않는 설계다.
참고 자료
- Zheng et al., SWE-Prime: Fewer Trajectories, Better Performance (2026-08-27, v1)
- Nebius, SWE-rebench OpenHands Trajectories
- SWE-bench, 공식 개요와 평가 하네스


댓글
댓글 쓰기