TL;DR
코딩 에이전트는 다중 턴 동안 툴 출력으로 인해 컨텍스트가 빠르게 비대해져 비용과 추론 품질 저하가 발생한다. SWE-Pruner Pro는 별도 스코어러나 추가 질의 없이 이미 에이전트가 형성한 표현에서 라인별 중요도를 직접 읽어 컨텍스트를 압축하므로 불필요한 외부 호출과 그에 따른 오버헤드를 제거한다. 이 접근은 토큰 사용량과 응답 시간의 트레이드오프를 줄여 대화형 코드 작업에서 처리량과 비용 효율을 동시에 개선할 가능성을 제시한다.
왜 중요한가
코딩 에이전트는 다중 턴 동안 툴 출력으로 인해 컨텍스트가 빠르게 비대해져 비용과 추론 품질 저하가 발생한다. SWE-Pruner Pro는 별도 스코어러나 추가 질의 없이 이미 에이전트가 형성한 표현에서 라인별 중요도를 직접 읽어 컨텍스트를 압축하므로 불필요한 외부 호출과 그에 따른 오버헤드를 제거한다. 이 접근은 토큰 사용량과 응답 시간의 트레이드오프를 줄여 대화형 코드 작업에서 처리량과 비용 효율을 동시에 개선할 가능성을 제시한다.
핵심 기여
에이전트 백본의 마지막-레이어 표현이 라인별 유지/제거 신호를 내포함을 실증
수집한 약 2,260개의 툴 응답(약 155k 라인)에서 마지막-레이어 은닉 상태를 평균 풀링해 선형 프로브를 적용한 결과 AUC 0.83과 best-F1 0.63을 기록해 라인별 중요도가 표현 공간에 분명히 존재함이 확인됐다. 이 실증은 별도 스코어링 모델이나 명시적 goal-hint 질의를 거치지 않고도 프루닝 신호를 직접 읽을 수 있다는 근거를 제공한다. 선형 프로브의 중간 점수 중첩은 비선형 헤드와 길이 의존적 처리가 필요한 동기를 제공했다.
프리필 패스 재사용 방식의 경량 프루닝 헤드 설계
SWE-Pruner Pro는 에이전트가 툴 응답을 읽을 때 수행되는 prefill에서 생성된 마지막-레이어 은닉 상태를 재사용하는 in-server 헤드를 제안했다. 이 헤드는 길이 인식 임베딩을 덧셈하고 LayerNorm, 두 블록의 Linear→GELU→Dropout 스택, 최종 Linear로 구성된 토큰별 분류기를 적용해 각 토큰의 keep 확률을 산출한 뒤 라인 단위 다수결로 최종 결정을 만든다. 프리필을 재사용하므로 별도 모델 호출이 필요 없고 다음 턴의 재포워드 오버헤드는 보통 단축된 응답 때문에 전체적으로 상쇄된다.
샘플별 균형 포컬 손실로 드문 클래스의 중요 신호를 보존
훈련 데이터의 라인별 keep 비율이 샘플마다 크게 달라지므로 샘플 내부의 소수 클래스(보통 keep)를 과소학습하지 않도록 각 샘플 내에서 keep 토큰과 prune 토큰에 대해 별도로 평균한 포컬 손실을 사용했다. 수식적으로 토큰별 손실은 L_i^{tok}=(1-p_{t,i})^{}\cdot BCE(p_i,y_i)이며 샘플 손실은 keep과 prune에 대해 각각 평균해 두 값을 1/2 가중치로 합산한다. 이 손실 구조는 희소한 유지 라인을 더 강하게 학습하게 했고, 판정 품질과 사람/LLM 평가 점수에서 유의한 향상을 가져왔다.
두 개의 공개 백본과 네 개 멀티턴 벤치마크에서 일관된 효율-품질 성능 달성
MiMo-V2-Flash와 Qwen3-Coder-Next 두 백본, SWE-QA 계열 및 Oolong, SWE-Bench Verified 등 네 벤치마크에서 평가한 결과 SWE-Pruner Pro는 최대 39%의 토큰 절감과 동시에 해상도(Resolve Rate) 및 정확도 지표에서 기준선과 유사하거나 더 나은 성능을 유지했다. 특히 Qwen3-Coder-Next의 SWE-QA-Pro 셀에서 39.4% 토큰 절감과 품질 유지, MiMo-V2-Flash의 Oolong에서 정확도 +2.2 포인트 향상이 관찰되었다. 재생 연구에서는 in-server 헤드가 총 생성 시간 대비 약 15.0%의 추가 벽시간만을 요구해 실무 적용 시 오버헤드가 제한적임이 확인됐다.
핵심 아이디어 이해하기
코딩 에이전트는 툴 호출을 통해 수백 줄의 텍스트를 받아 컨텍스트 창에 누적하며 이후 턴에서도 이 정보를 조건으로 사용한다. Transformer 기반 백본은 툴 응답을 읽을 때 attention 가중치와 포워드 연산을 통해 어떤 토큰과 라인이 이후 행동에 중요한지를 내재적으로 반영한 은닉 표현을 생성한다. 따라서 중요한 라인 여부는 이미 모델 내부 표현에 인코딩되어 있으며, 이를 별도 모델이 재생성할 필요가 없다는 것이 출발점이다. SWE-Pruner Pro는 이 출발점에 근거해 백본의 마지막-레이어 토큰 임베딩을 읽어 토큰별 keep 로그it를 계산하고 라인 단위로 집계하는 방식을 채택했다. 추가 모델 호출이나 명시적 goal-hint를 요구하는 기존 task-specific pruner와 달리, 프리필 과정에서 생성된 은닉 상태를 재사용하므로 외부 오버헤드가 제거된다. 길이 의존성은 임베딩으로 처리하고 토큰 단위의 불확실성은 비선형 헤드가 흡수하도록 설계해 중간 점수 영역의 판별 성능을 개선한다. 이 접근은 토큰 절감과 품질 보존 사이의 트레이드오프를 완화한다는 점에서 핵심적이다. 실험에서는 평균 keep-rate 약 30%가 관찰되었고, 헤드는 긴 응답에서는 보다 공격적인 제거를, 짧은 응답에서는 보수적 결정을 하도록 길이 인식 임베딩을 통해 동작이 조정되었다. 이로 인해 다음 턴에서의 재포워드 비용 감소가 초기 프루닝 오버헤드를 상쇄해 장기적으로 처리량과 비용 효율을 개선했다.
방법론
전체 파이프라인은 각 턴에서 에이전트가 툴 호출 c_t을 수행하고 환경이 raw response r_t를 반환하면 시작된다. 에이전트는 [H_{t-1}, c_t, r_t]를 prefill하여 KV 캐시에 채우고, 이 과정에서 새로 전달된 r_t의 토큰들만이 포워드되어 마지막-레이어 은닉 상태 h_i를 생성한다. SWE-Pruner Pro는 이 시점에서 추가 백본 포워드 없이 h_i를 읽어 토큰별 keep 로그it를 예측하고 라인 단위 다수결로 최종 keep/prune 결정을 만든다. 프루닝 헤드는 두 요소로 구성된다. 첫째는 라인 수 N을 입력으로 하는 길이 인식 임베딩 e(N)이며, 이는 모든 토큰의 마지막-레이어 은닉에 덧셈되어 길이 조건을 부여한다. 둘째는 토큰별 분류기 f_(theta)로 LayerNorm, 두 블록의 Linear→GELU→Dropout, 마지막 Linear를 포함하며 각 증강된 은닉 tilde{h}_i에 대해 로그it z_i를 산출하고 시그모이드로 확률 p_i를 얻는다. 라인 결정은 각 라인 내 토큰별 이진화 결과의 다수결로 얻으며, 학습 시에는 라인 레이블을 토큰 레이블로 확장해 토큰 수준 손실로 학습한다. 학습 전략은 공개된 다중 턴 궤적에서 라인별 keep/prune 레이블을 얻어 22,609 샘플로 헤드를 학습한 것이다. 손실 함수는 샘플별 균형 포컬 손실로, 토큰별 포컬 스케일링을 적용한 뒤 각 샘플에서 keep 토큰과 prune 토큰의 손실을 따로 평균해 두 클래스를 균형 있게 반영한다. 백본은 완전히 고정(frozen)되어 헤드만 학습하므로 백본 동작 자체는 유지되며 캐시된 특징으로부터 오프라인으로 헤드를 학습할 수 있다.
관련 Figure

그림은 기존 접근이 별도 프루너 모델과 목표 힌트(goal-hint)를 필요로 해 추가 모델 호출과 오버헤드를 유발하는 반면 SWE-Pruner Pro는 에이전트의 prefill 단계에서 생성된 은닉 상태를 읽어 바로 라인별 유지/제거 결정을 만든다고 나타낸다. 이 차이는 외부 호출을 생략함으로써 프루닝의 순수 압축 이득이 오버헤드에 의해 상쇄되는 문제를 해결하는 구조적 근거를 제공한다.
왼쪽은 외부 Pruner와 에이전트의 상호작용을, 오른쪽은 에이전트 내부 표현으로 직접 프루닝을 수행하는 SWE-Pruner Pro의 아키텍처 차이를 도식화한 그림이다.

상단 패널은 턴 단위로 prefix가 캐시되고 새 툴 응답만 포워드되어 은닉 상태가 생성되는 실행 흐름을 나타낸다. 하단 패널은 헤드가 은닉 상태에 점수화 모듈을 적용하고 per-line keep/prune 마스크를 생성한 뒤 pruned response를 구성하여 다음 턴 입력으로 대체하는 세부 절차를 보여준다. 이 이미지가 methodology 블록을 보강하는 핵심 근거로서 프리필 재사용과 라인 집계 설계가 어떻게 결합되는지 명확히 드러난다.
Agent Trajectory와 SWE-Pruner Pro 헤드의 입력·출력 흐름을 시각화한 다이어그램으로, prefill에서 얻은 마지막-레이어 은닉을 헤드가 읽어 라인별 결정으로 변환하는 과정을 보여준다.
주요 결과
주요 벤치마크에서 SWE-Pruner Pro는 토큰 절감과 품질 보존을 동시에 달성했다. Qwen3-Coder-Next의 SWE-QA-Pro 셀에서 SWE-Pruner Pro는 39.4% 토큰 절감을 기록했고 SWE-QA 계열 전체에서 최대 39% 토큰 절감 수치를 보였다. Oolong 장문 집계 작업에서는 MiMo-V2-Flash에서 30%에 이르는 토큰 절감과 함께 정확도 +2.2 포인트 향상이 관찰되어 절감이 품질 저하로 이어지지 않음을 확인했다. 코드 수정 벤치마크인 SWE-Bench Verified에서는 백본에 따라 결과의 비대칭성이 나타났다. MiMo-V2-Flash에서는 모든 프루너가 resolve rate를 개선했고 SWE-Pruner Pro는 +3.8%의 추가 개선을 보이며 다른 방법 대비 입력 토큰 증가폭이 상대적으로 작았다. 반대로 Qwen3-Coder-Next에서는 대부분의 프루너가 resolve 수를 감소시켰고, SWE-Pruner Pro는 6건만 손실하면서 입력 토큰을 최대 -13.5% 줄여 트레이드오프 측면에서 가장 유리한 프로파일을 보였다. 설계 구성 요소의 기여도를 평가한 소규모 소거(ablation)에서는 샘플별 균형 포컬 손실과 길이 인식 임베딩이 성능 향상을 주도했다. 손실을 BCE로 대체하면 judge 점수와 F1이 하락했고, 길이 임베딩은 F1을 크게 바꾸지 않으면서도 GPT-5.4-mini judge 점수에서 6.86에서 7.08로 향상시켜 길이-의존적 오류 재분배가 실제 평가에서 유의미함을 보였다.
관련 Figure

막대 그래프는 Generate(생성) 시간과 Extra Prune(프루닝 오버헤드)를 비교해 프루닝이 전체 생성 시간에 대해 평균적으로 15.0%의 추가 벽시간을 요구함을 시각화한다. 분포상 p50=14.7%와 p95=34.8%라는 수치가 함께 제시되어 in-server 헤드가 실무적 오버헤드 한계 내에 있음을 정량적으로 뒷받침한다. 이 결과는 latency 분석과 비용 관점의 결정을 내리는 데 직접적인 근거 자료로 활용될 수 있다.
재생(replay) 실험에서 프루닝 호출이 다음 세대 생성 단계에 비해 추가로 차지하는 벽시간 비율을 각 궤적별로 막대 그래프로 나타낸 그림이다.
기술 상세
전체 아키텍처는 백본을 고정하고 마지막-레이어 은닉 벡터 H mathbb{R}^{B\times T\times D}를 입력으로 받는 구조다. 길이 인식 임베딩 S mathbb{R}^{B\times D}를 선형적으로 버킷 색인화해 T에 브로드캐스트 더한 뒤 합산하여 H'를 얻고, H'는 FFN Pruning Head로 들어가 토큰 수준 로그it z를 출력한다. 헤드 구조는 LayerNorm, 두 개의 Linear-GELU-Dropout 블록(숨김 폭 d, backbone hidden size와 동일), 마지막 Linear 출력으로 구성되어 있다. 핵심 메커니즘의 수학적 기반은 길이 임베딩의 덧셈과 토큰별 분류기의 비선형성에 있다. 길이 임베딩은 수식 tilde{h}i = h_i + e(N)로 표현되며, 이는 동일한 h_i가 응답 길이 N에 따라 다른 판별 경계를 갖게 만드는 역할을 한다. 토큰별 확률은 z_i=f(theta)(tilde{h}i), p_i=(z_i)로 계산되고, 라인 결정은 각 라인 내 바이너리화된 p_i 임계값(τ=0.5)에 대한 다수결로 이루어진다. 손실 함수는 토큰별 포컬 형태 L_i^{tok}=(1-p{t,i})^{}\cdot BCE(p_i,y_i), =2의 형태로 정의되며 샘플별로 keep과 prune 토큰의 평균을 따로 구해 두 값을 1/2 가중치로 합친다. 수식 설명 절차에 따라 기존 수식과 변수는 다음과 같다: 1) 원문 수식 L_i^{tok}=(1-p_{t,i})^{}\cdot BCE(p_i,y_i), =2. 2) 변수 의미: p_i는 모델의 토큰별 예측 확률, y_i는 토큰 레이블(0 또는 1), p_{t,i}는 정답에 따라 p_i 또는 1-p_i로 변환한 값, BCE는 이진 교차엔트로피를 뜻한다. 3) 계산 흐름: 각 토큰에 대해 p_i를 계산하고 p_{t,i}를 정하면 포컬 스케일 (1-p_{t,i})^{}를 곱한 BCE를 구한다. 4) 수치 예시: y_i=1이고 p_i=0.9이면 p_{t,i}=0.9이고 (1-0.9)^2=0.01이므로 토큰 손실이 0.01 imes BCE(0.9,1)작게 된다. 5) 해석: 확신 있는 예측은 작은 스케일링 값을 받아 손실 기여가 줄고, 불확실한 예측은 더 큰 스케일링을 받아 학습 신호가 강화된다. 그 결과 샘플별 소수 클래스가 희석되지 않고 학습에 충분한 기여를 하게 된다. 구현 측면에서 백본은 완전히 고정되어 있으며 22,609개 샘플로 헤드만 학습했다. 라인 레이블은 LLM 어노테이터에서 얻은 것을 토큰 레벨로 확장해 사용했고 불확실한 행은 긍정 레이블로 유지하는 라벨링 프로토콜을 따랐다. 추론 측면에서는 in-server 통합으로 은닉 상태 전송 비용을 제거했고 재포워드는 pruned response에 대해서만 발생하므로 긴 응답에서 전체 비용 이득이 클 때 순이익이 발생한다.
관련 Figure

그림은 H mathbb{R}^{B\times T\times D} 형태의 마지막-레이어 은닉과 K-버킷 임베딩 테이블 E mathbb{R}^{K\times D}을 합쳐 H'를 만든 뒤 토큰 로그it을 산출하는 연산 순서를 명확히 표현한다. 또한 파란 영역(고정된 백본)과 주황 영역(학습 가능한 헤드/임베딩)을 색으로 구분해 어떤 파라미터만 업데이트되는지 기술적으로 전달한다. 이 이미지는 기술적 세부 구현과 학습 범위를 이해하는 데 직접적인 근거가 된다.
길이 인식 임베딩을 버킷 인덱스로 조회해 은닉 벡터에 브로드캐스트 더한 뒤 FFN Pruning Head로 처리하는 상세 연산 흐름을 보여주는 블록 다이어그램이다.
한계점
평가 데이터와 실험은 공개된(open-weight) 백본을 대상으로 수행되었고, 백본이 내부 은닉 상태를 외부에 노출할 수 있어야 SWE-Pruner Pro를 그대로 적용할 수 있다. 언어 범위는 주로 Python 중심의 코딩 작업과 Oolong의 자연어 장문 집계로 제한되어 있어 다른 프로그래밍 언어나 도메인 전반에 대한 일반성은 추가 검증이 필요하다. 공격적 프루닝은 벤치마크에서 포착되지 않은 품질 저하를 유발할 수 있으므로 안전성이나 핵심 로직 손실이 민감한 환경에서는 배포 전 별도 검증이 요구된다.
실무 활용
SWE-Pruner Pro는 백본이 마지막-레이어 은닉 상태를 외부로 노출하고 헤드를 서버 내부에 통합할 수 있는 환경에서 즉시 적용 가능하다. 이 방식은 별도 스코어러 호출을 제거하므로 추론 파이프라인의 복잡성을 낮추고 전체 토큰 비용을 줄이는 실무 이점을 제공한다. 공개 저장소와 학습 데이터, 구현 상세가 제공되어 실무 이관 시 헤드 재학습으로 다른 백본에 맞춰 적응시킬 수 있다.
- 대규모 리포지토리에서 멀티턴 코드 수리 및 패치 생성 워크플로우의 컨텍스트 비용을 줄이는 비용 최적화 수단으로 사용될 수 있다.
- 대화형 디버깅 에이전트에서 반복적으로 읽히는 긴 툴 출력(예: 로그, 테스트 출력)의 누적을 방지해 응답 지연을 낮추는 데 활용할 수 있다.
- 자동화된 코드 리뷰나 QA 파이프라인에서 불필요한 출력 라인을 제거해 후속 평가나 판정자의 입력을 경량화하는 전처리로 적용할 수 있다.
코드 공개 여부: 공개
코드 저장소 보기키워드
용어 해설
- Length-aware Embedding
- — 툴 출력의 라인 수 N을 입력으로 받아 산출되는 벡터 임베딩으로, 마지막-레이어 은닉 상태에 더해져 응답 길이에 따라 유지/제거 결정이 달라지도록 한다. 이 임베딩은 큰 응답에서 한 줄을 잘못 제거하는 비용이 작은 반면 짧은 응답에서 동일한 오류가 치명적이라는 길이-의존성 문제를 직접 반영한다. 따라서 모델이 짧고 긴 응답에 대해 서로 다른 임계값 행동을 학습할 수 있게 해 실험상 품질 손실을 줄였다.
- Per-sample Balanced Focal Loss
- — 각 학습 샘플 내부에서 keep 토큰과 prune 토큰을 따로 평균내어 두 클래스의 손실 기여를 균형화한 손실 함수로, 전체 배치의 평균적 keep 비율에 영향을 받지 않도록 설계되었다. 구체적으로 토큰별 포컬 스케일링을 적용한 뒤 샘플 내 keep과 prune 손실을 동일 가중치로 평균한다. 이 방식은 각 샘플에서 드물게 남는 소수의 keep 라인을 더 강하게 학습하게 하여 복원 가능한 정보의 보존을 향상시켰다.
- Line-level Pruning
- — 툴 출력의 문장 또는 코드 라인 단위로 유지 여부를 판정하여 불필요한 라인만 제거하는 압축 전략으로, 코드의 문법적 구조와 의미 단위를 보존하면서 컨텍스트 길이를 줄인다. 토큰 단위 절삭보다 문맥 보존과 디버깅 가능한 결과를 제공하며 에이전트의 후속 실행에서 가독성 높은 히스토리를 유지한다. 본 논문에서는 에이전트의 마지막-레이어 토큰 표현을 이용해 라인별 다수결로 최종 결정을 내렸다.
- Prefill KV Cache
- — 에이전트가 툴 응답을 받을 때 기존 히스토리와 툴 호출을 KV 캐시에 미리 채워 두고 새로운 응답 토큰만 포워드하여 마지막-레이어 은닉 상태를 얻는 실행 패턴이다. SWE-Pruner Pro는 이 prefill 패스에서 생성된 은닉 상태를 재사용하여 추가 모델 호출 없이 프루닝 신호를 추출한다. 이 설계는 외부 모델 호출을 줄여 전체 추론 오버헤드를 제한하는 핵심 엔지니어링 이점으로 작용한다.
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.