AI Sparkup

복잡한 AI 세상을 읽는 힘 ⚡

AI 에이전트 성능 혁신: 병렬 도구 호출로 속도 5배 단축하기

AI 에이전트의 고질적인 속도 문제를 해결하는 핵심 기술인 병렬 도구 호출이 주목받고 있습니다. 파일을 하나씩 읽어 몇 분 걸리던 작업을 몇 초로 단축시키는 이 기술의 원리와 실제 구현 사례를 통해 AI 도구 개발의 새로운 가능성을 탐구해보겠습니다.

Continue 병렬 도구 호출 시연 화면
Continue의 병렬 도구 호출 기능이 실제 작동하는 모습 (출처: Continue 블로그)

AI 에이전트의 보편적 문제: 답답한 속도

AI 에이전트를 실제로 사용해본 개발자라면 누구나 경험했을 문제입니다. “이 프로젝트의 파일들을 분석해줘”라고 요청하면 에이전트는 파일을 하나씩 읽기 시작합니다. 첫 번째 파일을 읽고, 응답을 받고, 그다음 두 번째 파일을 읽고… 마치 웹브라우저에서 탭을 하나씩 여는 사람을 보는 것 같습니다.

오픈소스 AI 코딩 어시스턴트 Continue의 개발팀이 최근 공개한 사례 연구는 이 문제에 대한 구체적인 해결책을 제시합니다. Continue의 소프트웨어 엔지니어 Patrick Erichsen은 자신의 블로그 포스트에서 이 문제를 생생하게 묘사했습니다. “몇 초면 끝날 작업이 몇 분으로 늘어지는 걸 지켜보는 고통”이라고 표현할 정도였죠.

실제로 기존 AI 에이전트의 작업 방식은 이랬습니다:

  1. AI: “파일 A를 읽고 싶어요”
  2. 시스템: 파일 A를 읽어서 내용 전달
  3. AI: “이제 파일 B를 읽고 싶어요”
  4. 시스템: 파일 B를 읽어서 내용 전달
  5. 이런 식으로 계속…

파일 5개를 읽으려면 5번의 왕복이 필요했습니다. 각 단계마다 네트워크 지연시간과 AI 모델의 추론 시간이 누적되니 전체 시간이 기하급수적으로 늘어났습니다.

해결책: 병렬 도구 호출의 등장

핵심 아이디어는 간단합니다. 많은 작업들이 서로 독립적이라는 점에 주목한 것입니다. 파일 여러 개를 읽는 작업은 특별한 순서가 필요하지 않습니다. 그렇다면 동시에 요청하면 되는 거죠.

여기서 중요한 변화는 AI 모델 자체가 똑똑해졌다는 점입니다. GPT-4, Claude, Gemini 같은 최신 모델들은 이제 “여러 작업을 한꺼번에 요청해도 된다”는 걸 스스로 판단할 수 있습니다.

기존에는 AI가 이렇게 했습니다:

  • “파일 A를 읽어주세요” (1번째 요청)
  • 결과를 받은 후 “파일 B를 읽어주세요” (2번째 요청)
  • 결과를 받은 후 “파일 C를 읽어주세요” (3번째 요청)

이제는 AI가 이렇게 합니다:

  • “파일 A, B, C를 모두 읽어주세요” (1번의 요청으로 끝)
병렬 처리는 여러 작업을 동시에 수행하여 전체 시간을 크게 단축시킵니다 (출처: Continue AI)

이 변화의 핵심은 AI 모델이 한 번의 응답에 여러 도구 호출을 포함시킬 수 있게 되었다는 점입니다. 시스템은 이 여러 요청을 동시에 처리하고 결과를 한꺼번에 돌려줍니다. 3번의 대화 턴이 필요했던 작업이 1번으로 줄어든 겁니다.

// 이전: 순차적 도구 호출
// 턴 1: read_file(fileA) → 응답
// 턴 2: read_file(fileB) → 응답  
// 턴 3: read_file(fileC) → 응답

// 이후: 병렬 도구 호출
// 턴 1: [read_file(fileA), read_file(fileB), read_file(fileC)] → 모든 응답

Continue 사례: 실제 구현의 도전과제

Patrick Erichsen이 Continue에서 병렬 도구 호출을 구현하면서 겪은 구체적인 도전과제들은 다른 AI 도구 개발자들에게 유용한 참고 자료가 됩니다.

메시지 구조 변경

기존 Continue는 한 번에 하나의 도구 호출만 처리하도록 설계되어 있었습니다. 전체 도구 호출 파이프라인을 다시 설계해야 했죠.

채팅 기록에서 toolCallState 하나만 저장하던 방식을 toolCallStates[] 배열로 바꿔서 여러 도구 호출을 동시에 처리할 수 있게 했습니다. 기존 기능과의 호환성도 유지해야 했기 때문에 신중한 설계가 필요했습니다.

실시간 업데이트 처리

AI 모델이 여러 도구 호출을 동시에 생성할 때 스트리밍 로직도 복잡해집니다. 각 도구 호출마다 독립적인 상태 머신을 만들어서 “생성 중” → “생성 완료” → “실행 완료” 단계를 개별적으로 관리해야 했습니다.

사용자 권한 관리

사용자는 각 도구 호출을 개별적으로 승인하거나 거부할 수 있어야 합니다. UI에서 “Continue가 read_file을 사용하려고 합니다”라는 메시지를 각 작업마다 명확하게 표시하고 개별 승인 버튼을 제공해야 했습니다.

실제 성능 향상: Continue 사례 분석

Continue에서 병렬 도구 호출을 적용한 결과는 인상적입니다. 특히 에이전트 모드에서 프로젝트 구조를 파악하기 위해 여러 파일을 훑어보는 상황에서 효과가 두드러졌습니다.

기존에 30초 이상 걸리던 파일 읽기 작업이 거의 즉시 완료됩니다. 성능 향상 정도는 동시에 처리할 수 있는 독립적 작업의 개수에 비례합니다. n개의 병렬 작업이 있다면 대략 n배의 속도 향상을 기대할 수 있습니다.

LangChain 블로그에서도 AI 에이전트 속도 개선 방법을 다루면서 병렬 처리를 핵심 전략 중 하나로 언급했습니다. 특히 다음과 같은 경우에 효과적이라고 설명합니다:

  • 여러 문서에서 정보 추출할 때
  • 보안 검사와 콘텐츠 생성을 동시에 진행할 때
  • 여러 AI 모델을 병렬로 호출해서 결과를 조합할 때

오픈소스 생태계에 미치는 영향

Continue가 오픈소스 프로젝트라는 점이 AI 개발 생태계에 중요한 의미를 갖습니다. 누구나 구현 방식을 확인하고 자신의 프로젝트에 적용할 수 있거든요. 실제로 Continue 팀은 GitHub에서 구체적인 구현 코드를 공개했습니다.

오픈소스 개발 커뮤니티를 상징하는 이미지
오픈소스로 공개된 병렬 도구 호출 기술은 AI 도구 생태계 전반에 긍정적 영향을 미칠 것으로 예상됩니다 (출처: Unsplash)

흥미로운 점은 이 기능이 OpenAI, Anthropic, Google 같은 대형 모델뿐만 아니라 다른 모델에서도 작동한다는 것입니다. 기업 방화벽 안에서 IBM Granite을 사용하든, 다른 모델을 사용하든 Continue가 이 기능을 제공합니다.

모델이 충분히 똑똑해서 여러 도구 호출을 포함한 응답을 생성할 수 있기만 하면 됩니다. 병렬 도구 호출은 이분법적인 문제가 아니라 모델의 지시 따르기 능력에 따른 연속적인 스펙트럼입니다.

GPT-4o나 Claude Sonnet 같은 고성능 모델들은 “이 5개 파일을 분석해줘”라는 요청을 받으면 자연스럽게 읽기 작업을 묶어서 처리합니다. 덜 강력한 모델들은 가끔 순차적으로 처리하지만, 병렬 도구 호출을 생성하는 경우 시스템이 이를 처리할 준비가 되어 있습니다.

개발 워크플로우 혁신

병렬 도구 호출은 Continuous AI 개념의 핵심 요소입니다. 개발 워크플로우에 AI를 통합하려면 속도, 맥락 인식, 적응성이 필요한데 병렬 처리가 이를 뒷받침합니다.

지연시간 감소: AI가 여러 소스(코드베이스, 테스트, 문서 등)에서 동시에 정보를 가져올 수 있으면 개발자의 작업 흐름을 방해하지 않고 유용한 제안을 제공할 수 있습니다.

작업 흐름 유지: Continuous AI는 개발자가 중단감을 느끼지 않을 때만 효과적입니다. 병렬화는 응답 시간을 실시간 편집 및 검토 속도에 맞춥니다.

복잡성 처리: 편집 작업은 종종 여러 위치, 시스템, 종속성을 포함합니다. 병렬 호출을 통해 AI가 순차적 병목 현상 대신 모든 관련 신호를 한 번에 수집할 수 있습니다.

향후 발전 방향

Patrick Erichsen은 아직 개선할 부분이 많다고 언급했습니다. 도구 대기열 관리, 작업 간 종속성 감지, 병렬 실행 중 더 나은 UI 피드백 등이 그것입니다.

하지만 병렬 도구 호출만으로도 에이전트가 데모 수준을 넘어 실제 팀들이 매일 사용하는 도구 수준에 크게 근접했습니다. 이는 AI 도구의 실용성을 높이는 더 큰 트렌드의 일부입니다.

활용 방법과 시작하기

병렬 도구 호출 기능을 직접 체험해보고 싶다면 몇 가지 방법이 있습니다. Continue에서는 현재 이 기능을 제공하고 있으며, 최신 AI 모델을 에이전트 모드에서 사용하고 여러 독립적인 작업을 요청하면 즉시 차이를 느낄 수 있습니다.

더 나아가 자신만의 AI 도구를 개발하고 있다면, Continue의 오픈소스 구현을 참고해볼 수 있습니다. GitHub에서 제공하는 구체적인 코드와 구현 방식은 병렬 도구 호출을 직접 구현하려는 개발자들에게 훌륭한 출발점이 됩니다.


참고자료:


AI Sparkup 구독하기

구독을 신청하면 최신 게시물을 이메일로 받아볼 수 있습니다.

Comments