AI/LLM

LLM 컴파일러: 병렬 함수 호출의 새로운 패러다임

growdai1y 2025. 1. 22. 06:38

최근 대형 언어 모델(Large Language Models, LLMs)의 놀라운 발전은 단순한 콘텐츠 생성 능력을 넘어 복잡한 문제 해결로까지 확장되었습니다. 그러나 다수의 함수 호출을 효과적으로 수행하는 방법은 여전히 과제로 남아 있습니다. 이 문제를 해결하기 위해 UC 버클리 연구팀은 LLMCompiler[각주:1]라는 프레임워크를 개발했습니다.


LLMCompiler란?

LLMCompiler는 병렬 함수 호출을 통해 다수의 작업을 효율적으로 수행하도록 설계된 시스템입니다. 기존 방식인 ReAct가 순차적으로 함수 호출을 처리하던 것과 달리, LLMCompiler는 다음 세 가지 주요 구성 요소를 통해 병렬 처리를 구현합니다.

  1. Function Calling Planner
  2. 실행 계획을 작성해 의존성을 파악하고 작업을 나눕니다.
  3. Task Fetching Unit
  4. 작업을 적시에 가져오고 필요한 데이터를 대체합니다.
  5. Executor
  6. 독립적인 작업을 병렬로 실행합니다.
LLMCompiler 동작 흐름
예제 프롬프트가 LLMCompiler에서 처리되는 단계를 시각화한 것입니다. 병렬 처리 덕분에 기존 방식보다 더 빠르게 결과를 얻을 수 있습니다.

LLMCompiler가 동작하는 방식: 예제 프롬프트

LLMCompiler의 동작 방식을 이해하기 위해 간단한 프롬프트를 살펴보겠습니다.
예제 프롬프트:
"Scott Derrickson과 Ed Wood의 국적이 같은가?"

  1. Function Calling Planner
    이 질문을 받은 Planner는 작업을 다음과 같이 분해합니다:
    • $1 = search(Scott Derrickson)
    • $2 = search(Ed Wood)
    • $3 = compare($1, $2)
    Planner는 이러한 작업들 간의 의존성을 분석해 **DAG(Directed Acyclic Graph)**를 생성합니다. $1과 $2는 독립적으로 실행될 수 있지만, $3은 이 두 작업의 결과를 필요로 합니다.
  2. Task Fetching Unit
    Fetching Unit은 Planner의 계획에 따라 작업을 가져옵니다. 이 과정에서 $1과 $2는 병렬로 실행되며, 완료된 결과가 $3의 입력으로 전달됩니다.
  3. Executor
    Executor는 병렬로 $1과 $2를 실행하고 결과를 $3에 전달하여 최종적으로 "두 사람 모두 미국인이다"라는 답변을 도출합니다.
ReAct와 LLMCompiler의 처리 과정을 시각적으로 비교합니다. ReAct는 순차적으로 작업을 수행해 높은 지연 시간이 발생하는 반면, LLMCompiler는 병렬 처리를 통해 최대 1.8배 의 속도 향상을 보였습니다.

주요 기능 및 성과

1. 병렬 처리로 지연 시간 단축

LLMCompiler는 작업 간 의존성을 분석하여 병렬로 실행 가능한 작업들을 효율적으로 나눕니다. 예를 들어, HotpotQA 데이터셋에서 최대 1.8배의 속도 개선이 확인되었습니다.

2. 비용 절감

병렬 처리는 LLM 호출 횟수를 줄이고, 결과적으로 비용을 절감시킵니다. Movie Recommendation 벤치마크에서는 6.7배의 비용 절감 효과를 보였습니다.

3. 정확도 개선

ReAct 대비 9% 정확도 향상이 관찰되었습니다. 이는 중간 결과의 간섭을 줄이고 최적화된 실행 계획 덕분입니다.


활용 사례

1. Game of 24

LLMCompiler는 동적 계획 수립이 필요한 복잡한 문제에서도 우수한 성능을 발휘합니다. 예를 들어, 숫자 24를 만드는 퍼즐에서 기존 방법 대비 2.89배 빠른 처리를 보였으며, 높은 성공률을 기록했습니다. 이 퍼즐은 수학적 연산을 요구하며, 각 단계에서 동적인 재계획(replanning)을 필요로 합니다. LLMCompiler는 이러한 문제에 대해 Planner와 Executor 간의 피드백 루프를 활용해 효율적으로 처리합니다.

2. 웹 기반 의사결정(WebShop)

LLMCompiler는 웹 탐색 작업에서도 뛰어난 효율성을 보여줍니다. 사용자가 원하는 제품을 선택하는 WebShop 벤치마크에서 병렬 검색 및 탐색을 통해 성공률을 20% 이상 높였으며, 최대 101배의 속도 향상을 기록했습니다. 기존 방법인 ReAct는 주어진 제품에 대한 정보 탐색을 순차적으로 처리했으나, LLMCompiler는 병렬 처리를 통해 더 많은 제품을 탐색하고 정확한 결정을 내릴 수 있었습니다. 이는 특히 복잡한 온라인 쇼핑 시나리오에서 중요한 성과입니다.

3. ParallelQA 벤치마크

ParallelQA는 다단계 작업의 병렬 처리를 요구하는 고난도 데이터셋으로, LLMCompiler의 성능을 검증하기 위해 사용되었습니다. 이 데이터셋에서는 검색과 수학 계산을 결합한 의존성 있는 작업들이 포함되어 있으며, LLMCompiler는 기존 ReAct 대비 2.27배 빠른 처리 속도9% 향상된 정확도를 보여주었습니다. 이를 통해 복잡한 작업의 병렬 처리 가능성을 입증했습니다.


결론

LLMCompiler는 병렬 처리와 효율적인 실행 계획을 통해 기존 LLM 기반 프레임워크의 한계를 뛰어넘습니다. 이는 단순히 속도와 비용을 절감하는 데 그치지 않고, 복잡한 문제 해결 능력을 확장시켜 LLM의 새로운 가능성을 열어줍니다.
연구팀은 오픈소스 코드를 제공하고 있으며, 관련 내용은 GitHub에서 확인할 수 있습니다.


  1. An LLM Compiler for Parallel Function Calling: https://arxiv.org/abs/2312.04511 [본문으로]
반응형