코드 개발 과정을 역재구성한 LLM 사전학습 혁신
정적 코드 저장소만을 학습하던 기존 LLM 사전학습 방식의 한계를 지적하고, 저장소의 생성 과정을 역재구성해 에이전트의 계획·디버깅·수정 단계들을 합성한 데이터로 활용한다. 다중 에이전트 시뮬레이션과 구조적 그래운딩, 검색 기반 CoT 최적화를 결합해 만든 합성 궤적을 Llama‑3‑8B에 지속적 사전학습시킨 결과, 장기 컨텍스트 이해·코드 작성·에이전시 능력 전반에서 현저한 성능 향상을 달성하였다.
저자: Zhiyuan Zeng, Yichi Zhang, Yong Shan
본 논문은 대형 언어 모델(LLM)이 복잡한 소프트웨어 개발 작업을 수행할 때 직면하는 근본적인 한계를 진단하고, 이를 극복하기 위한 새로운 데이터‑중심 학습 프레임워크를 제시한다. 기존의 사전학습은 공개된 코드 저장소와 같은 정적 코드만을 사용해 모델이 다음 토큰을 예측하도록 훈련한다. 그러나 소프트웨어는 단순히 최종 코드의 집합이 아니라, 요구 분석, 설계, 구현, 디버깅, 테스트, 리팩터링 등 다단계의 인지·행동 과정을 포함한다. 이러한 중간 단계가 사라진 상태에서 모델은 “목적지”만을 학습하게 되며, 장기적인 논리적 추론 능력이 부족해 복잡한 프로젝트를 이해하거나 생성하는 데 한계가 있다.
이를 해결하고자 저자들은 “이해를 통한 재구성(understanding via reconstruction)”이라는 패러다임을 도입한다. 핵심 아이디어는 정적 저장소를 ‘정답’으로 삼고, 그 정답에 도달하기 위해 인간 개발자가 거쳤을 법한 일련의 사고·행동 궤적을 역으로 생성하는 것이다. 이를 위해 두 단계의 파이프라인을 설계하였다.
첫 번째 단계는 다중‑에이전트 시뮬레이션이다. 메인 에이전트는 전체 프로젝트의 요구사항을 추출하고 파일‑단위 구현 순서를 계획한다. 이후 각 파일에 대해 서브 에이전트가 “Think‑Read‑Write” 루프를 수행한다. Think 단계에서는 파일 구조와 로직을 설계하고, Read 툴을 통해 다른 파일의 실제 내용을 조회한다(예: 의존 파일의 함수 정의). 마지막 Write 단계에서는 생성된 코드를 실제 파일에 기록한다. 이 과정에서 시뮬레이션이 현실과 동떨어지지 않도록, 파일 트리, 의존성 그래프, AST 기반 구조 정보 등 정적 메타데이터를 사전에 추출해 에이전트에게 제공한다. 또한 Read 툴의 응답과 Write 툴의 최종 결과를 실제 저장소 내용으로 교체함으로써, 사고 흐름은 LLM이 생성하고 행동 결과는 실제 코드와 일치하도록 보장한다.
두 번째 단계는 CoT(Chain‑of‑Thought) 최적화이다. 초기 시뮬레이션에서 생성된 사고 단계(z)는 반드시 최적이 아니다. 저자들은 “생성‑평가‑갱신” 루프를 통해 각 사고 단계마다 k개의 후보를 샘플링하고, 후보 전체를 적용했을 때 목표 코드(x)의 퍼플렉시티(log p(x|z))를 측정한다. 퍼플렉시티가 감소하면 해당 후보를 영구적으로 채택한다. 이 검색 기반 최적화는 RL 기반 보상 학습보다 구현이 간단하고, 불안정성을 크게 줄인다.
합성된 에이전트 궤적 데이터셋은 Llama‑3‑8B 모델에 지속적 사전학습(continuous pre‑training) 형태로 투입된다. 저자들은 기존 코드‑전용 사전학습 데이터와 비교해, 재구성된 궤적 데이터로 학습한 모델이 장기 컨텍스트 이해(32k 토큰 이상), 코드 생성 정확도(HumanEval, MBPP), 그리고 멀티‑스텝 툴 사용이 요구되는 에이전시 작업에서 모두 평균 4~7%p의 절대적 성능 향상을 보였다고 보고한다. 특히 복잡한 디버깅·리팩터링 시나리오에서 기존 모델이 실패하던 부분을 성공적으로 해결했으며, 모델이 코드의 ‘왜’를 이해하고 ‘어떻게’ 생성해야 하는지를 학습했다는 점을 강조한다.
논문은 또한 한계와 향후 과제도 제시한다. 합성 궤적은 여전히 LLM의 hallucination에 의존하므로, 완전한 사실성 보장은 어렵다. 대규모 저장소에 대해 파일 트리·의존성·AST 정보를 추출·정제하는 비용이 높으며, 현재 실험은 주로 Python 기반 프로젝트에 국한되어 있다. 다중 언어·프레임워크에 대한 일반화와, 보다 정교한 인간‑인증 단계 도입이 필요하다.
결론적으로, 정적 코드만이 아니라 그 생성 과정을 학습하는 데이터‑중심 접근이 LLM의 소프트웨어 엔지니어링 능력을 크게 확장할 수 있음을 실험적으로 입증한다. 이 연구는 향후 LLM 기반 코딩 도구가 단순 코드 자동완성을 넘어, 인간 개발자와 동등한 수준의 설계·디버깅·문제 해결 능력을 갖추는 데 중요한 이정표가 될 것으로 기대된다.
원본 논문
고화질 논문을 불러오는 중입니다...
댓글 및 학술 토론
Loading comments...
의견 남기기