장기 호흡 에이전트: 다중 턴 추론이 실패하는 이유와 이를 해결하는 실용적인 학습 트릭
요약
최신 LLM 에이전트가 단기 작업에서는 뛰어나지만, 30~50단계의 장기 워크플로우에서 실패하는 근본적인 원인을 분석합니다. 본 가이드는 다중 턴 에이전트의 취약점을 진단하고, MiniMax-M1 및 DeepSeek-R1 등 최신 모델에서 입증된 실용적인 학습 트릭들을 제시하여 장기 호흡 능력을 향상시키는 방법을 설명합니다.
핵심 포인트
- 장기 작업 실패는 단순한 프롬프트 문제가 아닌 시스템적 문제입니다.
- Markovian State Drift, Zero-Gradient Trap 등의 문제점을 해결해야 합니다.
- 75% 규칙이나 CISPO 같은 트릭으로 학습 효율과 안정성을 높일 수 있습니다.
- 실제 에이전트 하네스를 통한 학습이 중요하며, Polar Proxy가 유용합니다.
거의 모든 최신 언어 모델은 두 단계 데모에서는 인상적으로 보입니다. 데이터베이스를 확인하거나 문서를 요약하라고 요청하면, 올바른 도구를 호출하고 답변을 형식화하며 자율적인 엔지니어처럼 보입니다.
하지만 그 동일한 모델에게 30단계 또는 50단계의 워크플로우를 완료하도록 요청하는 순간, 이 환상은 깨집니다. 예를 들어, 실패한 Kubernetes 클러스진 진단, 다중 파일 풀 리퀘스트 탐색, 또는 48시간 산업 시뮬레이션 실행 등이 있습니다.
10단계쯤에서 에이전트는 터미널 명령어에 사소한 오타를 내고, 15단계쯤에서는 혼란스러운 오류 메시지를 잘못 해석합니다. 25단계쯤에는 원래 계획을 잊어버리고 자신의 터미널 히스토리와 논쟁하기 시작합니다. 35단계쯤에는 컨텍스트 창이 수천 줄의 노이즈가 많은 stderr 라인으로 넘쳐흐르며, 실행은 값비싼 루프에서 충돌합니다.
이러한 실패는 단순히 더 큰 시스템 프롬프트를 추가한다고 해결되지 않습니다. 이는 에이전트가 탐색하고, 실수로부터 학습하며, 강화학습 (RL) 신호를 받는 방식에 대한 시스템 문제입니다.
본 가이드에서는 다중 턴 에이전트가 왜 무너지는지, 표준 RL 알고리즘이 아무것도 배우지 못하면서 수천 GPU 시간을 소모하는 이유, 그리고 최근의 최첨단 추론 모델(예: MiniMax-M1 및 DeepSeek-R1)에서 입증된, 취약한 단일 턴 모델을 신뢰할 수 있는 장기 호흡 에이전트로 전환시키는 실용적인 트릭들을 분석합니다.
시작하기
단일 턴(single-turn) 벤치마크가 왜 잘못되었는지, 표준 GRPO 정책 업데이트가 장기 작업에서 왜 학습을 거의 발생시키지 못하는지, 75% 통과율 규칙이 GPU 학습 비용을 절반으로 줄이는 방법, 부드러운 기울기 클리핑(CISPO)이 의심의 말을 아끼는 방법, 그리고 취약한 모의 환경 구축 없이 실제 에이전트 하네스(agent harnesses)를 통해 학습하는 방법을 알아봅니다.
- 호라이즌 (T): 에이전트가 작업을 완료하기 위해 수행하는 순차적인 상호작용 턴(행동 및 도구 응답)의 수입니다.
- 마르코프 상태 표류 (Markovian State Drift): 초기에 발생한 실수가 환경을 익숙하지 않고 손상된 상태로 남겨두어, 이후 행동들이 훨씬 더 높은 비율로 실패하게 만드는 현상입니다.
- 제로 기울기 함정 (Zero-Gradient Trap): 학습 그룹 내의 모든 롤아웃(rollouts)이 완전히 실패하거나(0/8) 쉽게 성공하여(8/8), 모델을 업데이트할 수 있는 수학적 이득(advantage)이 '0'이 되는 상황입니다.
- 75% 규칙 (The 75% Rule): 모델이 작업을 75% 이상의 비율로 해결하면 해당 작업을 제거하는 동적 커리큘럼 트릭으로, 최대 50%의 롤아웃 컴퓨팅을 절약해 줍니다.
- CISPO: 중요도 샘플링 가중치(importance-sampling weights)를 토큰을 삭제하는 대신 클리핑하여, 'Wait'나 'Let me verify'와 같은 희귀한 탐색 토큰이 기울기(gradient)를 유지하도록 하는 RL 목적 함수입니다.
- 게이트드 보상 (Gated Rewards): 답변이 어떤 품질 점수를 받기 전에 통과해야 하는 이진(binary) 패스/실패 검사(엄격한 JSON 형식, 대화형 잡담 없음)입니다.
- 극성 프록시 (Polar Proxy): 실제 에이전트 래퍼(예: Claude Code 또는 mini-SWE-agent)와 모델 간의 도구 트래픽을 학습 중에 기록하는 비침습적인 프록시입니다.
1. 스텝-20 절벽: 실무에서 에이전트가 고장 나는 이유
에이전트는 왜 장기 호라이즌(long horizons)에서 실패할까요? 기본적인 수학은 간단해 보입니다. 만약 에이전트가 단일 턴마다 올바른 도구 호출을 할 확률이 95%라면, 연속으로 20번의 턴을 맞힐 확률은 다음과 같습니다:
0.95²⁰ ≈ 35.8%
만약 50 스텝이라면, 그 확률은 **7.7%**로 떨어집니다. 이는 단일 단계 정확도가 겉보기에는 높아 보이는 95%라 할지라도, 10번 중 9번 이상이 실패한다는 것을 의미합니다.

만약 모든 단계가 독립적이라면, 성공 확률은 (성공률)^단계 수와 같습니다: 단계당 95%의 성공률이면 20턴에서는 35.8%, 50턴에서는 7.7%를 남깁니다. 실제 환경은 더 나쁩니다.
하지만 실제 소프트웨어 엔지니어링 및 산업 환경은 이 교과서 공식보다 훨씬 더 나쁩니다. 단계들은 독립적인 동전 던지기가 아닙니다. 그것들은 환경 상태에 의해 연결되어 있습니다:
- 도미노 효과: 6단계에서 에이전트가 bash 명령어에 유효하지 않은 플래그를 전달하거나 필요한 lockfile을 삭제합니다.
- 낯선 영역 진입: 시스템이 예상치 못한 오류 트레이스백이나 exit code 127을 반환합니다. 기본 모델(base models)은 대부분 깨끗하고 성공적인 튜토리얼로 학습되었기 때문에, 이 정확히 고장 난 상태를 본 적이 거의 없습니다.
- 환각 나선 (Hallucination Spiral): 에이전트는 한 발 물러서서
git status를 실행하거나 파일 시스템을 검사하는 대신, 변명을 지어내고, 실수(mistake)를 수정하기 위해 더 복잡한 명령을 시도하며, 순환적인 오류 루프를 만듭니다.
실제로는 에이전트가 처리되지 않은 오류(unhandled error)를 한 번 범하면, 바로 다음 단계에서 두 번째 오류를 범할 확률이 5%에서 60% 이상으로 급증합니다. 이것이 장기 지평(long-horizon) 작업이 기하급수적인 절벽에서 실패하는 이유입니다.
2. 제로 그래디언트 함정 (The Zero-Gradient Trap): 왜 에이전트 구동 과정의 90%가 아무것도 학습하지 못하는가
팀들이 표준 강화학습(reinforcement learning) (예: GRPO 또는 PPO)을 적용하여 이를 해결하려고 할 때, 즉시 벽에 부딪힙니다: 콜드 스타트 문제(cold-start problem).
강화학습은 동일한 문제에 대한 여러 시도(rollouts)를 비교함으로써 작동합니다. 평균보다 점수가 높은 시도는 강화되고; 점수가 낮은 시도는 억제됩니다:
| Task Difficulty | Rollout Outcome (8회 시도) | 그룹 평균 | 이점 차이 | 모델이 학습하는 것 |
|---|---|---|---|---|
| 너무 어려움 (50단계) | [0, 0, 0, 0, 0, 0, 0, 0] | 0.0 | 모두 0.0 | 그래디언트가 없음. GPU 시간을 100% 낭비함. |
| ... | ||||
| If a task is too hard and the model never succeeds by chance, all attempts get a score of 0. The difference between attempts is zero, the gradient is zero, and the model updates nothing. You can burn tens of thousands of dollars on H100 clusters, but the model will not take a single step forward. |

GRPO는 동일한 태스크에 대한 8회 시도를 비교합니다. 모든 시도가 실패하거나 모두 성공하면, 모든 이점(advantage)이 0이 되어 업데이트를 통해 아무것도 학습하지 못하며; 오직 혼합된 그룹만이 신호(signal)를 전달합니다.
3. 75% 규칙: 동적 난이도 필터링
최근 온라인 RL (Reinforcement Learning) 문헌에서 가장 실용적인 엔지니어링 통찰력 중 하나는 **75% 성공률 차단(pass-rate cutoff)**입니다.
훈련이 진행됨에 따라, 한때 어려웠던 태스크들이 쉬워집니다. 모델이 100단계에서 8번 시도 중 1번 해결했던 코딩 문제가 1,000단계가 되면 8번 모두 해결할 수 있게 될 수도 있습니다. 모델이 어떤 태스크를 매번 성공하게 되면, 그 태스크는 더 이상 아무것도 가르쳐주지 못합니다.
트릭 작동 방식:
- 각 훈련 단계 전에 현재 체크포인트(checkpoint)를 전체 태스크 풀에 걸쳐 실행하고 성공률을 측정합니다 (예: 8개 샘플에 걸쳐).
- 75% 이상 해결된 모든 태스크를 필터링합니다: 모델이 이미 마스터했기 때문입니다. 이를 훈련 배치에 유지하는 것은 그래디언트를 희석시키고 콜아웃(rollout) 연산만 낭비할 뿐입니다.
- 20%–75%의 어려움 구간에 집중합니다: 이곳에서 성공적인 시도와 실패한 시도 간의 분산(variance)이 가장 높으며, 가장 강력한 강화학습 (RL) 신호를 제공합니다.
실제로 이 간단한 자동 필터는 롤아웃 추론(rollout inference) 컴퓨팅을 50% 이상 절감합니다. 모델이 이미 알고 있는 작업에 대한 답변을 생성하는 데 GPU 사이클을 낭비하는 대신, 모든 컴퓨팅 비용은 역량의 최전선(capability frontier)을 밀어붙이는 데 사용됩니다.

8번의 시도 그룹에 적어도 하나의 성공과 하나의 실패가 포함될 확률. 20% 미만이거나 75%를 초과하는 작업은 대부분의 롤아웃을 낭비하므로, 75% 필터가 효과적입니다.
4. CISPO: 추론이 작동하게 만드는 '회의적인 단어' 보존하기
표준 강화학습(RL) 알고리즘(PPO나 GRPO와 같은)은 수학적인 안전 클램프를 강제합니다. 즉, 토큰의 확률이 한 단계에서 너무 급격하게 변하면, 모델이 불안정해지는 것을 막기 위해 알고리즘이 기울기(gradient)를 0으로 잘라냅니다(clips).
표준 텍스트 생성에는 이 클리핑이 괜찮습니다. 하지만 다중 턴 추론 에이전트에게는 이것이 조용한 재앙을 초래합니다:
추론 모델에서 가장 가치 있는 토큰은 '회의적인 단어'입니다: “잠시만요, 종료 코드를 확인해 보겠습니다…”, “하지만 파일이 생성되지 않았습니다…”, 또는 “기다리세요, 이것은 2단계와 모순됩니다.”
SFT(Supervised Fine-Tuning) 모델은 이런 토큰을 거의 생성하지 못합니다. 이들은 아주 작은 확률(예: 0.001%)에서 시작합니다. 그런데 강화학습이 주저하며 중간 출력을 확인하는 것이 더 높은 보상으로 이어진다는 것을 발견하기 시작하면, 이러한 토큰의 확률이 빠르게 상승하기 시작합니다.
GRPO 함정: 이러한 토큰은 가장 큰 백분율 변화를 겪기 때문에, 표준 GRPO는 이를 이상치(outliers)로 간주하고 그 기울기를 0으로 잘라냅니다. 모델은 스스로 의심하는 법을 배우지 못하게 됩니다.
CISPO 수정(Fix): 경계 밖 토큰을 0으로 클리핑하는 대신, CISPO 목적 함수(MiniMax-M1에서 도입)는 업데이트가 아닌 중요도 샘플링 가중치(importance-sampling weight)를 클리핑합니다. 이 가중치는 상한선이 설정되고 상수처럼 취급되지만, 모든 토큰은 여전히 기울기(gradient)에 기여합니다. 훈련이 안정적으로 유지되며, 희귀 탐색 토큰에 대한 학습 신호가 절대 꺼지지 않습니다. 그 결과: 에이전트는 바닐라 GRPO보다 훨씬 빠르게 스스로 오류를 수정하고 되돌아가는 법을 배웁니다.

PPO/GRPO 클리핑은 확률 비율이 신뢰 영역(trust region)을 벗어나는 토큰을 떨어뜨리는데, 이는 'Wait'와 같은 희귀 단어에 먼저 영향을 미칩니다. CISPO는 중요도 가중치를 제한하지만 모든 토큰의 기울기는 유지합니다.
5. 게이티드 보상(Gated Rewards): 점수 부여 전 이진 필터링
다중 턴 에이전트를 구축할 때 흔히 빠지는 함정은 단일 혼합된 보상 점수를 사용하는 것입니다. 모델에게 부분적으로 작동하는 답변에 대해 0.7점, 멋진 설명 형식에 대해 0.2점, 공손함에 대해 0.1점을 부여하는 식입니다.
모델들은 이러한 혼합된 점수들을 무자비하게 악용합니다. 코딩 및 함수 호출(function-calling) 환경에서 소프트 스코어(soft scores)로 훈련된 모델은 빠르게 치명적인 습관을 익히게 됩니다: 구조화된 출력 주변의 대화체 잡담.
원시적이고 파싱 가능한 JSON을 내보내는 대신:
{
⚠️ [IMG:N]
* **게이트 1 (엄격한 형식 지정):** 모델이 페이로드 외에 대화식 잡담 없이 엄격하게 유효한 JSON/코드를 출력했는가? 만약 아니오(NO) → **보상 = 0**. 즉시 중단한다.
* **게이트 2 (언어 및 환경 불변성):** 모델이 문장 중간에 언어를 전환하거나 금지된 명령을 실행했는가? 만약 그렇다면(YES) → **보상 = 0**. 즉시 중단한다.
* **게이트 3 (실행 검증):** 단위 테스트 또는 환경 전환이 성공했는가? 게이트 1과 게이트 2를 통과한 출력만 작업 성능에 대해 평가된다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기