SWE-Prime: 성공한 코딩 궤적 10%만 골라도 전체보다 나았던 이유 | DAKER 커뮤니티
성공한 로그를 많이 모으면 성능도 같이 오를 것이라는 가정은 익숙합니다. 그런데 2026년 8월 27일 공개된 SWE-Prime은 이 상식을 정면으로 흔듭니다. 성공한 코딩 에이전트 궤적 전체를 학습에 넣는 대신, 품질과 대표성을 따져 일부만 고른 뒤 학습했더니 더 나은 결과가 나왔습니다.
핵심은 단순한 데이터 축소가 아닙니다. 성공은 곧 좋은 학습 데이터가 아니라는 점, 그리고 과정의 질을 가려야 한다는 점입니다. 이미 성공한 궤적 안에도 효과가 없거나 중복되거나 위험한 단계가 남아 있을 수 있기 때문입니다.

논문은 2026년 8월 27일 arXiv에 올라왔습니다. 초록은 arXiv:2608.27449에서 확인할 수 있습니다. 저자는 Dewu Zheng, Ruizhe Ye, Yanlin Wang, Yang Ye, Hongyu Zhang, Ensheng Shi, Xilin Liu, Yuchi Ma, Jianxing Yu, Zibin Zheng입니다. 분량은 9쪽, 그림은 5장입니다. 이 글은 초록에 나온 숫자만 다룹니다. 절대 해결률은 초록에 없으므로 적지 않습니다.

성공한 궤적 전체가 왜 문제일까
실제 소프트웨어 이슈를 푸는 능력을 높이기 위해, 이전 연구는 대규모 에이전트 궤적 집합을 만들고 성공한 궤적에 지도 미세조정을 적용해 왔습니다. 겉으로 보면 성공한 궤적은 정답 경로처럼 보입니다. 하지만 성공과 품질은 같은 말이 아닙니다.
성공한 세션 안에도 효과가 없는 단계, 같은 검사를 반복하는 단계, 위험한 단계가 섞여 있을 수 있습니다. 이런 과정을 그대로 학습에 넣으면 감독 신호에 잡음이 생기고, 모델은 바람직하지 않은 문제 해결 습관까지 함께 배울 수 있습니다.
성공은 품질을 보증하지 않습니다.
이 문제의식은 연구 환경에만 머물지 않습니다. 테스트를 통과한 세션을 전부 학습 데이터로 모으면, 필요 이상으로 파일을 넓게 읽거나 같은 명령을 여러 번 반복하는 습관도 함께 들어갑니다. 제출은 성공이지만 과정은 좋지 않을 수 있고, 다음 모델은 그 과정을 정답처럼 받아들입니다.
SWE-Prime이 제안하는 방향은 데이터를 더 모으는 일이 아니라, 이미 있는 성공 집합에서 더 나은 일부를 고르는 일입니다. 초록에 따르면 고른 10%가 전체 해결 집합보다 높은 점수를 냈습니다. 이는 데이터가 부족해서가 아니라, 품질이 낮은 성공 사례가 너무 많이 섞여 있었을 수 있음을 시사합니다.
두 단계로 고릅니다: 궤적 필터와 구간 필터
SWE-Prime은 두 단계 데이터 선택 방식을 제안합니다. 먼저 궤적을 고르고, 그다음 궤적 안의 구간을 다시 고릅니다.
궤적 필터: 과정 품질, 결과 품질, 대표성
첫 단계는 성공한 궤적 가운데 품질이 높고 대표성이 있는 부분집합을 남기는 일입니다. 여기서 보는 기준은 과정 품질, 결과 품질, 대표성입니다.
과정 품질은 단계가 실제로 쓸모 있는지, 중복되는지, 위험한지를 봅니다. 결과 품질은 최종 패치가 이슈를 실제로 해결하는지에 가깝습니다. 대표성은 특정 유형의 성공만 과도하게 남는 편향을 줄이는 역할을 합니다.
이 세 기준은 하나로 뭉개기 어렵습니다. 과정만 보면 결과가 약한 궤적이 남을 수 있고, 결과만 보면 과정이 좋지 않은 궤적이 남을 수 있습니다.
구간 필터: 기여, 학습 가능성, 위험
둘째 단계는 궤적 안의 연속한 단계를 의미 있는 구간으로 묶고, 각 구간을 기여, 학습 가능성, 위험으로 평가하는 일입니다.
기여는 그 구간이 최종 해에 얼마나 필요한지, 학습 가능성은 모델이 그 구간에서 배울 여지가 있는지, 위험은 그 구간이 나쁜 습관을 심을 가능성이 있는지를 뜻합니다. 한 줄 명령만 떼어 보면 맥락이 사라지기 때문에, 연속 동작을 구간으로 보는 접근이 중요합니다.
성공한 궤적을 고르는 것만으로는 충분하지 않고, 그 안에서 무엇을 학습할지도 다시 골라야 합니다.
문맥은 남기고, 손실은 고른 구간에만 줍니다
SWE-Prime의 설계에서 눈에 띄는 지점은 모든 구간을 시퀀스에 남겨 문맥을 유지하되, 손실 계산에는 선택된 구간만 넣는다는 점입니다.
이 방식은 두 문제를 동시에 피합니다. 나쁜 구간을 시퀀스에서 아예 지우면 좋은 구간이 어떤 맥락에서 나왔는지 끊기고, 반대로 나쁜 구간까지 손실에 넣으면 모델이 그 행동을 따라 배우게 됩니다. 문맥으로는 보여 주되, 학습 대상으로는 삼지 않는 분리가 핵심입니다.
모든 구간은 문맥에 남기고, 고른 구간만 손실에 들어갑니다.
구현 관점에서는 손실 마스크로 이해하면 됩니다. 전체 궤적을 그대로 넣고, 선택된 구간의 토큰만 손실 계산에 참여시키는 방식입니다. 데이터를 물리적으로 잘라 이어 붙이는 방식은 이 설계와 다릅니다.
10%가 전체 해결 집합보다 앞섰습니다
실험은 SWE-Bench Pro와 SWE-Bench Verified에서 진행됐습니다. 초록에 따르면 SWE-Prime이 고른 궤적 10% 부분집합으로 학습한 결과가 전체 해결 집합으로 학습한 결과보다 더 좋았습니다.
상대 이득은 Pro에서 최대 12.2%, Verified에서 최대 24.2%입니다. 절대 해결률은 초록에 없으므로 이 글에서도 다루지 않습니다.
고른 10%가 전체 해결 집합보다 높은 점수를 냈습니다.
이 숫자가 말해 주는 바는 분명합니다. 성공 데이터를 전부 넣는 습관이 항상 더 좋은 감독으로 이어지는 것은 아니라는 점입니다. 다만 초록에는 상대 이득의 상한만 제시되어 있으므로, 모든 설정에서 같은 비율이 나온다고 단정할 수는 없습니다.
이 논문을 읽을 때 놓치지 말아야 할 점
이 글은 절대 해결률을 소개하는 글이 아닙니다. 초록이 제공한 숫자는 고른 비율 10%, Pro 상대 이득 최대 12.2%, Verified 상대 이득 최대 24.2%뿐입니다.
또한 실패한 궤적까지 학습에 넣자는 주장도 아닙니다. 출발점은 성공한 궤적이며, 그 안에서 품질과 대표성과 구간을 다시 가리는 방식입니다.
데이터를 잘라 이어 붙이는 방법으로 이해해서도 곤란합니다. 설계의 핵심은 모든 구간을 문맥에 남기고, 선택된 구간만 손실에 반영하는 데 있습니다.
분량이 9쪽인 짧은 논문이므로, 초록만으로 학습률이나 배치 크기 같은 세부 하이퍼파라미터를 알 수 있는 것도 아닙니다. 이 글 역시 초록에 없는 내용을 덧붙이지 않습니다.
왜 지금 읽어둘 만한가
코딩 에이전트 학습에서 데이터 양보다 데이터 질이 더 중요할 수 있다는 점은 점점 더 실무적인 문제가 되고 있습니다. 특히 성공 로그가 빠르게 쌓이는 환경에서는, 무엇을 더 모을지보다 무엇을 빼야 할지가 더 중요해질 수 있습니다.
SWE-Prime은 그 질문에 대해 비교적 단순하면서도 분명한 답을 줍니다. 성공한 것만 모아도 충분하지 않고, 그 안에서 다시 골라야 한다는 것입니다. 그리고 그 선택은 궤적 수준과 구간 수준에서 각각 이뤄져야 합니다.
참고 자료: https://arxiv.org/abs/2608.27449
성공한 로그를 학습 데이터로 다룰 때, 여러분은 어떤 기준으로 남기고 어떤 기준으로 제외하는 편이신가요?