핵심 요약
기존 LLM 코딩 에이전트는 코드를 모두 생성한 뒤에야 실행을 시작하여 사용자 대기 시간이 길었다. 이 논문은 코드가 생성되는 도중에 실행을 병렬로 진행하는 패러다임을 제시하여 대기 시간을 획기적으로 줄이고, 오류 발생 시 즉시 중단하여 추론 비용을 절감한다.
왜 중요한가
기존 LLM 코딩 에이전트는 코드를 모두 생성한 뒤에야 실행을 시작하여 사용자 대기 시간이 길었다. 이 논문은 코드가 생성되는 도중에 실행을 병렬로 진행하는 패러다임을 제시하여 대기 시간을 획기적으로 줄이고, 오류 발생 시 즉시 중단하여 추론 비용을 절감한다.
핵심 기여
병렬 실행 패러다임 정식화
LLM 코드 생성을 생성, 감지, 실행의 3단계 스트리밍 파이프라인으로 모델링하고, 지연 시간 단축 효과를 정량화할 수 있는 이론적 경계 수식을 도출했다.
Eager 프레임워크 구현
AST 기반 청킹, 동적 배칭, 게이트 실행 및 조기 오류 중단 기능을 갖춘 실질적인 병렬 실행 시스템을 개발하여 파이썬 환경에서 검증했다.
지연 시간 및 비용 대폭 절감
7개 LLM과 4개 벤치마크 실험 결과, 비중첩 실행 지연 시간을 최대 99.9% 줄였으며 전체 종단 간 지연 시간을 최대 55% 단축했다.
코드 수정 성공률 향상
오류 발생 시 즉각적인 피드백을 제공함으로써, 잘못된 코드에 모델이 고착되는 현상을 방지하여 데이터 중심 작업에서 수정 성공률을 최대 44%p 높였다.
핵심 아이디어 이해하기
LLM의 코드 생성은 토큰을 하나씩 순차적으로 내뱉는 Autoregressive 방식이다. 기존 시스템은 이 과정이 모두 끝날 때까지 기다렸다가 실행하는 '직렬 방식'을 사용하는데, 이는 생성 속도가 실행 속도보다 훨씬 느린 현재 환경에서 막대한 유휴 시간을 발생시킨다. Eager는 LLM이 토큰을 생성하는 동안 이미 생성된 부분 코드를 실시간으로 분석하여 실행 가능한 단위로 쪼개고, 이를 인터프리터에 즉시 전달하여 실행한다.
이 원리는 파이썬과 같은 인터프리터 언어가 코드 전체를 컴파일하지 않고도 문장 단위로 실행 가능하다는 점에 착안했다. 생성과 실행이 시간상으로 겹치게 되면, 사용자가 체감하는 전체 대기 시간은 '생성 시간 + 전체 실행 시간'이 아니라 '생성 시간 + 마지막 조각의 실행 시간'으로 줄어든다. 결과적으로 실행에 걸리는 대부분의 시간이 생성 시간 뒤로 숨겨지게 된다.
또한, 코드에 오류가 있을 경우 끝까지 생성할 필요 없이 에러가 난 즉시 생성을 중단한다. 이는 불필요한 토큰 생성 비용을 아낄 뿐만 아니라, 모델에게 에러 발생 지점까지만의 깨끗한 컨텍스트를 제공하여 이후 코드 수정 과정에서 더 정확한 정답을 유도하는 효과를 낸다.
방법론
Eager는 생성(Producer)과 실행(Consumer)이 맞물린 파이프라인 구조를 가진다. LLM이 토큰을 생성하면 AST 기반 청커(Chunker)가 이를 버퍼에 담고 실시간으로 파싱을 시도한다. [토큰 스트림 입력 → AST 파싱 시도 → 최상위 문장 경계 식별 → 실행 가능 청크 출력] 과정을 거치며, 파이썬의 들여쓰기 모호성을 해결하기 위해 다음 토큰을 하나 더 확인하는 룩어헤드(Lookahead) 전략을 사용한다.
감지된 청크는 대기열에 쌓이며, 실행기는 동적 배칭(Dynamic Batching)을 통해 효율을 극대화한다. 실행기가 이전 작업을 수행하는 동안 쌓인 여러 청크를 하나의 배치로 묶어 실행함으로써, 인터프리터 호출 시 발생하는 오버헤드를 줄인다. 또한 함수 정의와 같이 즉각적인 연산 결과가 없는 청크는 실행을 미루고 다음 청크와 합쳐서 처리하는 게이트 실행(Gated Execution) 정책을 적용한다.
실행 과정에서 런타임 에러가 발생하면 즉시 중단 신호를 LLM에 보낸다. [에러 발생 청크 실행 → 예외 감지 → 생성 중단 신호 전송 → 에러 메시지 반환] 순서로 동작하며, 이를 통해 에러 이후의 무의미한 코드 생성을 차단한다. 모든 실행은 영구적 세션(Persistent Session) 내에서 이루어져 청크 간 변수와 상태가 유지된다.
주요 결과
모의 토큰 스트림 실험에서 Eager는 실행 시간의 83~100%를 생성 시간 뒤로 숨기는 데 성공했다. 특히 200 TPS의 빠른 생성 속도 환경에서도 전체 지연 시간을 최대 35% 절감하는 강건함을 보였다. 실제 LLM 출력 기반 실험에서는 에러가 없는 경우 비중첩 실행 지연 시간(NEL)을 거의 0ms로 줄였으며, Gemini-3.1 모델 기준 전체 지연 시간을 37.3% 단축했다.
에러가 발생하는 시나리오에서는 절감 효과가 더욱 컸다. DeepSeek-R1 모델은 PandasPlotBench 벤치마크에서 지연 시간을 10326ms에서 4619ms로 55.3% 줄였다. 이는 조기 중단 메커니즘이 에러 이후에 발생했을 수 있는 긴 코드 생성 시간을 완전히 제거했기 때문이다.
코드 수정(Repair) 성능 면에서도 유의미한 개선이 확인됐다. 데이터 중심 벤치마크인 DSBench에서 GPT-4o-mini의 수정 성공률은 기존 32.3%에서 76.6%로 44.3%p 상승했다. 이는 에러 발생 이후의 잘못된 코드가 모델의 사고를 방해(Anchoring)하는 것을 방지하고, 정확한 실패 시점의 피드백을 제공했기 때문으로 분석됐다.
기술 상세
본 연구는 병렬 실행의 지연 시간을 T_parallel = max(t_g,i + delta_i + sum(T_setup + T_exe,j))와 같은 폐쇄형 수식으로 정의했다. 여기서 t_g,i는 i번째 청크의 생성 완료 시간, delta_i는 감지 지연, T_setup은 실행 오버헤드이다. 이 수식을 통해 생성 속도가 실행 속도보다 느린 '생성 주도 영역(Generation-dominated regime)'에서 병렬화 이득이 극대화됨을 이론적으로 증명했다.
구현 측면에서는 파이썬의 AST 모듈을 활용하여 증분적 파싱을 수행한다. 특히 함수 정의나 루프 블록이 끝났는지 판단하기 위해, 다음 토큰이 현재 블록보다 들여쓰기가 적거나 새로운 최상위 문장이 시작되는지를 확인하는 휴리스틱을 적용했다. 이는 인터프리터 언어의 동적 특성을 시스템 레벨의 스케줄링 최적화로 연결한 사례이다.
실험 환경은 로컬, Docker 컨테이너, Open Interpreter 샌드박스 등 세 가지를 구축하여 범용성을 검증했다. 각 환경에서 CPU 격리(taskset) 및 핀닝을 통해 측정의 신뢰성을 확보했으며, 영구적 REPL 서브프로세스를 통해 청크 간 상태 전이를 관리했다. 이는 멀티턴 에이전트 워크플로에서 상태 유지가 필수적인 데이터 분석 작업에 최적화된 구조이다.
한계점
현재 구현은 파이썬에 집중되어 있어 자바스크립트나 R과 같은 다른 인터프리터 언어로의 확장이 필요하다. 또한 LLM이 병렬 실행 환경을 인지하지 못한 채 코드를 생성하므로, 모델이 더 '실행 가능한 단위'로 코드를 구성하도록 유도하는 프롬프팅이나 학습 기법에 대한 연구가 추가로 요구된다.
실무 활용
LLM 기반 코딩 에이전트, 데이터 분석 챗봇, 자동화된 코드 수정 도구의 응답 속도와 정확도를 동시에 개선하는 데 즉시 활용 가능하다.
- 실시간 데이터 시각화 에이전트의 응답 대기 시간 단축
- 자율 코딩 에이전트의 런타임 오류 조기 감지 및 자동 수정 루프 최적화
- 인터랙티브 파이썬 노트북 환경에서의 스트리밍 코드 실행 및 즉각적 피드백 제공
코드 공개 여부: 공개
코드 저장소 보기키워드
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.