핵심 요약
기존 LLM 학습에 사용되는 정적 코드 데이터는 결과물만 보여줄 뿐, 개발자가 코드를 작성하며 거치는 복잡한 사고 과정을 담지 못한다. 이 논문은 멀티 에이전트 시뮬레이션을 통해 코드의 생성 과정을 역으로 재구성함으로써, 모델이 코드의 '결과'뿐 아니라 '이유'와 '방법'을 학습하게 하여 복잡한 소프트웨어 엔지니어링 능력을 획기적으로 향상시킨다.
왜 중요한가
기존 LLM 학습에 사용되는 정적 코드 데이터는 결과물만 보여줄 뿐, 개발자가 코드를 작성하며 거치는 복잡한 사고 과정을 담지 못한다. 이 논문은 멀티 에이전트 시뮬레이션을 통해 코드의 생성 과정을 역으로 재구성함으로써, 모델이 코드의 '결과'뿐 아니라 '이유'와 '방법'을 학습하게 하여 복잡한 소프트웨어 엔지니어링 능력을 획기적으로 향상시킨다.
핵심 기여
재구성을 통한 이해(Understanding via Reconstruction) 패러다임 도입
정적 소프트웨어 저장소를 기획, 추론, 디버깅 단계가 포함된 동적인 에이전트 궤적으로 역공학하여 더 풍부한 지도 학습 신호를 제공하는 새로운 사전 학습 방식을 도입했다.
멀티 에이전트 기반의 궤적 합성 프레임워크 개발
메인 에이전트가 프로젝트 기획을 담당하고 서브 에이전트가 개별 파일을 구현하는 구조를 통해, 파일 계층 구조와 의존성 그래프를 반영한 고충실도 개발 프로세스 데이터를 생성했다.
탐색 기반 Chain-of-Thought(CoT) 최적화 기술 적용
생성된 사고 과정(CoT)의 품질을 높이기 위해, 정답 코드의 당혹도(Perplexity)를 최소화하는 방향으로 사고 단계를 반복적으로 정제하는 알고리즘을 구현했다.
Llama-3-8B 성능의 전방위적 향상 입증
재구성된 궤적으로 사전 학습을 진행한 결과, 긴 문맥 이해(Ruler/Helmet), 코딩(HumanEval), 추론 및 에이전트 능력(APTBench) 등 다양한 벤치마크에서 기존 방식 대비 우수한 성능을 보였다.
핵심 아이디어 이해하기
기존의 코드 사전 학습은 대규모 코드 저장소의 최종 상태(Static Code)를 다음 토큰 예측(Next-token Prediction) 방식으로 학습한다. 이는 마치 수학 문제의 풀이 과정 없이 정답만 외우게 하는 것과 같아서, 모델이 코드의 표면적인 패턴은 잘 흉내 내지만 복잡한 시스템 설계나 장기적인 논리 추론에는 한계를 보였다. 이 논문은 '재구성을 통한 이해'라는 원리를 도입하여 완성된 코드 저장소로부터 그 코드가 만들어지기까지의 '보이지 않는 사고 과정'을 역으로 추적한다. 구체적으로는 프로젝트의 요구사항 분석, 파일 간 의존성 파악, 함수 정의, 그리고 실제 구현에 이르는 에이전트의 행동 궤적을 생성하여 학습 데이터로 활용했다. 특히 사고 과정의 논리적 엄밀함을 확보하기 위해 탐색 기반 최적화를 사용했다. 생성된 사고 과정이 실제 정답 코드를 얼마나 잘 설명하는지를 확률적으로 계산하고, 더 높은 확률을 보장하는 사고 단계로 교체함으로써 모델이 단순한 텍스트 생성을 넘어 실제 개발자의 논리적 흐름을 내재화하도록 유도했다.
방법론
멀티 에이전트 궤적 큐레이션(Multi-Agent Trajectory Curation) 단계를 통해 정적 저장소를 동적 데이터로 변환했다. 메인 에이전트는 전체 저장소의 구조를 파악하여 구현 계획을 세우고, 서브 에이전트는 개별 파일의 클래스와 함수를 구현했다. 이 과정에서 실제 저장소의 파일 계층 구조와 의존성 그래프 정보를 주입하여 시뮬레이션이 실제 코드와 괴리되지 않도록 고정(Grounding)했다. 사고 과정 최적화(LongCoT Optimization)를 위해 탐색 알고리즘을 도입했다. 초기 생성된 사고 과정 z가 정답 코드 x를 생성할 조건부 로그 확률 log p(x|z)를 최대화하는 것을 목표로 했다. 사고 단계를 z1, ..., zn으로 분해한 뒤, 각 단계마다 여러 후보군을 샘플링하고 정답 코드의 Perplexity(PPL)를 가장 낮추는 후보로 영구 업데이트하는 과정을 3회 반복했다. 최종적으로 합성된 에이전트 궤적을 하나의 연속된 문서로 평탄화(Trajectory Flattening)하여 사전 학습에 사용했다. 이때 모델이 도구 응답(Observations)을 단순히 암기하는 것을 방지하기 위해, 사고(Think)와 행동(Action) 토큰에 대해서만 손실(Loss)을 계산하는 타겟 손실 마스킹(Targeted Loss Masking) 기법을 적용하여 인과적 논리 학습에 집중하게 했다.
주요 결과
긴 문맥 이해 성능 평가인 Ruler와 Helmet 벤치마크에서 Llama-3-8B 모델은 기존의 평탄화된 코드 학습 방식(Raw-Repo)보다 일관되게 높은 점수를 기록했다. 특히 64k 문맥 윈도우에서 Ruler 평균 점수 61.80을 기록하며, 정적 코드 학습(61.00) 및 외부 베이스라인인 Prolong(57.10)을 상회하는 견고함을 보였다. 코딩 및 일반 추론 능력에서도 유의미한 향상이 확인됐다. HumanEval에서 37.20점을 기록하여 Raw-Repo(34.76) 대비 높은 성능을 보였으며, LongCodeBench-32k에서도 36.46점으로 우위를 점했다. 이는 코드 생성 '과정'을 학습하는 것이 단순 암기보다 복잡한 작업 수행에 더 효과적임을 시사한다. 에이전트 능력을 측정하는 APTBench 결과, 기획 중심의 Issue-Fix 카테고리에서 34.84%의 정확도를 기록하며 정적 데이터 학습(33.72%)보다 우수한 성과를 거뒀다. 또한 사고 과정 최적화(Search)를 거친 모델이 환경 설정(Env-Setup) 등 세밀한 구현과 디버깅 논리가 필요한 작업에서 더 높은 정밀도를 보였다.
기술 상세
본 연구는 정적 데이터의 정보 밀도를 높이기 위해 '역공학(Reverse-engineering)' 개념을 사전 학습 데이터 엔지니어링에 도입했다. 300k개의 GitHub 저장소를 필터링하여 40억 개의 토큰으로 구성된 합성 에이전트 궤적 데이터셋을 구축했다. 아키텍처 측면에서는 메인 에이전트와 서브 에이전트 간의 계층적 상호작용을 설계했다. 메인 에이전트는 프로젝트 요구사항 생성 및 구현 순서 결정을 담당하며, 서브 에이전트는 추상 구문 트리(AST) 분석 정보를 바탕으로 클래스와 함수 정의를 시뮬레이션한다. 사고 과정 최적화의 핵심은 조건부 확률 극대화 수식을 통해 사고 단계가 정답 코드의 생성 확률을 높이도록 유도하는 것이다. 이는 학습의 불안정성을 피하기 위해 추론 시점의 탐색(Inference-time search) 전략을 선택하여 사고 단계를 반복적으로 정제했다. 학습 과정에서는 Llama-3-8B-Instruct를 베이스로 200억 개의 토큰을 추가 학습시켰으며, 64k의 긴 문맥 윈도우를 유지했다. 데이터 혼합 비율은 일반 도메인 70%, 저장소 관련 데이터 30%로 구성하여 범용 추론 능력을 유지하면서 전문 코딩 능력을 강화했다.
한계점
합성된 궤적에 LLM의 잠재적인 환각(Hallucination)과 에이전트 워크플로에서 발생하는 노이즈 및 편향이 포함될 수 있음을 명시했다. 또한 사고 과정 최적화 과정에서 계산 비용이 발생하며, 정답 코드의 Perplexity에 의존하는 방식이 모든 도메인에서 최적의 사고 과정을 보장하지 않을 수 있다.
실무 활용
복잡한 소프트웨어 프로젝트의 구조를 이해하고 자율적으로 코드를 작성해야 하는 AI 코딩 에이전트 개발에 즉시 적용 가능한 데이터 구축 방법론이다.
- 기존 오픈소스 저장소를 활용한 고성능 코딩 전용 LLM의 추가 사전 학습(Continual Pre-training)
- 복잡한 파일 간 의존성을 고려해야 하는 대규모 리팩터링 자동화 도구 개발
- 개발자의 사고 흐름을 모사하여 더 논리적인 설명을 제공하는 코드 리뷰 시스템 구축
- 장기 문맥(Long-context) 처리가 필요한 소프트웨어 엔지니어링 에이전트의 추론 능력 강화
코드 공개 여부: 미확인
키워드
코드 예제
def add(a, b):
return a + b서브 에이전트가 Read 도구를 통해 operations.py 파일의 내용을 읽어오는 예시
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.